diff options
author | Mathias Agopian <mathias@google.com> | 2013-07-08 12:50:39 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2013-07-08 12:50:39 -0700 |
commit | 7438fd1a0132bc6de101e2a5f75040a119b6f29b (patch) | |
tree | 42e79cd430a11ee083cb583a5fdb0a66594e79fa | |
parent | 9c3e2dd97e100a3effe617cacb00cf163577ba13 (diff) | |
download | frameworks_native-7438fd1a0132bc6de101e2a5f75040a119b6f29b.zip frameworks_native-7438fd1a0132bc6de101e2a5f75040a119b6f29b.tar.gz frameworks_native-7438fd1a0132bc6de101e2a5f75040a119b6f29b.tar.bz2 |
simplify some unnecessary complex code
getSensorType() ran in O(n) instead of O(1). fix that.
Change-Id: Idcf29e46fc34db32604a0d8e5a9156486783b74f
-rw-r--r-- | include/android/sensor.h | 1 | ||||
-rw-r--r-- | services/sensorservice/SensorService.cpp | 19 | ||||
-rw-r--r-- | 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 f163f18..4683298 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 4718447..39e61b7 100644 --- a/services/sensorservice/SensorService.cpp +++ b/services/sensorservice/SensorService.cpp @@ -240,7 +240,8 @@ void SensorService::cleanupAutoDisabledSensor(const sp<SensorEventConnection>& c status_t err = NO_ERROR; for (int i=0 ; i<count ; i++) { int handle = buffer[i].sensor; - if (getSensorType(handle) == SENSOR_TYPE_SIGNIFICANT_MOTION) { + int type = buffer[i].type; + if (type == SENSOR_TYPE_SIGNIFICANT_MOTION) { if (connection->hasSensor(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<count ; i++) { - const Sensor& sensor(mUserSensorList[i]); - if (sensor.getHandle() == handle) { - return sensor.getType(); - } - } - return -1; -} - - Vector<Sensor> SensorService::getSensorList() { char value[PROPERTY_VALUE_MAX]; diff --git a/services/sensorservice/SensorService.h b/services/sensorservice/SensorService.h index 67489cc..56b0a3e 100644 --- a/services/sensorservice/SensorService.h +++ b/services/sensorservice/SensorService.h @@ -111,7 +111,6 @@ class SensorService : DefaultKeyedVector<int, SensorInterface*> 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); |