1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef ANDROID_SENSORS_H 18 #define ANDROID_SENSORS_H 19 20 #include <stdint.h> 21 #include <errno.h> 22 #include <sys/cdefs.h> 23 #include <sys/types.h> 24 25 #include <linux/input.h> 26 27 #include <hardware/hardware.h> 28 #include <hardware/sensors.h> 29 30 __BEGIN_DECLS 31 32 /*****************************************************************************/ 33 34 #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) 35 36 #define ID_A (0) 37 #define ID_M (1) 38 #define ID_O (2) 39 40 /*****************************************************************************/ 41 42 /* 43 * The SENSORS Module 44 */ 45 46 /*****************************************************************************/ 47 48 /* For ADXL346 */ 49 #define EVENT_TYPE_ACCEL_X ABS_X 50 #define EVENT_TYPE_ACCEL_Y ABS_Y 51 #define EVENT_TYPE_ACCEL_Z ABS_Z 52 #define EVENT_TYPE_ACCEL_STATUS ABS_THROTTLE 53 54 /* For AK8975 */ 55 #define EVENT_TYPE_MAGV_X ABS_RX 56 #define EVENT_TYPE_MAGV_Y ABS_RY 57 #define EVENT_TYPE_MAGV_Z ABS_RZ 58 #define EVENT_TYPE_MAGV_STATUS ABS_RUDDER 59 60 /* Fro AKM Algorithm */ 61 #define EVENT_TYPE_YAW ABS_HAT0X 62 #define EVENT_TYPE_PITCH ABS_HAT0Y 63 #define EVENT_TYPE_ROLL ABS_HAT1X 64 #define EVENT_TYPE_ORIENT_STATUS ABS_HAT1Y 65 66 67 /* conversion of acceleration data to SI units (m/s^2) */ 68 /* 720 LSB = 1G */ 69 #define LSG (256.0f) 70 #define AKSC_LSG (720.0f) 71 #define CONVERT_A (GRAVITY_EARTH / LSG) 72 73 /* conversion of magnetic data to uT units */ 74 #define CONVERT_M (0.06f) 75 76 /* conversion of orientation data to degree units */ 77 #define CONVERT_O (0.015625f) 78 79 #define SENSOR_STATE_MASK (0x7FFF) 80 81 /*****************************************************************************/ 82 83 __END_DECLS 84 85 #endif // ANDROID_SENSORS_H 86