add a way to enable debugging sensors at runtime
if debug.sensors is true, extra debugging
sensors are enabled and HAL provided sensor fusion
is disabled
Change-Id: I9b093424edb8c5363d1337237cdf6abe4ab266f9
diff --git a/services/sensorservice/SensorService.cpp b/services/sensorservice/SensorService.cpp
index 9e5e84b..7ab34c9 100644
--- a/services/sensorservice/SensorService.cpp
+++ b/services/sensorservice/SensorService.cpp
@@ -117,17 +117,16 @@
// these are optional
registerVirtualSensor( new OrientationSensor() );
registerVirtualSensor( new CorrectedGyroSensor(list, count) );
-
- // virtual debugging sensors...
- char value[PROPERTY_VALUE_MAX];
- property_get("debug.sensors", value, "0");
- if (atoi(value)) {
- registerVirtualSensor( new GyroDriftSensor() );
- }
}
// build the sensor list returned to users
mUserSensorList = mSensorList;
+
+ if (hasGyro) {
+ // virtual debugging sensors are not added to mUserSensorList
+ registerVirtualSensor( new GyroDriftSensor() );
+ }
+
if (hasGyro &&
(virtualSensorsNeeds & (1<<SENSOR_TYPE_ROTATION_VECTOR))) {
// if we have the fancy sensor fusion, and it's not provided by the
@@ -138,6 +137,22 @@
}
}
+ // debugging sensor list
+ for (size_t i=0 ; i<mSensorList.size() ; i++) {
+ switch (mSensorList[i].getType()) {
+ case SENSOR_TYPE_GRAVITY:
+ case SENSOR_TYPE_LINEAR_ACCELERATION:
+ case SENSOR_TYPE_ROTATION_VECTOR:
+ if (strstr(mSensorList[i].getVendor().string(), "Google")) {
+ mUserSensorListDebug.add(mSensorList[i]);
+ }
+ break;
+ default:
+ mUserSensorListDebug.add(mSensorList[i]);
+ break;
+ }
+ }
+
run("SensorService", PRIORITY_URGENT_DISPLAY);
mInitCheck = NO_ERROR;
}
@@ -358,6 +373,11 @@
Vector<Sensor> SensorService::getSensorList()
{
+ char value[PROPERTY_VALUE_MAX];
+ property_get("debug.sensors", value, "0");
+ if (atoi(value)) {
+ return mUserSensorListDebug;
+ }
return mUserSensorList;
}