1c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/*
2a73d574dda77810ae10046c68e7a9aa38ad77603Nick Vaccaro* Copyright (C) 2014 Invensense, Inc.
3c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro*
4c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro* Licensed under the Apache License, Version 2.0 (the "License");
5c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro* you may not use this file except in compliance with the License.
6c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro* You may obtain a copy of the License at
7c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro*
8c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro*      http://www.apache.org/licenses/LICENSE-2.0
9c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro*
10c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro* Unless required by applicable law or agreed to in writing, software
11c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro* distributed under the License is distributed on an "AS IS" BASIS,
12c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro* See the License for the specific language governing permissions and
14c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro* limitations under the License.
15c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro*/
16c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
17c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#ifndef ANDROID_SENSORS_H
18c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define ANDROID_SENSORS_H
19c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
20c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#include <stdint.h>
21c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#include <errno.h>
22c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#include <sys/cdefs.h>
23c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#include <sys/types.h>
24c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
25c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#include <linux/input.h>
26c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
27c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#include <hardware/hardware.h>
28c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#include <hardware/sensors.h>
29c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
30c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro__BEGIN_DECLS
31c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
32c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/*****************************************************************************/
33c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
34c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#ifndef ARRAY_SIZE
35c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
36c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#endif
37c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
38864e0965786d598cf6313da4b6ade65f95d4f50eNick Vaccaro#undef ENABLE_PRESSURE
39c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
40c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaroenum {
41c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    ID_GY = 0,
42c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    ID_RG,
43c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    ID_A,
44c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    ID_M,
45c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    ID_RM,
46f51dc826bb5e75a074a14c1227e750160b3fc694Nick Vaccaro#ifdef ENABLE_PRESSURE
47c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    ID_PS,
48f51dc826bb5e75a074a14c1227e750160b3fc694Nick Vaccaro#endif
49c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    ID_O,
50c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    ID_RV,
51c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    ID_GRV,
52c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    ID_LA,
53c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    ID_GR,
54c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    ID_SM,
55c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    ID_P,
56c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    ID_SC,
57c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    ID_GMRV,
58c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    ID_SO
59c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro};
60c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
61c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaroenum {
62c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    Gyro = 0,
63c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    RawGyro,
64c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    Accelerometer,
65c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    MagneticField,
66c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    RawMagneticField,
67b15903ff47c3d5234f14919941b36bf26a96a82eNick Vaccaro#ifdef ENABLE_PRESSURE
68c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    Pressure,
69b15903ff47c3d5234f14919941b36bf26a96a82eNick Vaccaro#endif
70c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    Orientation,
71c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    RotationVector,
72c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    GameRotationVector,
73c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    LinearAccel,
74c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    Gravity,
75c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    SignificantMotion,
76c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    StepDetector,
77c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    StepCounter,
78c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    GeomagneticRotationVector,
79c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    NumSensors
80c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro};
81c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
82b15903ff47c3d5234f14919941b36bf26a96a82eNick Vaccaro#ifdef ENABLE_PRESSURE
83b15903ff47c3d5234f14919941b36bf26a96a82eNick Vaccaro#define LAST_HW_SENSOR	Pressure
84b15903ff47c3d5234f14919941b36bf26a96a82eNick Vaccaro#else
85b15903ff47c3d5234f14919941b36bf26a96a82eNick Vaccaro#define LAST_HW_SENSOR	RawMagneticField
86b15903ff47c3d5234f14919941b36bf26a96a82eNick Vaccaro#endif
87b15903ff47c3d5234f14919941b36bf26a96a82eNick Vaccaro
88c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/* Physical parameters of the sensors supported by Invensense MPL */
89c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define SENSORS_GYROSCOPE_HANDLE                   (ID_GY)
90c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define SENSORS_RAW_GYROSCOPE_HANDLE               (ID_RG)
91c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define SENSORS_ACCELERATION_HANDLE                (ID_A)
92c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define SENSORS_MAGNETIC_FIELD_HANDLE              (ID_M)
93c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define SENSORS_RAW_MAGNETIC_FIELD_HANDLE          (ID_RM)
94c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define SENSORS_PRESSURE_HANDLE                    (ID_PS)
95c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define SENSORS_ORIENTATION_HANDLE                 (ID_O)
96c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define SENSORS_ROTATION_VECTOR_HANDLE             (ID_RV)
97c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define SENSORS_GAME_ROTATION_VECTOR_HANDLE        (ID_GRV)
98c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define SENSORS_LINEAR_ACCEL_HANDLE                (ID_LA)
99c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define SENSORS_GRAVITY_HANDLE                     (ID_GR)
100c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define SENSORS_SIGNIFICANT_MOTION_HANDLE          (ID_SM)
101c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define SENSORS_PEDOMETER_HANDLE                   (ID_P)
102c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define SENSORS_STEP_COUNTER_HANDLE                (ID_SC)
103c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define SENSORS_GEOMAGNETIC_ROTATION_VECTOR_HANDLE (ID_GMRV)
104c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define SENSORS_SCREEN_ORIENTATION_HANDLE          (ID_SO)
105c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
106c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/*****************************************************************************/
107c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
108c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/*
109a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro   Android Lollipop
110c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro   Populate sensor_t structure according to hardware sensors.h
111a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro   {name, vendor, version, handle,
112a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    type, maxRange, resolution, power, minDelay, fifoReservedEventCount, fifoMaxEventCount,
113a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    stringType, requiredPermission, maxDelay, flags, reserved[]}
114c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro*/
1159b7ebb5143dd692c20fc9348ae999450133dad57Nick Vaccaro#if defined ANDROID_LOLLIPOP
116b3a0155a2ab7400d4b94f35bddac34c731c3c4bbNick Vaccaro
1179b7ebb5143dd692c20fc9348ae999450133dad57Nick Vaccarostatic struct sensor_t sBaseSensorList[] =
1189b7ebb5143dd692c20fc9348ae999450133dad57Nick Vaccaro{
119a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    {"MPL Gyroscope", "Invensense", 1, SENSORS_GYROSCOPE_HANDLE,
120a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_TYPE_GYROSCOPE, 2000.0f, 1.0f, 0.5f, 10000, 0, 124,
121a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_STRING_TYPE_GYROSCOPE, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
122a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    {"MPL Raw Gyroscope", "Invensense", 1, SENSORS_RAW_GYROSCOPE_HANDLE,
123a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_TYPE_GYROSCOPE_UNCALIBRATED, 2000.0f, 1.0f, 0.5f, 10000, 0, 124,
124a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_STRING_TYPE_GYROSCOPE_UNCALIBRATED, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
125a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    {"MPL Accelerometer", "Invensense", 1, SENSORS_ACCELERATION_HANDLE,
126a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_TYPE_ACCELEROMETER, 10240.0f, 1.0f, 0.5f, 10000, 0, 124,
127a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_STRING_TYPE_ACCELEROMETER, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
128a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    {"MPL Magnetic Field", "Invensense", 1, SENSORS_MAGNETIC_FIELD_HANDLE,
129a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_TYPE_MAGNETIC_FIELD, 10240.0f, 1.0f, 0.5f, 10000, 0, 124,
130a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_STRING_TYPE_MAGNETIC_FIELD, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
131a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    {"MPL Raw Magnetic Field", "Invensense", 1, SENSORS_RAW_MAGNETIC_FIELD_HANDLE,
132a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED, 10240.0f, 1.0f, 0.5f, 10000, 0, 124,
133a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
1349b7ebb5143dd692c20fc9348ae999450133dad57Nick Vaccaro#ifdef ENABLE_PRESSURE
135a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    {"MPL Pressure", "Invensense", 1, SENSORS_PRESSURE_HANDLE,
136a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_TYPE_PRESSURE, 10240.0f, 1.0f, 0.5f, 10000, 0, 165,
137a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_STRING_TYPE_PRESSURE, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
1389b7ebb5143dd692c20fc9348ae999450133dad57Nick Vaccaro#endif
139a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    {"MPL Orientation", "Invensense", 1, SENSORS_ORIENTATION_HANDLE,
140a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_TYPE_ORIENTATION, 360.0f, 1.0f, 9.7f, 10000, 0, 0,
141b3a0155a2ab7400d4b94f35bddac34c731c3c4bbNick Vaccaro     SENSOR_STRING_TYPE_ORIENTATION, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
142a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    {"MPL Rotation Vector", "Invensense", 1, SENSORS_ROTATION_VECTOR_HANDLE,
143a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_TYPE_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, 0, 0,
144b3a0155a2ab7400d4b94f35bddac34c731c3c4bbNick Vaccaro     SENSOR_STRING_TYPE_ROTATION_VECTOR, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
145a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    {"MPL Game Rotation Vector", "Invensense", 1, SENSORS_GAME_ROTATION_VECTOR_HANDLE,
146a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_TYPE_GAME_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, 0, 62,
147a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_STRING_TYPE_GAME_ROTATION_VECTOR, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
148a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    {"MPL Linear Acceleration", "Invensense", 1, SENSORS_LINEAR_ACCEL_HANDLE,
149a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_TYPE_LINEAR_ACCELERATION, 10240.0f, 1.0f, 0.5f, 10000, 0, 0,
150b3a0155a2ab7400d4b94f35bddac34c731c3c4bbNick Vaccaro     SENSOR_STRING_TYPE_LINEAR_ACCELERATION, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
151a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    {"MPL Gravity", "Invensense", 1, SENSORS_GRAVITY_HANDLE,
152a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_TYPE_GRAVITY, 10240.0f, 1.0f, 0.5f, 10000, 0, 0,
153b3a0155a2ab7400d4b94f35bddac34c731c3c4bbNick Vaccaro     SENSOR_STRING_TYPE_GRAVITY, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
154a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    {"MPL Significant Motion", "Invensense", 1, SENSORS_SIGNIFICANT_MOTION_HANDLE,
155a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_TYPE_SIGNIFICANT_MOTION, 100.0f, 1.0f, 1.1f, 0, 0, 0,
156a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_STRING_TYPE_SIGNIFICANT_MOTION, "", 0,
157a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_FLAG_ONE_SHOT_MODE | SENSOR_FLAG_WAKE_UP, {}},
158a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    {"MPL Step Detector", "Invensense", 1, SENSORS_PEDOMETER_HANDLE,
159a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_TYPE_STEP_DETECTOR, 100.0f, 1.0f, 1.1f, 0, 0, 124,
160a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_STRING_TYPE_STEP_DETECTOR, "", 0, SENSOR_FLAG_SPECIAL_REPORTING_MODE, {}},
161a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    {"MPL Step Counter", "Invensense", 1, SENSORS_STEP_COUNTER_HANDLE,
162a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_TYPE_STEP_COUNTER, 100.0f, 1.0f, 1.1f, 0, 0, 0,
163a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_STRING_TYPE_STEP_COUNTER, "", 0, SENSOR_FLAG_ON_CHANGE_MODE, {}},
1649b7ebb5143dd692c20fc9348ae999450133dad57Nick Vaccaro    {"MPL Geomagnetic Rotation Vector", "Invensense", 1,
1659b7ebb5143dd692c20fc9348ae999450133dad57Nick Vaccaro     SENSORS_GEOMAGNETIC_ROTATION_VECTOR_HANDLE,
166a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 5000, 0, 0,
167b3a0155a2ab7400d4b94f35bddac34c731c3c4bbNick Vaccaro     SENSOR_STRING_TYPE_GEOMAGNETIC_ROTATION_VECTOR, "", 200000, SENSOR_FLAG_CONTINUOUS_MODE, {}},
1689b7ebb5143dd692c20fc9348ae999450133dad57Nick Vaccaro#ifdef ENABLE_DMP_SCREEN_AUTO_ROTATION
169a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    {"MPL Screen Orientation", "Invensense ", 1, SENSORS_SCREEN_ORIENTATION_HANDLE,
170a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_TYPE_SCREEN_ORIENTATION, 100.0f, 1.0f, 1.1f, 0, 0, 0,
171a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro     SENSOR_STRING_TYPE_SCREEN_ORIENTATION, "", 0, SENSOR_FLAG_ON_CHANGE_MODE, {}},
1729b7ebb5143dd692c20fc9348ae999450133dad57Nick Vaccaro#endif
1739b7ebb5143dd692c20fc9348ae999450133dad57Nick Vaccaro};
174a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro/*
175a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro   Android KitKat
176a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro   Populate sensor_t structure according to hardware sensors.h
177a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro   {name, vendor, version,
178a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    handle,
179a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro    type, maxRange, resolution, power, minDelay, fifoReservedEventCount, fifoMaxEventCount, reserved[]}
180a38914db2fd5b3192bfa8fbd46269aa860d7937bNick Vaccaro*/
1819b7ebb5143dd692c20fc9348ae999450133dad57Nick Vaccaro#elif defined ANDROID_KITKAT
182c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccarostatic struct sensor_t sBaseSensorList[] =
183c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro{
184670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro    {"MPL Gyroscope", "Invensense", 1, SENSORS_GYROSCOPE_HANDLE,
185670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_TYPE_GYROSCOPE, 2000.0f, 1.0f, 0.5f, 10000, 0, 124,
186670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_STRING_TYPE_GYROSCOPE, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
187670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro    {"MPL Raw Gyroscope", "Invensense", 1, SENSORS_RAW_GYROSCOPE_HANDLE,
188670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_TYPE_GYROSCOPE_UNCALIBRATED, 2000.0f, 1.0f, 0.5f, 10000, 0, 124,
189670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_STRING_TYPE_GYROSCOPE_UNCALIBRATED, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
190670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro    {"MPL Accelerometer", "Invensense", 1, SENSORS_ACCELERATION_HANDLE,
191670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_TYPE_ACCELEROMETER, 10240.0f, 1.0f, 0.5f, 10000, 0, 124,
192670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_STRING_TYPE_ACCELEROMETER, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
193670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro    {"MPL Magnetic Field", "Invensense", 1, SENSORS_MAGNETIC_FIELD_HANDLE,
194670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_TYPE_MAGNETIC_FIELD, 10240.0f, 1.0f, 0.5f, 10000, 0, 124,
195670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_STRING_TYPE_MAGNETIC_FIELD, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
196670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro    {"MPL Raw Magnetic Field", "Invensense", 1, SENSORS_RAW_MAGNETIC_FIELD_HANDLE,
197670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED, 10240.0f, 1.0f, 0.5f, 10000, 0, 124,
198670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_STRING_TYPE_MAGNETIC_FIELD_UNCALIBRATED, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
199c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#ifdef ENABLE_PRESSURE
200670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro    {"MPL Pressure", "Invensense", 1, SENSORS_PRESSURE_HANDLE,
201670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_TYPE_PRESSURE, 10240.0f, 1.0f, 0.5f, 10000, 0, 165,
202670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_STRING_TYPE_PRESSURE, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
203c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#endif
204670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro    {"MPL Orientation", "Invensense", 1, SENSORS_ORIENTATION_HANDLE,
205670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_TYPE_ORIENTATION, 360.0f, 1.0f, 9.7f, 10000, 0, 0,
206670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_STRING_TYPE_ORIENTATION, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
207670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro    {"MPL Rotation Vector", "Invensense", 1, SENSORS_ROTATION_VECTOR_HANDLE,
208670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_TYPE_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, 0, 0,
209670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_STRING_TYPE_ROTATION_VECTOR, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
210670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro    {"MPL Game Rotation Vector", "Invensense", 1, SENSORS_GAME_ROTATION_VECTOR_HANDLE,
211670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_TYPE_GAME_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, 0, 62,
212670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_STRING_TYPE_GAME_ROTATION_VECTOR, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
213670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro    {"MPL Linear Acceleration", "Invensense", 1, SENSORS_LINEAR_ACCEL_HANDLE,
214670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_TYPE_LINEAR_ACCELERATION, 10240.0f, 1.0f, 0.5f, 10000, 0, 0,
215670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_STRING_TYPE_LINEAR_ACCELERATION, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
216670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro    {"MPL Gravity", "Invensense", 1, SENSORS_GRAVITY_HANDLE,
217670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_TYPE_GRAVITY, 10240.0f, 1.0f, 0.5f, 10000, 0, 0,
218670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_STRING_TYPE_GRAVITY, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
219670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro    {"MPL Significant Motion", "Invensense", 1, SENSORS_SIGNIFICANT_MOTION_HANDLE,
220670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_TYPE_SIGNIFICANT_MOTION, 100.0f, 1.0f, 1.1f, 0, 0, 0,
221670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_STRING_TYPE_SIGNIFICANT_MOTION, 0, 0,
222670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_FLAG_ONE_SHOT_MODE | SENSOR_FLAG_WAKE_UP, {}},
223670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro    {"MPL Step Detector", "Invensense", 1, SENSORS_PEDOMETER_HANDLE,
224670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_TYPE_STEP_DETECTOR, 100.0f, 1.0f, 1.1f, 0, 0, 124,
225670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_STRING_TYPE_STEP_DETECTOR, 0, 0, SENSOR_FLAG_SPECIAL_REPORTING_MODE, {}},
226670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro    {"MPL Step Counter", "Invensense", 1, SENSORS_STEP_COUNTER_HANDLE,
227670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_TYPE_STEP_COUNTER, 100.0f, 1.0f, 1.1f, 0, 0, 0,
228670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_STRING_TYPE_STEP_COUNTER, 0, 0, SENSOR_FLAG_ON_CHANGE_MODE, {}},
229c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Geomagnetic Rotation Vector", "Invensense", 1,
230c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_GEOMAGNETIC_ROTATION_VECTOR_HANDLE,
231670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 5000, 0, 0,
232670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_STRING_TYPE_GEOMAGNETIC_ROTATION_VECTOR, 0, 0, SENSOR_FLAG_CONTINUOUS_MODE, {}},
233c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#ifdef ENABLE_DMP_SCREEN_AUTO_ROTATION
234670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro    {"MPL Screen Orientation", "Invensense ", 1, SENSORS_SCREEN_ORIENTATION_HANDLE,
235670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_TYPE_SCREEN_ORIENTATION, 100.0f, 1.0f, 1.1f, 0, 0, 0,
236670dfdf96e62446e763f60c7c315fd7e25461242Nick Vaccaro     SENSOR_STRING_TYPE_SCREEN_ORIENTATION, 0, 0, SENSOR_FLAG_ON_CHANGE_MODE, {}},
237c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#endif
238c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro};
239c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#else  //ANDROID_KITKAT END
240c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccarostatic struct sensor_t sBaseSensorList[] =
241c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro{
242c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Gyroscope", "Invensense", 1,
243c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_GYROSCOPE_HANDLE,
244c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSOR_TYPE_GYROSCOPE, 2000.0f, 1.0f, 0.5f, 10000, {}},
245c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Raw Gyroscope", "Invensense", 1,
246c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_RAW_GYROSCOPE_HANDLE,
247c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSOR_TYPE_GYROSCOPE_UNCALIBRATED, 2000.0f, 1.0f, 0.5f, 10000, {}},
248c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Accelerometer", "Invensense", 1,
249c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_ACCELERATION_HANDLE,
250c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSOR_TYPE_ACCELEROMETER, 10240.0f, 1.0f, 0.5f, 10000, {}},
251c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Magnetic Field", "Invensense", 1,
252c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_MAGNETIC_FIELD_HANDLE,
253c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSOR_TYPE_MAGNETIC_FIELD, 10240.0f, 1.0f, 0.5f, 10000, {}},
254c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Raw Magnetic Field", "Invensense", 1,
255c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_RAW_MAGNETIC_FIELD_HANDLE,
256c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED, 10240.0f, 1.0f, 0.5f, 10000, {}},
257c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#ifdef ENABLE_PRESSURE
258c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Pressure", "Invensense", 1,
259c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_PRESSURE_HANDLE,
260c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSOR_TYPE_PRESSURE, 10240.0f, 1.0f, 0.5f, 10000, {}},
261c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#endif
262c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Orientation", "Invensense", 1,
263c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_ORIENTATION_HANDLE,
264c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSOR_TYPE_ORIENTATION, 360.0f, 1.0f, 9.7f, 10000, {}},
265c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Rotation Vector", "Invensense", 1,
266c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_ROTATION_VECTOR_HANDLE,
267c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSOR_TYPE_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, {}},
268c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Game Rotation Vector", "Invensense", 1,
269c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_GAME_ROTATION_VECTOR_HANDLE,
270c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSOR_TYPE_GAME_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, {}},
271c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Linear Acceleration", "Invensense", 1,
272c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_LINEAR_ACCEL_HANDLE,
273c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSOR_TYPE_LINEAR_ACCELERATION, 10240.0f, 1.0f, 0.5f, 10000, {}},
274c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Gravity", "Invensense", 1,
275c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_GRAVITY_HANDLE,
276c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSOR_TYPE_GRAVITY, 10240.0f, 1.0f, 0.5f, 10000, {}},
277c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Significant Motion", "Invensense", 1,
278c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_SIGNIFICANT_MOTION_HANDLE,
279c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSOR_TYPE_SIGNIFICANT_MOTION, 100.0f, 1.0f, 1.1f, 0, {}},
280c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Step Detector", "Invensense", 1,
281c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_PEDOMETER_HANDLE,
282c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSOR_TYPE_STEP_DETECTOR, 100.0f, 1.0f, 1.1f, 0, {}},
283c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Step Counter", "Invensense", 1,
284c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_STEP_COUNTER_HANDLE,
285c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSOR_TYPE_STEP_COUNTER, 100.0f, 1.0f, 1.1f, 0, {}},
286c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Geomagnetic Rotation Vector", "Invensense", 1,
287c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_GEOMAGNETIC_ROTATION_VECTOR_HANDLE,
288c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR, 10240.0f, 1.0f, 0.5f, 10000, {}},
289c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#ifdef ENABLE_DMP_SCREEN_AUTO_ROTATION
290c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro    {"MPL Screen Orientation", "Invensense ", 1,
291c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSORS_SCREEN_ORIENTATION_HANDLE,
292c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro     SENSOR_TYPE_SCREEN_ORIENTATION, 100.0f, 1.0f, 1.1f, 0, {}},
293c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#endif
294c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro};
295c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#endif //ANDROID_JELLYBEAN END
296c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
297c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/*****************************************************************************/
298c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
299c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/*
300c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro * The SENSORS Module
301c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro */
302c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
303c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/* ITG3500 */
304c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_GYRO_X          REL_X
305c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_GYRO_Y          REL_Y
306c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_GYRO_Z          REL_Z
307c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/* MPU6050 MPU9150 */
308c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_IACCEL_X        REL_RX
309c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_IACCEL_Y        REL_RY
310c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_IACCEL_Z        REL_RZ
311c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/* MPU6050 MPU9150 */
312c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_ICOMPASS_X      REL_X
313c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_ICOMPASS_Y      REL_Y
314c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_ICOMPASS_Z      REL_Z
315c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/* MPUxxxx */
316c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_TIMESTAMP_HI    REL_MISC
317c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_TIMESTAMP_LO    REL_WHEEL
318c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
319c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/* Accel BMA250 */
320c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_ACCEL_X          ABS_X
321c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_ACCEL_Y          ABS_Y
322c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_ACCEL_Z          ABS_Z
323c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define LSG                         (1000.0f)
324c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
325c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro// conversion of acceleration data to SI units (m/s^2)
326c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define RANGE_A                     (4*GRAVITY_EARTH)
327c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define RESOLUTION_A                (GRAVITY_EARTH / LSG)
328c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define CONVERT_A                   (GRAVITY_EARTH / LSG)
329c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define CONVERT_A_X                 (CONVERT_A)
330c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define CONVERT_A_Y                 (CONVERT_A)
331c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define CONVERT_A_Z                 (CONVERT_A)
332c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
333c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/* AKM  compasses */
334c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_MAGV_X           ABS_RX
335c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_MAGV_Y           ABS_RY
336c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_MAGV_Z           ABS_RZ
337c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define EVENT_TYPE_MAGV_STATUS      ABS_RUDDER
338c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
339c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/* conversion of magnetic data to uT units */
340c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define CONVERT_M                   (0.06f)
341c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
342c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/* conversion of sensor rates */
343c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define hertz_request = 200;
344c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define DEFAULT_MPL_GYRO_RATE           (20000L)     //us
345c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define DEFAULT_MPL_COMPASS_RATE        (20000L)     //us
346c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
347c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define DEFAULT_HW_GYRO_RATE            (100)        //Hz
348c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define DEFAULT_HW_ACCEL_RATE           (20)         //ms
349c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define DEFAULT_HW_COMPASS_RATE         (20000000L)  //ns
350c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define DEFAULT_HW_AKMD_COMPASS_RATE    (200000000L) //ns
351c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
352c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/* convert ns to hardware units */
353c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define HW_GYRO_RATE_NS                 (1000000000LL / rate_request) // to Hz
354c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define HW_ACCEL_RATE_NS                (rate_request / (1000000L))   // to ms
355c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define HW_COMPASS_RATE_NS              (rate_request)                // to ns
356c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
357c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro/* convert Hz to hardware units */
358c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define HW_GYRO_RATE_HZ                 (hertz_request)
359c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define HW_ACCEL_RATE_HZ                (1000 / hertz_request)
360c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define HW_COMPASS_RATE_HZ              (1000000000LL / hertz_request)
361c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
362c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define RATE_200HZ                      5000000LL
363c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define RATE_15HZ                       66667000LL
364c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#define RATE_5HZ                        200000000LL
365c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro__END_DECLS
366c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro
367c3d4ca9f2df5ddf9894b36d1554fdfc95d625d3fNick Vaccaro#endif  // ANDROID_SENSORS_H
368