From 7438fd1a0132bc6de101e2a5f75040a119b6f29b Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Mon, 8 Jul 2013 12:50:39 -0700 Subject: [PATCH] simplify some unnecessary complex code getSensorType() ran in O(n) instead of O(1). fix that. Change-Id: Idcf29e46fc34db32604a0d8e5a9156486783b74f --- include/android/sensor.h | 1 + services/sensorservice/SensorService.cpp | 19 ++++--------------- services/sensorservice/SensorService.h | 1 - 3 files changed, 5 insertions(+), 16 deletions(-) diff --git a/include/android/sensor.h b/include/android/sensor.h index f163f18ca..46832986b 100644 --- a/include/android/sensor.h +++ b/include/android/sensor.h @@ -122,6 +122,7 @@ typedef struct ASensorEvent { float distance; float light; float pressure; + float step_counter; }; int32_t reserved1[4]; } ASensorEvent; diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp index 471844759..39e61b70b 100644 --- a/services/sensorservice/SensorService.cpp +++ b/services/sensorservice/SensorService.cpp @@ -240,7 +240,8 @@ void SensorService::cleanupAutoDisabledSensor(const sp& c status_t err = NO_ERROR; for (int i=0 ; ihasSensor(handle)) { sensor = mSensorMap.valueFor(handle); err = sensor ?sensor->resetStateWithoutActuatingHardware(connection.get(), handle) @@ -279,7 +280,7 @@ bool SensorService::threadLoop() // Todo(): add a flag to the sensors definitions to indicate // the sensors which can wake up the AP for (int i = 0; i < count; i++) { - if (getSensorType(buffer[i].sensor) == SENSOR_TYPE_SIGNIFICANT_MOTION) { + if (buffer[i].type == SENSOR_TYPE_SIGNIFICANT_MOTION) { acquire_wake_lock(PARTIAL_WAKE_LOCK, WAKE_LOCK_NAME); wakeLockAcquired = true; break; @@ -331,7 +332,7 @@ bool SensorService::threadLoop() // handle backward compatibility for RotationVector sensor if (halVersion < SENSORS_DEVICE_API_VERSION_1_0) { for (int i = 0; i < count; i++) { - if (getSensorType(buffer[i].sensor) == SENSOR_TYPE_ROTATION_VECTOR) { + if (buffer[i].type == SENSOR_TYPE_ROTATION_VECTOR) { // All the 4 components of the quaternion should be available // No heading accuracy. Set it to -1 buffer[i].data[4] = -1; @@ -419,18 +420,6 @@ String8 SensorService::getSensorName(int handle) const { return result; } -int SensorService::getSensorType(int handle) const { - size_t count = mUserSensorList.size(); - for (size_t i=0 ; i SensorService::getSensorList() { char value[PROPERTY_VALUE_MAX]; diff --git a/services/sensorservice/SensorService.h b/services/sensorservice/SensorService.h index 67489cc85..56b0a3e18 100644 --- a/services/sensorservice/SensorService.h +++ b/services/sensorservice/SensorService.h @@ -111,7 +111,6 @@ class SensorService : DefaultKeyedVector getActiveVirtualSensors() const; String8 getSensorName(int handle) const; - int getSensorType(int handle) const; void recordLastValue(sensors_event_t const * buffer, size_t count); static void sortEventBuffer(sensors_event_t* buffer, size_t count); Sensor registerSensor(SensorInterface* sensor);