Sensor

Files

file  sensor.h
 

Data Structures

struct  ASensorVector
 
struct  AMetaDataEvent
 
struct  AUncalibratedEvent
 
struct  AHeartRateEvent
 
struct  ASensorEvent
 

Macros

#define ASENSOR_STANDARD_GRAVITY   (9.80665f)
 
#define ASENSOR_MAGNETIC_FIELD_EARTH_MAX   (60.0f)
 
#define ASENSOR_MAGNETIC_FIELD_EARTH_MIN   (30.0f)
 

Typedefs

typedef struct ASensorVector ASensorVector
 
typedef struct AMetaDataEvent AMetaDataEvent
 
typedef struct AUncalibratedEvent AUncalibratedEvent
 
typedef struct AHeartRateEvent AHeartRateEvent
 
typedef struct ASensorEvent ASensorEvent
 
typedef struct ASensorManager ASensorManager
 
typedef struct ASensorEventQueue ASensorEventQueue
 
typedef struct ASensor ASensor
 
typedef ASensor const * ASensorRef
 
typedef ASensorRef const * ASensorList
 

Enumerations

enum  {
  ASENSOR_TYPE_ACCELEROMETER = 1, ASENSOR_TYPE_MAGNETIC_FIELD = 2, ASENSOR_TYPE_GYROSCOPE = 4, ASENSOR_TYPE_LIGHT = 5,
  ASENSOR_TYPE_PROXIMITY = 8
}
 
enum  {
  ASENSOR_STATUS_NO_CONTACT = -1, ASENSOR_STATUS_UNRELIABLE = 0, ASENSOR_STATUS_ACCURACY_LOW = 1, ASENSOR_STATUS_ACCURACY_MEDIUM = 2,
  ASENSOR_STATUS_ACCURACY_HIGH = 3
}
 
enum  { AREPORTING_MODE_CONTINUOUS = 0, AREPORTING_MODE_ON_CHANGE = 1, AREPORTING_MODE_ONE_SHOT = 2, AREPORTING_MODE_SPECIAL_TRIGGER = 3 }
 

Functions

ASensorManagerASensorManager_getInstance ()
 
int ASensorManager_getSensorList (ASensorManager *manager, ASensorList *list)
 
ASensor const * ASensorManager_getDefaultSensor (ASensorManager *manager, int type)
 
ASensor const * ASensorManager_getDefaultSensorEx (ASensorManager *manager, int type, bool wakeUp)
 
ASensorEventQueueASensorManager_createEventQueue (ASensorManager *manager, ALooper *looper, int ident, ALooper_callbackFunc callback, void *data)
 
int ASensorManager_destroyEventQueue (ASensorManager *manager, ASensorEventQueue *queue)
 
int ASensorEventQueue_enableSensor (ASensorEventQueue *queue, ASensor const *sensor)
 
int ASensorEventQueue_disableSensor (ASensorEventQueue *queue, ASensor const *sensor)
 
int ASensorEventQueue_setEventRate (ASensorEventQueue *queue, ASensor const *sensor, int32_t usec)
 
int ASensorEventQueue_hasEvents (ASensorEventQueue *queue)
 
ssize_t ASensorEventQueue_getEvents (ASensorEventQueue *queue, ASensorEvent *events, size_t count)
 
const char * ASensor_getName (ASensor const *sensor)
 
const char * ASensor_getVendor (ASensor const *sensor)
 
int ASensor_getType (ASensor const *sensor)
 
float ASensor_getResolution (ASensor const *sensor)
 
int ASensor_getMinDelay (ASensor const *sensor)
 
int ASensor_getFifoMaxEventCount (ASensor const *sensor)
 
int ASensor_getFifoReservedEventCount (ASensor const *sensor)
 
const char * ASensor_getStringType (ASensor const *sensor)
 
int ASensor_getReportingMode (ASensor const *sensor)
 
bool ASensor_isWakeUpSensor (ASensor const *sensor)
 

Detailed Description

Macro Definition Documentation

#define ASENSOR_MAGNETIC_FIELD_EARTH_MAX   (60.0f)

Maximum magnetic field on Earth's surface in uT

#define ASENSOR_MAGNETIC_FIELD_EARTH_MIN   (30.0f)

Minimum magnetic field on Earth's surface in uT

#define ASENSOR_STANDARD_GRAVITY   (9.80665f)

Earth's gravity in m/s^2

Typedef Documentation

typedef struct ASensorEvent ASensorEvent

ASensorEventQueue is an opaque type that provides access to ASensorEvent from hardware sensors.

A new ASensorEventQueue can be obtained using ASensorManager_createEventQueue().

This file provides a set of functions to enable and disable sensors, check and get events, and set event rates on a ASensorEventQueue.

typedef ASensorRef const* ASensorList

ASensorList is an array of reference to ASensor.

A ASensorList can be initialized using ASensorManager_getSensorList().

ASensorManager is an opaque type to manage sensors and events queues.

ASensorManager is a singleton that can be obtained using ASensorManager_getInstance().

This file provides a set of functions that uses ASensorManager to access and list hardware sensors, and create and destroy event queues:

typedef ASensor const* ASensorRef

ASensorRef is a type for constant pointers to ASensor.

This is used to define entry in ASensorList arrays.

typedef struct ASensorVector ASensorVector

A sensor event.

Enumeration Type Documentation

anonymous enum

Structures and functions to receive and process sensor events in native code. Sensor types. (keep in sync with hardware/sensor.h)

Enumerator
ASENSOR_TYPE_ACCELEROMETER 

ASENSOR_TYPE_ACCELEROMETER reporting-mode: continuous

All values are in SI units (m/s^2) and measure the acceleration of the device minus the force of gravity.

ASENSOR_TYPE_MAGNETIC_FIELD 

ASENSOR_TYPE_MAGNETIC_FIELD reporting-mode: continuous

All values are in micro-Tesla (uT) and measure the geomagnetic field in the X, Y and Z axis.

ASENSOR_TYPE_GYROSCOPE 

ASENSOR_TYPE_GYROSCOPE reporting-mode: continuous

All values are in radians/second and measure the rate of rotation around the X, Y and Z axis.

ASENSOR_TYPE_LIGHT 

ASENSOR_TYPE_LIGHT reporting-mode: on-change

The light sensor value is returned in SI lux units.

ASENSOR_TYPE_PROXIMITY 

ASENSOR_TYPE_PROXIMITY reporting-mode: on-change

The proximity sensor which turns the screen off and back on during calls is the wake-up proximity sensor. Implement wake-up proximity sensor before implementing a non wake-up proximity sensor. For the wake-up proximity sensor set the flag SENSOR_FLAG_WAKE_UP. The value corresponds to the distance to the nearest object in centimeters.

anonymous enum

Sensor accuracy measure.

Enumerator
ASENSOR_STATUS_NO_CONTACT 

no contact

ASENSOR_STATUS_UNRELIABLE 

unreliable

ASENSOR_STATUS_ACCURACY_LOW 

low accuracy

ASENSOR_STATUS_ACCURACY_MEDIUM 

medium accuracy

ASENSOR_STATUS_ACCURACY_HIGH 

high accuracy

anonymous enum

Sensor Reporting Modes.

Enumerator
AREPORTING_MODE_CONTINUOUS 

continuous reporting

AREPORTING_MODE_ON_CHANGE 

reporting on change

AREPORTING_MODE_ONE_SHOT 

on shot reporting

AREPORTING_MODE_SPECIAL_TRIGGER 

special trigger reporting

Function Documentation

int ASensor_getFifoMaxEventCount ( ASensor const *  sensor)

Returns the maximum size of batches for this sensor. Batches will often be smaller, as the hardware fifo might be used for other sensors.

int ASensor_getFifoReservedEventCount ( ASensor const *  sensor)

Returns the hardware batch fifo size reserved to this sensor.

int ASensor_getMinDelay ( ASensor const *  sensor)

Returns the minimum delay allowed between events in microseconds. A value of zero means that this sensor doesn't report events at a constant rate, but rather only when a new data is available.

const char* ASensor_getName ( ASensor const *  sensor)

Returns this sensor's name (non localized)

int ASensor_getReportingMode ( ASensor const *  sensor)

Returns the reporting mode for this sensor. One of AREPORTING_MODE_* constants.

float ASensor_getResolution ( ASensor const *  sensor)

Returns this sensors's resolution

const char* ASensor_getStringType ( ASensor const *  sensor)

Returns this sensor's string type.

int ASensor_getType ( ASensor const *  sensor)

Return this sensor's type

const char* ASensor_getVendor ( ASensor const *  sensor)

Returns this sensor's vendor's name (non localized)

bool ASensor_isWakeUpSensor ( ASensor const *  sensor)

Returns true if this is a wake up sensor, false otherwise.

int ASensorEventQueue_disableSensor ( ASensorEventQueue queue,
ASensor const *  sensor 
)

Disable the selected sensor. Returns a negative error code on failure.

int ASensorEventQueue_enableSensor ( ASensorEventQueue queue,
ASensor const *  sensor 
)

Enable the selected sensor. Returns a negative error code on failure.

ssize_t ASensorEventQueue_getEvents ( ASensorEventQueue queue,
ASensorEvent events,
size_t  count 
)

Returns the next available events from the queue. Returns a negative value if no events are available or an error has occurred, otherwise the number of events returned.

Examples: ASensorEvent event; ssize_t numEvent = ASensorEventQueue_getEvents(queue, &event, 1);

ASensorEvent eventBuffer[8]; ssize_t numEvent = ASensorEventQueue_getEvents(queue, eventBuffer, 8);

int ASensorEventQueue_hasEvents ( ASensorEventQueue queue)

Returns true if there are one or more events available in the sensor queue. Returns 1 if the queue has events; 0 if it does not have events; and a negative value if there is an error.

int ASensorEventQueue_setEventRate ( ASensorEventQueue queue,
ASensor const *  sensor,
int32_t  usec 
)

Sets the delivery rate of events in microseconds for the given sensor. Note that this is a hint only, generally event will arrive at a higher rate. It is an error to set a rate inferior to the value returned by ASensor_getMinDelay(). Returns a negative error code on failure.

ASensorEventQueue* ASensorManager_createEventQueue ( ASensorManager manager,
ALooper looper,
int  ident,
ALooper_callbackFunc  callback,
void *  data 
)

Creates a new sensor event queue and associate it with a looper.

"ident" is a identifier for the events that will be returned when calling ALooper_pollOnce(). The identifier must be >= 0, or ALOOPER_POLL_CALLBACK if providing a non-NULL callback.

int ASensorManager_destroyEventQueue ( ASensorManager manager,
ASensorEventQueue queue 
)

Destroys the event queue and free all resources associated to it.

ASensor const* ASensorManager_getDefaultSensor ( ASensorManager manager,
int  type 
)

Returns the default sensor for the given type, or NULL if no sensor of that type exists.

ASensor const* ASensorManager_getDefaultSensorEx ( ASensorManager manager,
int  type,
bool  wakeUp 
)

Returns the default sensor with the given type and wakeUp properties or NULL if no sensor of this type and wakeUp properties exists.

ASensorManager* ASensorManager_getInstance ( )

Get a reference to the sensor manager. ASensorManager is a singleton.

Example:

ASensorManager* sensorManager = ASensorManager_getInstance();
int ASensorManager_getSensorList ( ASensorManager manager,
ASensorList list 
)

Returns the list of available sensors.