diff options
author | Mathias Agopian <mathias@google.com> | 2011-07-14 16:39:46 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2012-06-27 17:07:55 -0700 |
commit | 7b2b32f2e761a919deb6f82d978b379429f77b05 (patch) | |
tree | 810eb268e4f2d17c5d51f2fbf67acd9952e2be23 /services/sensorservice/SensorFusion.cpp | |
parent | 0be7a26220f786c068d6f5488d89ea4937c1df51 (diff) | |
download | frameworks_native-7b2b32f2e761a919deb6f82d978b379429f77b05.zip frameworks_native-7b2b32f2e761a919deb6f82d978b379429f77b05.tar.gz frameworks_native-7b2b32f2e761a919deb6f82d978b379429f77b05.tar.bz2 |
sensorservice: be more robust when there are no sensor h/w
Bug: 5030108
Change-Id: I45b85b3c492b9268cb0ae44d2e5fc8c708b6e66e
Diffstat (limited to 'services/sensorservice/SensorFusion.cpp')
-rw-r--r-- | services/sensorservice/SensorFusion.cpp | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/services/sensorservice/SensorFusion.cpp b/services/sensorservice/SensorFusion.cpp index 4ec0c8c..518a1bb 100644 --- a/services/sensorservice/SensorFusion.cpp +++ b/services/sensorservice/SensorFusion.cpp @@ -28,23 +28,25 @@ SensorFusion::SensorFusion() mEnabled(false), mGyroTime(0) { sensor_t const* list; - size_t count = mSensorDevice.getSensorList(&list); - for (size_t i=0 ; i<count ; i++) { - if (list[i].type == SENSOR_TYPE_ACCELEROMETER) { - mAcc = Sensor(list + i); - } - if (list[i].type == SENSOR_TYPE_MAGNETIC_FIELD) { - mMag = Sensor(list + i); - } - if (list[i].type == SENSOR_TYPE_GYROSCOPE) { - mGyro = Sensor(list + i); - // 200 Hz for gyro events is a good compromise between precision - // and power/cpu usage. - mGyroRate = 200; - mTargetDelayNs = 1000000000LL/mGyroRate; + ssize_t count = mSensorDevice.getSensorList(&list); + if (count > 0) { + for (size_t i=0 ; i<size_t(count) ; i++) { + if (list[i].type == SENSOR_TYPE_ACCELEROMETER) { + mAcc = Sensor(list + i); + } + if (list[i].type == SENSOR_TYPE_MAGNETIC_FIELD) { + mMag = Sensor(list + i); + } + if (list[i].type == SENSOR_TYPE_GYROSCOPE) { + mGyro = Sensor(list + i); + // 200 Hz for gyro events is a good compromise between precision + // and power/cpu usage. + mGyroRate = 200; + mTargetDelayNs = 1000000000LL/mGyroRate; + } } + mFusion.init(); } - mFusion.init(); } void SensorFusion::process(const sensors_event_t& event) { |