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