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