From 004df56ac2b000ae11664488e3b29b46bc0d6712 Mon Sep 17 00:00:00 2001 From: Willi Ye Date: Tue, 19 Jan 2021 20:08:25 +0100 Subject: [PATCH] sensors: 2.1: Squash previous sensors commits sensors: 2.1: get rid of com.samsung.permission.SSENSOR Samsung uses a permission com.samsung.permission.SSENSOR for Samsung-specfic sensors. Android obviously does not have that and the default is denied when there is no permission. As such, those sensors are inaccessible. Thus, this change removes this permission from those sensors so we can use them. Android does not require special permissions for most sensors so this change doesn't attach additional permission requirements to those sensors. However, note that it is possible that some sensitive sensors introduced by Samsung in the future may use SSENSOR permission and for privacy reasons they should be handled separately with appropriate permission control attached. Change-Id: Ia3033898722039b285e522e226074238508f6093 sensors: 2.1: map Samsung proximity sensor type to generic Samsung uses their own com.samsung.sensor.physical_proximity type instead of SENSOR_TYPE_PROXIMITY of Android. This makes proximity sensor unavailable for us as we only look for SENSOR_TYPE_PROXIMITY. Thus, this change maps Samsung's vendor-specific proximity sensor type to generic one. Change-Id: I64f6558876e1398dfbea0e5c0eb76aa1aafd2dfd sensors: 2.1: set max range of proximity sensor to 1 Samsung's proximity sensor type is binary in nature. There are only two state: FAR and NEAR. However, Samsung uses values between min and max for other purposes like proximity detection during Always-On Display. This breaks proximity detection during Doze for AOSP as AOSP only considers the proximity sensor in FAR state when the value equals or larger than max. Thus, this change sets the max to 1 so any > 1 value would be considered as FAR and the behavior of this vendor proximity sensor type matches the behavior expected by AOSP. Change-Id: I56af8e2ae743b47e3c4894e5ef68ce0b54e5cfdb hidl:sensors: 2.1 Dump sensor information if verbose is turned on This is useful for improving the sensors HAL. Change-Id: I41430974b40e14095396aaf645b8b37d08b13710 sensors: 2.1: declare override="true" in manifest Change-Id: If8349ca7b8102c3ffee545d1065d0e7d08d22652 --- hidl/sensors/2.1/HalProxy.cpp | 23 ++++++++++++++++++- ....hardware.sensors@2.1-samsung-multihal.xml | 2 +- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/hidl/sensors/2.1/HalProxy.cpp b/hidl/sensors/2.1/HalProxy.cpp index fe3fc847..30c7d764 100644 --- a/hidl/sensors/2.1/HalProxy.cpp +++ b/hidl/sensors/2.1/HalProxy.cpp @@ -14,6 +14,8 @@ * limitations under the License. */ +//#define VERBOSE + #include "HalProxy.h" #include @@ -115,7 +117,26 @@ HalProxy::~HalProxy() { Return HalProxy::getSensorsList_2_1(ISensorsV2_1::getSensorsList_2_1_cb _hidl_cb) { std::vector sensors; for (const auto& iter : mSensors) { - sensors.push_back(iter.second); + V2_1::SensorInfo dst = iter.second; + + if (dst.requiredPermission == "com.samsung.permission.SSENSOR") { + dst.requiredPermission = ""; + } + + if (dst.typeAsString == "com.samsung.sensor.physical_proximity") { + ALOGI("Fixing com.samsung.sensor.physical_proximity"); + dst.type = V2_1::SensorType::PROXIMITY; + dst.typeAsString = SENSOR_STRING_TYPE_PROXIMITY; + dst.maxRange = 1; + } + +#ifdef VERBOSE + ALOGI( "SENSOR NAME:%s ", dst.name.c_str()); + ALOGI( " VENDOR:%s ", dst.name.c_str()); + ALOGI( " TYPE:%d ", (uint32_t)dst.type); + ALOGI( " TYPE_AS_STRING:%s ", dst.typeAsString.c_str()); +#endif + sensors.push_back(dst); } _hidl_cb(sensors); return Void(); diff --git a/hidl/sensors/2.1/android.hardware.sensors@2.1-samsung-multihal.xml b/hidl/sensors/2.1/android.hardware.sensors@2.1-samsung-multihal.xml index 18bd3ae8..fd2f78ac 100644 --- a/hidl/sensors/2.1/android.hardware.sensors@2.1-samsung-multihal.xml +++ b/hidl/sensors/2.1/android.hardware.sensors@2.1-samsung-multihal.xml @@ -1,5 +1,5 @@ - + android.hardware.sensors hwbinder 2.1