111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (C) 2010 The Android Open Source Project 311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Licensed under the Apache License, Version 2.0 (the "License"); 511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * you may not use this file except in compliance with the License. 611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * You may obtain a copy of the License at 711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * http://www.apache.org/licenses/LICENSE-2.0 911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Unless required by applicable law or agreed to in writing, software 1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * distributed under the License is distributed on an "AS IS" BASIS, 1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * See the License for the specific language governing permissions and 1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * limitations under the License. 1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef ANDROID_SENSOR_H 1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ANDROID_SENSOR_H 2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************** 2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * IMPORTANT NOTICE: 2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * This file is part of Android's set of stable system headers 2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * exposed by the Android NDK (Native Development Kit). 2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Third-party source AND binary code relies on the definitions 2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * here to be FROZEN ON ALL UPCOMING PLATFORM RELEASES. 3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * - DO NOT MODIFY ENUMS (EXCEPT IF YOU ADD NEW 32-BIT VALUES) 3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * - DO NOT MODIFY CONSTANTS OR FUNCTIONAL MACROS 3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * - DO NOT CHANGE THE SIGNATURE OF FUNCTIONS IN ANY WAY 3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * - DO NOT CHANGE THE LAYOUT OR SIZE OF STRUCTURES 3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Structures and functions to receive and process sensor events in 3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * native code. 4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <sys/types.h> 4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <android/looper.h> 4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __cplusplus 4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern "C" { 4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Sensor types 5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * (keep in sync with hardware/sensor.h) 5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum { 5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ASENSOR_TYPE_ACCELEROMETER = 1, 5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ASENSOR_TYPE_MAGNETIC_FIELD = 2, 6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ASENSOR_TYPE_GYROSCOPE = 4, 6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ASENSOR_TYPE_LIGHT = 5, 6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ASENSOR_TYPE_PROXIMITY = 8 6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Sensor accuracy measure 6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum { 6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ASENSOR_STATUS_UNRELIABLE = 0, 7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ASENSOR_STATUS_ACCURACY_LOW = 1, 7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ASENSOR_STATUS_ACCURACY_MEDIUM = 2, 7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ASENSOR_STATUS_ACCURACY_HIGH = 3 7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * A few useful constants 7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Earth's gravity in m/s^2 */ 8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ASENSOR_STANDARD_GRAVITY (9.80665f) 8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Maximum magnetic field on Earth's surface in uT */ 8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ASENSOR_MAGNETIC_FIELD_EARTH_MAX (60.0f) 8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Minimum magnetic field on Earth's surface in uT*/ 8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define ASENSOR_MAGNETIC_FIELD_EARTH_MIN (30.0f) 8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * A sensor event. 8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* NOTE: Must match hardware/sensors.h */ 9111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct ASensorVector { 9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union { 9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert float v[3]; 9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct { 9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert float x; 9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert float y; 9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert float z; 9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert }; 9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct { 10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert float azimuth; 10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert float pitch; 10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert float roll; 10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert }; 10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert }; 10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int8_t status; 10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert uint8_t reserved[3]; 10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} ASensorVector; 10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* NOTE: Must match hardware/sensors.h */ 11011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct ASensorEvent { 11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int32_t version; /* sizeof(struct ASensorEvent) */ 11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int32_t sensor; 11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int32_t type; 11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int32_t reserved0; 11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int64_t timestamp; 11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union { 11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert float data[16]; 11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ASensorVector vector; 11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ASensorVector acceleration; 12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ASensorVector magnetic; 12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert float temperature; 12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert float distance; 12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert float light; 12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert float pressure; 12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert }; 12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int32_t reserved1[4]; 12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} ASensorEvent; 12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ASensorManager; 13111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct ASensorManager ASensorManager; 13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ASensorEventQueue; 13411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct ASensorEventQueue ASensorEventQueue; 13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct ASensor; 13711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct ASensor ASensor; 13811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef ASensor const* ASensorRef; 13911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef ASensorRef const* ASensorList; 14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*****************************************************************************/ 14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Get a reference to the sensor manager. ASensorManager is a singleton. 14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Example: 14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * ASensorManager* sensorManager = ASensorManager_getInstance(); 14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 15111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertASensorManager* ASensorManager_getInstance(); 15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Returns the list of available sensors. 15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint ASensorManager_getSensorList(ASensorManager* manager, ASensorList* list); 15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Returns the default sensor for the given type, or NULL if no sensor 16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * of that type exist. 16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 16311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertASensor const* ASensorManager_getDefaultSensor(ASensorManager* manager, int type); 16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Creates a new sensor event queue and associate it with a looper. 16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 16811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertASensorEventQueue* ASensorManager_createEventQueue(ASensorManager* manager, 16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ALooper* looper, int ident, ALooper_callbackFunc callback, void* data); 17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Destroys the event queue and free all resources associated to it. 17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint ASensorManager_destroyEventQueue(ASensorManager* manager, ASensorEventQueue* queue); 17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*****************************************************************************/ 17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Enable the selected sensor. Returns a negative error code on failure. 18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint ASensorEventQueue_enableSensor(ASensorEventQueue* queue, ASensor const* sensor); 18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Disable the selected sensor. Returns a negative error code on failure. 18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint ASensorEventQueue_disableSensor(ASensorEventQueue* queue, ASensor const* sensor); 18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Sets the delivery rate of events in microseconds for the given sensor. 19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Note that this is a hint only, generally event will arrive at a higher 19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * rate. It is an error to set a rate inferior to the value returned by 19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * ASensor_getMinDelay(). 19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Returns a negative error code on failure. 19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint ASensorEventQueue_setEventRate(ASensorEventQueue* queue, ASensor const* sensor, int32_t usec); 19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Returns true if there are one or more events available in the 20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * sensor queue. Returns 1 if the queue has events; 0 if 20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * it does not have events; and a negative value if there is an error. 20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint ASensorEventQueue_hasEvents(ASensorEventQueue* queue); 20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Returns the next available events from the queue. Returns a negative 20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * value if no events are available or an error has occurred, otherwise 20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * the number of events returned. 20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Examples: 21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * ASensorEvent event; 21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * ssize_t numEvent = ASensorEventQueue_getEvents(queue, &event, 1); 21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * ASensorEvent eventBuffer[8]; 21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * ssize_t numEvent = ASensorEventQueue_getEvents(queue, eventBuffer, 8); 21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertssize_t ASensorEventQueue_getEvents(ASensorEventQueue* queue, 21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ASensorEvent* events, size_t count); 22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*****************************************************************************/ 22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Returns this sensor's name (non localized) 22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertconst char* ASensor_getName(ASensor const* sensor); 22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Returns this sensor's vendor's name (non localized) 23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertconst char* ASensor_getVendor(ASensor const* sensor); 23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Return this sensor's type 23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint ASensor_getType(ASensor const* sensor); 23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Returns this sensors's resolution 24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertfloat ASensor_getResolution(ASensor const* sensor) __NDK_FPABI__; 24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Returns the minimum delay allowed between events in microseconds. 24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * A value of zero means that this sensor doesn't report events at a 24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * constant rate, but rather only when a new data is available. 24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertint ASensor_getMinDelay(ASensor const* sensor); 25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __cplusplus 25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}; 25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif // ANDROID_SENSOR_H 257