summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Pontus Lidman <lidman@google.com> 2023-07-20 18:31:53 +0000
committer Pontus Lidman <lidman@google.com> 2023-07-21 05:42:33 +0000
commitd0e68d20a6ae8aa91e2aef40cec57e148eb896c1 (patch)
tree3002f4b674c588fc6898c45c9e3e4d2a67c05985
parentd0995f5a664a263b82cc4263ab71f4c5f64f6274 (diff)
Make maximum sensor fusion rate tunable.
Instead of the hard-coded 200Hz maximum rate limit for sensor fusion, make it a tunable parameter using a property: sensors.aosp_low_power_sensor_fusion.maximum_rate If the property is not specified, the default remains 200Hz. Wearable devices are recommended to change it to 100 (Hz) to save power. Bug: b/270230642 Test: dumpsys sensorservice and verify gyro-rate Change-Id: Iff07899b80366d6a9913529d5758f386848c9697
-rw-r--r--services/sensorservice/SensorFusion.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/services/sensorservice/SensorFusion.cpp b/services/sensorservice/SensorFusion.cpp
index e27b52b23e..5c00260008 100644
--- a/services/sensorservice/SensorFusion.cpp
+++ b/services/sensorservice/SensorFusion.cpp
@@ -19,6 +19,7 @@
#include "SensorService.h"
#include <android/util/ProtoOutputStream.h>
+#include <cutils/properties.h>
#include <frameworks/base/core/proto/android/service/sensor_service.proto.h>
namespace android {
@@ -60,10 +61,12 @@ SensorFusion::SensorFusion()
mGyro = uncalibratedGyro;
}
- // 200 Hz for gyro events is a good compromise between precision
- // and power/cpu usage.
- mEstimatedGyroRate = 200;
- mTargetDelayNs = 1000000000LL/mEstimatedGyroRate;
+ // Wearable devices will want to tune this parameter
+ // to 100 (Hz) in device.mk to save some power.
+ int32_t value = property_get_int32(
+ "sensors.aosp_low_power_sensor_fusion.maximum_rate", 200);
+ mEstimatedGyroRate = static_cast<float>(value);
+ mTargetDelayNs = 1000000000LL / mEstimatedGyroRate;
for (int i = 0; i<NUM_FUSION_MODE; ++i) {
mFusions[i].init(i);