From 724d91d778e71c8186399f4955de14b54812b3ed Mon Sep 17 00:00:00 2001 From: Aravind Akella Date: Thu, 27 Jun 2013 12:04:23 -0700 Subject: Sensor batching. Changes to the native code. Bug: 10109508 Change-Id: I7333f3aac76125a8226a4c99c901fb904588df04 --- include/android/sensor.h | 29 ++++++++++++++++++++++++++++- include/gui/ISensorEventConnection.h | 4 +++- include/gui/Sensor.h | 6 +++++- include/gui/SensorEventQueue.h | 4 +++- 4 files changed, 39 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/android/sensor.h b/include/android/sensor.h index 32c5c0a..129ea3e 100644 --- a/include/android/sensor.h +++ b/include/android/sensor.h @@ -106,6 +106,30 @@ typedef struct ASensorVector { uint8_t reserved[3]; } ASensorVector; +typedef struct AMetaDataEvent { + int32_t what; + int32_t sensor; +} AMetaDataEvent; + +typedef struct AUncalibratedEvent { + union { + float uncalib[3]; + struct { + float x_uncalib; + float y_uncalib; + float z_uncalib; + }; + }; + union { + float bias[3]; + struct { + float x_bias; + float y_bias; + float z_bias; + }; + }; +} AUncalibratedEvent; + /* NOTE: Must match hardware/sensors.h */ typedef struct ASensorEvent { int32_t version; /* sizeof(struct ASensorEvent) */ @@ -123,6 +147,10 @@ typedef struct ASensorEvent { float distance; float light; float pressure; + float relative_humidity; + AUncalibratedEvent uncalibrated_gyro; + AUncalibratedEvent uncalibrated_magnetic; + AMetaDataEvent meta_data; }; union { uint64_t data[8]; @@ -132,7 +160,6 @@ typedef struct ASensorEvent { int32_t reserved1[4]; } ASensorEvent; - struct ASensorManager; typedef struct ASensorManager ASensorManager; diff --git a/include/gui/ISensorEventConnection.h b/include/gui/ISensorEventConnection.h index 749065e..00eecc4 100644 --- a/include/gui/ISensorEventConnection.h +++ b/include/gui/ISensorEventConnection.h @@ -36,8 +36,10 @@ public: DECLARE_META_INTERFACE(SensorEventConnection); virtual sp getSensorChannel() const = 0; - virtual status_t enableDisable(int handle, bool enabled) = 0; + virtual status_t enableDisable(int handle, bool enabled, nsecs_t samplingPeriodNs, + nsecs_t maxBatchReportLatencyNs, int reservedFlags) = 0; virtual status_t setEventRate(int handle, nsecs_t ns) = 0; + virtual status_t flushSensor(int handle) = 0; }; // ---------------------------------------------------------------------------- diff --git a/include/gui/Sensor.h b/include/gui/Sensor.h index 9197372..0c81426 100644 --- a/include/gui/Sensor.h +++ b/include/gui/Sensor.h @@ -53,7 +53,7 @@ public: }; Sensor(); - Sensor(struct sensor_t const* hwSensor); + Sensor(struct sensor_t const* hwSensor, int halVersion = 0); ~Sensor(); const String8& getName() const; @@ -67,6 +67,8 @@ public: int32_t getMinDelay() const; nsecs_t getMinDelayNs() const; int32_t getVersion() const; + int32_t getFifoReservedEventCount() const; + int32_t getFifoMaxEventCount() const; // LightFlattenable protocol inline bool isFixedSize() const { return false; } @@ -85,6 +87,8 @@ private: float mPower; int32_t mMinDelay; int32_t mVersion; + int32_t mFifoReservedEventCount; + int32_t mFifoMaxEventCount; }; // ---------------------------------------------------------------------------- diff --git a/include/gui/SensorEventQueue.h b/include/gui/SensorEventQueue.h index 759b5cb..8d8493b 100644 --- a/include/gui/SensorEventQueue.h +++ b/include/gui/SensorEventQueue.h @@ -68,8 +68,10 @@ public: status_t setEventRate(Sensor const* sensor, nsecs_t ns) const; // these are here only to support SensorManager.java - status_t enableSensor(int32_t handle, int32_t us) const; + status_t enableSensor(int32_t handle, int32_t samplingPeriodUs, int maxBatchReportLatencyUs, + int reservedFlags) const; status_t disableSensor(int32_t handle) const; + status_t flushSensor(int32_t handle) const; private: sp getLooper() const; -- cgit v1.1