summaryrefslogtreecommitdiffstats
path: root/services/sensorservice/SensorFusion.cpp
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2011-07-14 16:39:46 -0700
committerMathias Agopian <mathias@google.com>2012-06-27 17:07:55 -0700
commit7b2b32f2e761a919deb6f82d978b379429f77b05 (patch)
tree810eb268e4f2d17c5d51f2fbf67acd9952e2be23 /services/sensorservice/SensorFusion.cpp
parent0be7a26220f786c068d6f5488d89ea4937c1df51 (diff)
downloadframeworks_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.cpp32
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) {