blob: a415253bedd40cf44884b3922497816829aa8999 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef ANDROID_SENSORS_H
#define ANDROID_SENSORS_H
#include <stdint.h>
#include <errno.h>
#include <sys/cdefs.h>
#include <sys/types.h>
#include <linux/input.h>
#include <hardware/hardware.h>
#include <hardware/sensors.h>
__BEGIN_DECLS
/*****************************************************************************/
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
#define ID_A (0)
#define ID_M (1)
#define ID_O (2)
#define ID_L (3)
#define ID_P (4)
#define ID_GY (5)
#define ID_PR (6)
#define SSP_ACCEL (1)
#define SSP_GYRO (2)
#define SSP_MAG (4)
#define SSP_PRESS (8)
#define SSP_PROX (32)
#define SSP_LIGHT (64)
#define SSP_DEVICE_ENABLE "/sys/class/sensors/ssp_sensor/enable"
const int ssp_sensors[] = {
SSP_ACCEL,
SSP_GYRO,
SSP_MAG,
SSP_PRESS,
SSP_PROX,
SSP_LIGHT
};
/*****************************************************************************/
/*
* The SENSORS Module
*/
/* the CM3663 is a binary proximity sensor that triggers around 6 cm on
* this hardware */
#define PROXIMITY_THRESHOLD_CM 8.0f
/*****************************************************************************/
#define EVENT_TYPE_ACCEL_X REL_X //1
#define EVENT_TYPE_ACCEL_Y REL_Y //0
#define EVENT_TYPE_ACCEL_Z REL_Z //2
#define EVENT_TYPE_YAW ABS_RX //3
#define EVENT_TYPE_PITCH ABS_RY //4
#define EVENT_TYPE_ROLL ABS_RZ //5
#define EVENT_TYPE_ORIENT_STATUS ABS_WHEEL //8
#define EVENT_TYPE_MAGV_X ABS_RX // 3
#define EVENT_TYPE_MAGV_Y ABS_RY // 4
#define EVENT_TYPE_MAGV_Z ABS_RZ // 5
#define EVENT_TYPE_MAGV_ACC ABS_WHEEL // 8
#define EVENT_TYPE_TEMPERATURE ABS_THROTTLE
#define EVENT_TYPE_STEP_COUNT ABS_GAS
#define EVENT_TYPE_PROXIMITY ABS_DISTANCE
#define EVENT_TYPE_LIGHT REL_MISC
#define EVENT_TYPE_GYRO_X REL_RX
#define EVENT_TYPE_GYRO_Y REL_RY
#define EVENT_TYPE_GYRO_Z REL_RZ
#define EVENT_TYPE_PRESSURE REL_HWHEEL
#define LSG (1000.0f)
// conversion of acceleration data to SI units (m/s^2)
#define RANGE_A (2*GRAVITY_EARTH)
#define RESOLUTION_A (GRAVITY_EARTH / LSG)
#define CONVERT_A (GRAVITY_EARTH / LSG)
#define CONVERT_A_X (CONVERT_A)
#define CONVERT_A_Y (CONVERT_A)
#define CONVERT_A_Z (CONVERT_A)
// conversion of magnetic data to uT units
#define CONVERT_M (1.0f/16.0f)
#define CONVERT_M_X (CONVERT_M)
#define CONVERT_M_Y (CONVERT_M)
#define CONVERT_M_Z (CONVERT_M)
/* conversion of orientation data to degree units */
#define CONVERT_O (1.0f/1000.0f)
#define CONVERT_O_A (CONVERT_O)
#define CONVERT_O_P (CONVERT_O)
#define CONVERT_O_R (CONVERT_O)
// conversion of gyro data to SI units (radian/sec)
#define RANGE_GYRO (2000.0f*(float)M_PI/180.0f)
#define CONVERT_GYRO ((70.0f / 4000.0f) * ((float)M_PI / 180.0f))
#define CONVERT_GYRO_X (CONVERT_GYRO)
#define CONVERT_GYRO_Y (CONVERT_GYRO)
#define CONVERT_GYRO_Z (CONVERT_GYRO)
#define SENSOR_STATE_MASK (0x7FFF)
/*****************************************************************************/
__END_DECLS
#endif // ANDROID_SENSORS_H
|