Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d0e68d20 authored by Pontus Lidman's avatar Pontus Lidman
Browse files

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
parent d0995f5a
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -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,9 +61,11 @@ SensorFusion::SensorFusion()
            mGyro = uncalibratedGyro;
        }

        // 200 Hz for gyro events is a good compromise between precision
        // and power/cpu usage.
        mEstimatedGyroRate = 200;
        // 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) {