149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/*
249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow* Copyright (C) 2012 Invensense, Inc.
349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow*
449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow* Licensed under the Apache License, Version 2.0 (the "License");
549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow* you may not use this file except in compliance with the License.
649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow* You may obtain a copy of the License at
749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow*
849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow*      http://www.apache.org/licenses/LICENSE-2.0
949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow*
1049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow* Unless required by applicable law or agreed to in writing, software
1149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow* distributed under the License is distributed on an "AS IS" BASIS,
1249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow* See the License for the specific language governing permissions and
1449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow* limitations under the License.
1549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow*/
1649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
1749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#ifndef ANDROID_SENSORS_H
1849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define ANDROID_SENSORS_H
1949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
2049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <stdint.h>
2149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <errno.h>
2249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <sys/cdefs.h>
2349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <sys/types.h>
2449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
2549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <linux/input.h>
2649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
2749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <hardware/hardware.h>
2849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#include <hardware/sensors.h>
2949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
3049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow__BEGIN_DECLS
3149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
3249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/*****************************************************************************/
3349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
3449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#ifndef ARRAY_SIZE
3549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
3649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#endif
3749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
3849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chowenum {
3949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    ID_GY = 0,
4049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    ID_RG,
4149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    ID_A,
4249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    ID_M,
4349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    ID_RM,
4449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    ID_PS,
4549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    ID_O,
4649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    ID_RV,
4749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    ID_GRV,
4849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    ID_LA,
4949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    ID_GR,
5049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    ID_SM,
5149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    ID_P,
5249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    ID_SC,
5349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    ID_GMRV,
5449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow    ID_SO
5549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow};
5649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
5749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/*****************************************************************************/
5849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
5949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/*
6049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow * The SENSORS Module
6149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow */
6249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
6349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/* ITG3500 */
6449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_GYRO_X          REL_X
6549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_GYRO_Y          REL_Y
6649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_GYRO_Z          REL_Z
6749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/* MPU6050 MPU9150 */
6849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_IACCEL_X        REL_RX
6949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_IACCEL_Y        REL_RY
7049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_IACCEL_Z        REL_RZ
7149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/* MPU6050 MPU9150 */
7249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_ICOMPASS_X      REL_X
7349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_ICOMPASS_Y      REL_Y
7449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_ICOMPASS_Z      REL_Z
7549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/* MPUxxxx */
7649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_TIMESTAMP_HI    REL_MISC
7749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_TIMESTAMP_LO    REL_WHEEL
7849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
7949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/* Accel BMA250 */
8049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_ACCEL_X          ABS_X
8149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_ACCEL_Y          ABS_Y
8249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_ACCEL_Z          ABS_Z
8349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define LSG                         (1000.0f)
8449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
8549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow// conversion of acceleration data to SI units (m/s^2)
8649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define RANGE_A                     (4*GRAVITY_EARTH)
8749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define RESOLUTION_A                (GRAVITY_EARTH / LSG)
8849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define CONVERT_A                   (GRAVITY_EARTH / LSG)
8949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define CONVERT_A_X                 (CONVERT_A)
9049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define CONVERT_A_Y                 (CONVERT_A)
9149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define CONVERT_A_Z                 (CONVERT_A)
9249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
9349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow/* AKM  compasses */
9449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_MAGV_X           ABS_RX
9549ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_MAGV_Y           ABS_RY
9649ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_MAGV_Z           ABS_RZ
9749ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define EVENT_TYPE_MAGV_STATUS      ABS_RUDDER
9849ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
9949ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow// conversion of magnetic data to uT units
10049ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#define CONVERT_M                   (0.06f)
10149ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
10249ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow__END_DECLS
10349ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow
10449ea3e26ca3c6a779e527a0322e49a663333350aRosa Chow#endif  // ANDROID_SENSORS_H
105