patches/frameworks/native/0001-sensorservice-Add-support-for-ignoring-broken-sensor.patch

61 lines
2 KiB
Diff

From ccd46a8a09baedf0fcad9648d75ac29468055a8f Mon Sep 17 00:00:00 2001
From: Peter Cai <peter@typeblog.net>
Date: Sun, 6 Oct 2024 09:06:48 -0400
Subject: [PATCH 1/3] sensorservice: Add support for ignoring broken sensors
This allows those sensors to be replaced by SensorFusion when possible.
Change-Id: I5509ee1f54fdf4838f6e3b109819a689f483cfc4
---
services/sensorservice/SensorDevice.cpp | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/services/sensorservice/SensorDevice.cpp b/services/sensorservice/SensorDevice.cpp
index 9c4d1ac..5a95096 100644
--- a/services/sensorservice/SensorDevice.cpp
+++ b/services/sensorservice/SensorDevice.cpp
@@ -17,6 +17,7 @@
#include "SensorDevice.h"
#include <android-base/logging.h>
+#include <android-base/properties.h>
#include <android/util/ProtoOutputStream.h>
#include <com_android_frameworks_sensorservice_flags.h>
#include <cutils/atomic.h>
@@ -32,6 +33,8 @@
#include <condition_variable>
#include <cstddef>
#include <mutex>
+#include <sstream>
+#include <string>
#include <thread>
#include "AidlSensorHalWrapper.h"
@@ -86,10 +89,24 @@ void SensorDevice::initializeSensorList() {
auto list = mHalWrapper->getSensorsList();
const size_t count = list.size();
+ auto sensorFilter = base::GetProperty("persist.sys.phh.sensor_filter", "");
+
mActivationCount.setCapacity(count);
Info model;
for (size_t i = 0; i < count; i++) {
sensor_t sensor = list[i];
+ std::string vendorNamePair = std::string(sensor.vendor) + ":" + std::string(sensor.name);
+
+ std::istringstream iss(sensorFilter);
+ std::string item;
+ bool shouldIgnore = false;
+ while (std::getline(iss, item, ';')) {
+ if (item == vendorNamePair) {
+ shouldIgnore = true;
+ }
+ }
+
+ if (shouldIgnore) continue;
if (sensor.type < DEVICE_PRIVATE_BASE) {
sensor.resolution = SensorDeviceUtils::resolutionForSensor(sensor);
--
2.44.0