1 /****************************************************************************** 2 * $Id: AK8975Driver.h 580 2012-03-29 09:56:21Z yamada.rj $ 3 ****************************************************************************** 4 * 5 * Copyright (C) 2012 Asahi Kasei Microdevices Corporation, Japan 6 * 7 * Licensed under the Apache License, Version 2.0 (the "License"); 8 * you may not use this file except in compliance with the License. 9 * You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, software 14 * distributed under the License is distributed on an "AS IS" BASIS, 15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 * See the License for the specific language governing permissions and 17 * limitations under the License. 18 */ 19 #ifndef AKMD_INC_AK8975DRIVER_H 20 #define AKMD_INC_AK8975DRIVER_H 21 22 #include "platform/include/linux/akm8975.h" /* Device driver */ 23 #include <stdint.h> /* int8_t, int16_t etc. */ 24 25 /*** Constant definition ******************************************************/ 26 #define AKD_TRUE 1 /*!< Represents true */ 27 #define AKD_FALSE 0 /*!< Represents false */ 28 #define AKD_SUCCESS 1 /*!< Represents success.*/ 29 #define AKD_FAIL 0 /*!< Represents fail. */ 30 #define AKD_ERROR (-1) /*!< Represents error. */ 31 32 /*! 0:Don't Output data, 1:Output data */ 33 #define AKD_DBG_DATA 0 34 /*! Typical interval in ns */ 35 #define AK8975_MEASUREMENT_TIME_NS ((AK8975_MEASUREMENT_TIME_US) * 1000) 36 /*! 720 LSG = 1G = 9.8 m/s2 */ 37 #define LSG 720 38 39 40 /*** Type declaration *********************************************************/ 41 typedef unsigned char BYTE; 42 43 /*! 44 Open device driver. 45 This function opens device driver of acceleration sensor. 46 @return If this function succeeds, the return value is #AKD_SUCCESS. Otherwise 47 the return value is #AKD_FAIL. 48 */ 49 typedef int16_t(*ACCFNC_INITDEVICE)(void); 50 51 /*! 52 Close device driver. 53 This function closes device drivers of acceleration sensor. 54 */ 55 typedef void(*ACCFNC_DEINITDEVICE)(void); 56 57 /*! 58 Acquire acceleration data from acceleration sensor and convert it to Android 59 coordinate system. 60 @return If this function succeeds, the return value is #AKD_SUCCESS. Otherwise 61 the return value is #AKD_FAIL. 62 @param[out] data A acceleration data array. The coordinate system of the 63 acquired data follows the definition of Android. Unit is SmartCompass. 64 */ 65 typedef int16_t(*ACCFNC_GETACCDATA)(short data[3]); 66 67 68 /*** Global variables *********************************************************/ 69 70 /*** Prototype of Function ***************************************************/ 71 72 int16_t AKD_InitDevice(void); 73 74 void AKD_DeinitDevice(void); 75 76 int16_t AKD_TxData( 77 const BYTE address, 78 const BYTE* data, 79 const uint16_t numberOfBytesToWrite); 80 81 int16_t AKD_RxData( 82 const BYTE address, 83 BYTE* data, 84 const uint16_t numberOfBytesToRead); 85 86 int16_t AKD_GetMagneticData(BYTE data[SENSOR_DATA_SIZE]); 87 88 void AKD_SetYPR(const int buf[YPR_DATA_SIZE]); 89 90 int AKD_GetOpenStatus(int* status); 91 92 int AKD_GetCloseStatus(int* status); 93 94 int16_t AKD_SetMode(const BYTE mode); 95 96 int16_t AKD_GetDelay(int64_t delay[AKM_NUM_SENSORS]); 97 98 int16_t AKD_GetLayout(int16_t* layout); 99 100 int16_t AKD_GetAccelerationData(int16_t data[3]); 101 102 #endif /* AKMD_INC_AK8975DRIVER_H */ 103 104