diff options
author | 2023-07-20 18:31:53 +0000 | |
---|---|---|
committer | 2023-07-21 05:42:33 +0000 | |
commit | d0e68d20a6ae8aa91e2aef40cec57e148eb896c1 (patch) | |
tree | 3002f4b674c588fc6898c45c9e3e4d2a67c05985 | |
parent | d0995f5a664a263b82cc4263ab71f4c5f64f6274 (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.cpp | 11 |
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); |