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