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