/****************************************************************************** * $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 */