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