1/* Copyright (C) 2009 The Android Open Source Project
2**
3** This software is licensed under the terms of the GNU General Public
4** License version 2, as published by the Free Software Foundation, and
5** may be copied, distributed, and modified under those terms.
6**
7** This program is distributed in the hope that it will be useful,
8** but WITHOUT ANY WARRANTY; without even the implied warranty of
9** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10** GNU General Public License for more details.
11*/
12#ifndef _android_sensors_h
13#define _android_sensors_h
14
15#include "qemu-common.h"
16
17/* initialize sensor emulation */
18extern void  android_hw_sensors_init( void );
19
20/* NOTE: Sensor status Error definition, It will be used in the Sensors Command
21 *       part in android/console.c. Details:
22 *       SENSOR_STATUS_NO_SERVICE: "sensors" qemud service is not available/initiated.
23 *       SENSOR_STATUS_DISABLED: sensor is disabled.
24 *       SENSOR_STATUS_UNKNOWN: wrong sensor name.
25 *       SENSOR_STATUS_OK: Everything is OK to the current sensor.
26 * */
27typedef enum{
28    SENSOR_STATUS_NO_SERVICE = -3,
29    SENSOR_STATUS_DISABLED   = -2,
30    SENSOR_STATUS_UNKNOWN    = -1,
31    SENSOR_STATUS_OK         = 0,
32} SensorStatus;
33
34/* NOTE: this list must be the same that the one defined in
35 *       the sensors_qemu.c source of the libsensors.goldfish.so
36 *       library.
37 *
38 *       DO NOT CHANGE THE ORDER IN THIS LIST, UNLESS YOU INTEND
39 *       TO BREAK SNAPSHOTS!
40 */
41#define  SENSORS_LIST  \
42    SENSOR_(ACCELERATION,"acceleration") \
43    SENSOR_(MAGNETIC_FIELD,"magnetic-field") \
44    SENSOR_(ORIENTATION,"orientation") \
45    SENSOR_(TEMPERATURE,"temperature") \
46    SENSOR_(PROXIMITY,"proximity") \
47
48typedef enum {
49#define  SENSOR_(x,y)  ANDROID_SENSOR_##x,
50    SENSORS_LIST
51#undef   SENSOR_
52    MAX_SENSORS  /* do not remove */
53} AndroidSensor;
54
55extern void  android_hw_sensor_enable( AndroidSensor  sensor );
56
57/* COARSE ORIENTATION VALUES */
58typedef enum {
59    ANDROID_COARSE_PORTRAIT,
60    ANDROID_COARSE_LANDSCAPE
61} AndroidCoarseOrientation;
62
63/* change the coarse orientation value */
64extern void android_sensors_set_coarse_orientation( AndroidCoarseOrientation  orient );
65
66/* get sensor values */
67extern int android_sensors_get( int sensor_id, float* a, float* b, float* c );
68
69/* set sensor values */
70extern int android_sensors_set( int sensor_id, float a, float b, float c );
71
72/* Get sensor id from sensor name */
73extern int android_sensors_get_id_from_name( char* sensorname );
74
75/* Get sensor name from sensor id */
76extern const char* android_sensors_get_name_from_id( int sensor_id );
77
78/* Get sensor from sensor id */
79extern uint8_t android_sensors_get_sensor_status( int sensor_id );
80
81#endif /* _android_gps_h */
82