1e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
2e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Copyright (C) 2010 The Android Open Source Project
3e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
4e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Licensed under the Apache License, Version 2.0 (the "License");
5e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * you may not use this file except in compliance with the License.
6e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * You may obtain a copy of the License at
7e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
8e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *      http://www.apache.org/licenses/LICENSE-2.0
9e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
10e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Unless required by applicable law or agreed to in writing, software
11e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * distributed under the License is distributed on an "AS IS" BASIS,
12e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * See the License for the specific language governing permissions and
14e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * limitations under the License.
15e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
16e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
17e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
18e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#ifndef ANDROID_SENSOR_H
19e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#define ANDROID_SENSOR_H
20e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
21e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/******************************************************************
22e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
23e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * IMPORTANT NOTICE:
24e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
25e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *   This file is part of Android's set of stable system headers
26e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *   exposed by the Android NDK (Native Development Kit).
27e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
28e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *   Third-party source AND binary code relies on the definitions
29e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *   here to be FROZEN ON ALL UPCOMING PLATFORM RELEASES.
30e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
31e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *   - DO NOT MODIFY ENUMS (EXCEPT IF YOU ADD NEW 32-BIT VALUES)
32e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *   - DO NOT MODIFY CONSTANTS OR FUNCTIONAL MACROS
33e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *   - DO NOT CHANGE THE SIGNATURE OF FUNCTIONS IN ANY WAY
34e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *   - DO NOT CHANGE THE LAYOUT OR SIZE OF STRUCTURES
35e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
36e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
37e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
38e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Structures and functions to receive and process sensor events in
39e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * native code.
40e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
41e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
42e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
43e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#include <sys/types.h>
44e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
45e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#include <android/looper.h>
46e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
47e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#ifdef __cplusplus
48e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianextern "C" {
49e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#endif
50e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
51e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
52e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
53e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Sensor types
54e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * (keep in sync with hardware/sensor.h)
55e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
56e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
57e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianenum {
58e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ASENSOR_TYPE_ACCELEROMETER      = 1,
59e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ASENSOR_TYPE_MAGNETIC_FIELD     = 2,
60e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ASENSOR_TYPE_GYROSCOPE          = 4,
61e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ASENSOR_TYPE_LIGHT              = 5,
62e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ASENSOR_TYPE_PROXIMITY          = 8
63e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian};
64e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
65e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
66e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Sensor accuracy measure
67e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
68e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianenum {
69e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ASENSOR_STATUS_UNRELIABLE       = 0,
70e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ASENSOR_STATUS_ACCURACY_LOW     = 1,
71e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ASENSOR_STATUS_ACCURACY_MEDIUM  = 2,
72e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    ASENSOR_STATUS_ACCURACY_HIGH    = 3
73e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian};
74e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
75e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
76e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * A few useful constants
77e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
78e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
79e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/* Earth's gravity in m/s^2 */
80e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#define ASENSOR_STANDARD_GRAVITY            (9.80665f)
81e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/* Maximum magnetic field on Earth's surface in uT */
82e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#define ASENSOR_MAGNETIC_FIELD_EARTH_MAX    (60.0f)
83e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/* Minimum magnetic field on Earth's surface in uT*/
84e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#define ASENSOR_MAGNETIC_FIELD_EARTH_MIN    (30.0f)
85e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
86e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
87e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * A sensor event.
88e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
89e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
90e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/* NOTE: Must match hardware/sensors.h */
91e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopiantypedef struct ASensorVector {
92e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    union {
93e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian        float v[3];
94e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian        struct {
95e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian            float x;
96e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian            float y;
97e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian            float z;
98e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian        };
99e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian        struct {
100e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian            float azimuth;
101e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian            float pitch;
102e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian            float roll;
103e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian        };
104e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    };
105e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    int8_t status;
106e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    uint8_t reserved[3];
107e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian} ASensorVector;
108e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
109e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/* NOTE: Must match hardware/sensors.h */
110e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopiantypedef struct ASensorEvent {
111e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    int32_t version; /* sizeof(struct ASensorEvent) */
112e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    int32_t sensor;
113e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    int32_t type;
114e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    int32_t reserved0;
115e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    int64_t timestamp;
116e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    union {
117e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian        float           data[16];
118e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian        ASensorVector   vector;
119e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian        ASensorVector   acceleration;
120e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian        ASensorVector   magnetic;
121e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian        float           temperature;
122e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian        float           distance;
123e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian        float           light;
124e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian        float           pressure;
125e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    };
126e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian    int32_t reserved1[4];
127e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian} ASensorEvent;
128e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
129e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
130e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianstruct ASensorManager;
131e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopiantypedef struct ASensorManager ASensorManager;
132e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
133e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianstruct ASensorEventQueue;
134e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopiantypedef struct ASensorEventQueue ASensorEventQueue;
135e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
136e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianstruct ASensor;
137e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopiantypedef struct ASensor ASensor;
138e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopiantypedef ASensor const* ASensorRef;
139e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopiantypedef ASensorRef const* ASensorList;
140e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
141e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*****************************************************************************/
142e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
143e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
144e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Get a reference to the sensor manager. ASensorManager is a singleton.
145e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
146e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Example:
147e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
148e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *     ASensorManager* sensorManager = ASensorManager_getInstance();
149e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
150e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
151e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias AgopianASensorManager* ASensorManager_getInstance();
152e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
153e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
154e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
155e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Returns the list of available sensors.
156e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
157e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint ASensorManager_getSensorList(ASensorManager* manager, ASensorList* list);
158e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
159e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
160e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Returns the default sensor for the given type, or NULL if no sensor
161e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * of that type exist.
162e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
163e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias AgopianASensor const* ASensorManager_getDefaultSensor(ASensorManager* manager, int type);
164e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
165e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
166e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Creates a new sensor event queue and associate it with a looper.
167e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
168e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias AgopianASensorEventQueue* ASensorManager_createEventQueue(ASensorManager* manager,
169e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian        ALooper* looper, int ident, ALooper_callbackFunc callback, void* data);
170e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
171e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
172e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Destroys the event queue and free all resources associated to it.
173e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
174e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint ASensorManager_destroyEventQueue(ASensorManager* manager, ASensorEventQueue* queue);
175e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
176e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
177e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*****************************************************************************/
178e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
179e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
180e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Enable the selected sensor. Returns a negative error code on failure.
181e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
182e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint ASensorEventQueue_enableSensor(ASensorEventQueue* queue, ASensor const* sensor);
183e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
184e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
185e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Disable the selected sensor. Returns a negative error code on failure.
186e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
187e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint ASensorEventQueue_disableSensor(ASensorEventQueue* queue, ASensor const* sensor);
188e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
189e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
190e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Sets the delivery rate of events in microseconds for the given sensor.
191e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Note that this is a hint only, generally event will arrive at a higher
192e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * rate. It is an error to set a rate inferior to the value returned by
193e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * ASensor_getMinDelay().
194e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Returns a negative error code on failure.
195e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
196e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint ASensorEventQueue_setEventRate(ASensorEventQueue* queue, ASensor const* sensor, int32_t usec);
197e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
198e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
199e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Returns true if there are one or more events available in the
200e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * sensor queue.  Returns 1 if the queue has events; 0 if
201e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * it does not have events; and a negative value if there is an error.
202e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
203e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint ASensorEventQueue_hasEvents(ASensorEventQueue* queue);
204e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
205e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
206e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Returns the next available events from the queue.  Returns a negative
207e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * value if no events are available or an error has occurred, otherwise
208e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * the number of events returned.
209e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
210e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Examples:
211e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *   ASensorEvent event;
212e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *   ssize_t numEvent = ASensorEventQueue_getEvents(queue, &event, 1);
213e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
214e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *   ASensorEvent eventBuffer[8];
215e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *   ssize_t numEvent = ASensorEventQueue_getEvents(queue, eventBuffer, 8);
216e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian *
217e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
218e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianssize_t ASensorEventQueue_getEvents(ASensorEventQueue* queue,
219e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian                ASensorEvent* events, size_t count);
220e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
221e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
222e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*****************************************************************************/
223e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
224e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
225e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Returns this sensor's name (non localized)
226e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
227e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianconst char* ASensor_getName(ASensor const* sensor);
228e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
229e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
230e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Returns this sensor's vendor's name (non localized)
231e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
232e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianconst char* ASensor_getVendor(ASensor const* sensor);
233e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
234e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
235e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Return this sensor's type
236e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
237e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint ASensor_getType(ASensor const* sensor);
238e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
239e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
240e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Returns this sensors's resolution
241e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
242e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianfloat ASensor_getResolution(ASensor const* sensor);
243e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
244e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian/*
245e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * Returns the minimum delay allowed between events in microseconds.
246e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * A value of zero means that this sensor doesn't report events at a
247e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian * constant rate, but rather only when a new data is available.
248e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian */
249e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopianint ASensor_getMinDelay(ASensor const* sensor);
250e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
251e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
252e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#ifdef __cplusplus
253e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian};
254e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#endif
255e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian
256e1c61d3cc8458ce9a15d8109f728e60f5248939dMathias Agopian#endif // ANDROID_SENSOR_H
257