| /****************************************************************************** |
| * $Id: AK8975Driver.h 580 2012-03-29 09:56:21Z yamada.rj $ |
| ****************************************************************************** |
| * |
| * Copyright (C) 2012 Asahi Kasei Microdevices Corporation, Japan |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| #ifndef AKMD_INC_AK8975DRIVER_H |
| #define AKMD_INC_AK8975DRIVER_H |
| |
| #include "platform/include/linux/akm8975.h" /* Device driver */ |
| #include <stdint.h> /* int8_t, int16_t etc. */ |
| |
| /*** Constant definition ******************************************************/ |
| #define AKD_TRUE 1 /*!< Represents true */ |
| #define AKD_FALSE 0 /*!< Represents false */ |
| #define AKD_SUCCESS 1 /*!< Represents success.*/ |
| #define AKD_FAIL 0 /*!< Represents fail. */ |
| #define AKD_ERROR -1 /*!< Represents error. */ |
| |
| /*! 0:Don't Output data, 1:Output data */ |
| #define AKD_DBG_DATA 0 |
| /*! Typical interval in ns */ |
| #define AK8975_MEASUREMENT_TIME_NS ((AK8975_MEASUREMENT_TIME_US) * 1000) |
| /*! 720 LSG = 1G = 9.8 m/s2 */ |
| #define LSG 720 |
| |
| |
| /*** Type declaration *********************************************************/ |
| typedef unsigned char BYTE; |
| |
| /*! |
| Open device driver. |
| This function opens device driver of acceleration sensor. |
| @return If this function succeeds, the return value is #AKD_SUCCESS. Otherwise |
| the return value is #AKD_FAIL. |
| */ |
| typedef int16_t(*ACCFNC_INITDEVICE)(void); |
| |
| /*! |
| Close device driver. |
| This function closes device drivers of acceleration sensor. |
| */ |
| typedef void(*ACCFNC_DEINITDEVICE)(void); |
| |
| /*! |
| Acquire acceleration data from acceleration sensor and convert it to Android |
| coordinate system. |
| @return If this function succeeds, the return value is #AKD_SUCCESS. Otherwise |
| the return value is #AKD_FAIL. |
| @param[out] data A acceleration data array. The coordinate system of the |
| acquired data follows the definition of Android. Unit is SmartCompass. |
| */ |
| typedef int16_t(*ACCFNC_GETACCDATA)(short data[3]); |
| |
| |
| /*** Global variables *********************************************************/ |
| |
| /*** Prototype of Function ***************************************************/ |
| |
| int16_t AKD_InitDevice(void); |
| |
| void AKD_DeinitDevice(void); |
| |
| int16_t AKD_TxData( |
| const BYTE address, |
| const BYTE* data, |
| const uint16_t numberOfBytesToWrite); |
| |
| int16_t AKD_RxData( |
| const BYTE address, |
| BYTE* data, |
| const uint16_t numberOfBytesToRead); |
| |
| int16_t AKD_GetMagneticData(BYTE data[SENSOR_DATA_SIZE]); |
| |
| void AKD_SetYPR(const int buf[YPR_DATA_SIZE]); |
| |
| int AKD_GetOpenStatus(int* status); |
| |
| int AKD_GetCloseStatus(int* status); |
| |
| int16_t AKD_SetMode(const BYTE mode); |
| |
| int16_t AKD_GetDelay(int64_t delay[AKM_NUM_SENSORS]); |
| |
| int16_t AKD_GetLayout(int16_t* layout); |
| |
| int16_t AKD_GetAccelerationData(int16_t data[3]); |
| |
| #endif /* AKMD_INC_AK8975DRIVER_H */ |
| |