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