Increase dynamic sensor op timeout to 1.6 sec am: 9a056455f2

Original change: https://googleplex-android-review.googlesource.com/c/platform/hardware/libhardware/+/20333186

Change-Id: Ie65bd144da9d4fc20fc3ea799dc148419fda0484
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/Android.bp b/Android.bp
index 92c77fa..e567cca 100644
--- a/Android.bp
+++ b/Android.bp
@@ -60,7 +60,7 @@
     },
     apex_available: [
         "//apex_available:platform",
-        "com.android.bluetooth",
+        "com.android.btservices",
         "com.android.media.swcodec",
     ],
     min_sdk_version: "29",
@@ -75,7 +75,6 @@
     shared_libs: [
         "libcutils",
         "liblog",
-        "libdl",
         "libvndksupport",
     ],
     cflags: [
diff --git a/modules/sensors/dynamic_sensor/HidRawSensor.cpp b/modules/sensors/dynamic_sensor/HidRawSensor.cpp
index 3759e7e..c90f4f1 100644
--- a/modules/sensors/dynamic_sensor/HidRawSensor.cpp
+++ b/modules/sensors/dynamic_sensor/HidRawSensor.cpp
@@ -1066,7 +1066,10 @@
 bool HidRawSensor::getSensorEventData(const std::vector<uint8_t> &message,
                                       sensors_event_t *event) {
     for (const auto &rec : mTranslateTable) {
-        int64_t v = (message[rec.byteOffset + rec.byteSize - 1] & 0x80) ? -1 : 0;
+        int64_t v = 0;
+        if (rec.minValue < 0) {
+            v = (message[rec.byteOffset + rec.byteSize - 1] & 0x80) ? -1 : 0;
+        }
         for (int i = static_cast<int>(rec.byteSize) - 1; i >= 0; --i) {
             v = (v << 8) | message[rec.byteOffset + i]; // HID is little endian
         }
diff --git a/modules/sensors/dynamic_sensor/HidRawSensor.h b/modules/sensors/dynamic_sensor/HidRawSensor.h
index 074482a..e4564a0 100644
--- a/modules/sensors/dynamic_sensor/HidRawSensor.h
+++ b/modules/sensors/dynamic_sensor/HidRawSensor.h
@@ -154,9 +154,11 @@
     bool getReportFieldValue(const std::vector<uint8_t> &message,
                              ReportTranslateRecord* rec, ValueType* value) {
         bool valid = true;
-        int64_t v;
+        int64_t v = 0;
+        if (rec->minValue < 0) {
+            v = (message[rec->byteOffset + rec->byteSize - 1] & 0x80) ? -1 : 0;
+        }
 
-        v = (message[rec->byteOffset + rec->byteSize - 1] & 0x80) ? -1 : 0;
         for (int i = static_cast<int>(rec->byteSize) - 1; i >= 0; --i) {
             v = (v << 8) | message[rec->byteOffset + i]; // HID is little endian
         }
diff --git a/modules/sensors/dynamic_sensor/README.md b/modules/sensors/dynamic_sensor/README.md
index 5d5bd6d..8af15a9 100644
--- a/modules/sensors/dynamic_sensor/README.md
+++ b/modules/sensors/dynamic_sensor/README.md
@@ -11,9 +11,9 @@
 
 A few files need to be modified to add dynamic sensor support to a device. The
 dynamic sensor HAL must be enabled in the device product makefile and in the
-sensor sub-HAL configuration file, raw HID devices must be configured, and raw
-HID device and dynamic sensor property permissions must be set up in the SELinux
-policy files.
+sensor sub-HAL configuration file, support for raw HID devices must be configured
+in the Linux kernel (`CONFIG_HIDRAW=y`), and SELinux policy files must be updated
+to provide the necessary permissions. Example changes are provided below.
 
 ```shell
 acme-co$ git -C device/acme/rocket-phone diff
@@ -123,10 +123,8 @@
 should be initialized and appear in the sensor service.
 
 ```shell
-acme-co$ make -j28 && fastboot flashall
-.
-.
-.
+acme-co$ build_and_flash_android
+...
 acme-co$ adb logcat -d | grep DynamicSensorHal
 12-15 18:18:45.735   791   791 D DynamicSensorHal: DynamicSensorsSubHal::getSensorsList_2_1 invoked.
 12-15 18:18:47.474   791   791 D DynamicSensorHal: DynamicSensorsSubHal::initialize invoked.
@@ -134,8 +132,6 @@
 0000000000) Dynamic Sensor Manager    | Google          | ver: 1 | type: android.sensor.dynamic_sensor_meta(32) | perm: n/a | flags: 0x00000007
 Dynamic Sensor Manager (handle=0x00000000, connections=1)
          Dynamic Sensor Manager 0x00000000 | status: active | pending flush events 0
-acme-co$ adb logcat -c
-acme-co$
 ```
 
 When a dynamic sensor is paired with the device (e.g., Bluetooth rocket buds),
@@ -145,9 +141,9 @@
 acme-co$ adb logcat -d | grep "DynamicSensorHal\|hidraw\|Rocket"
 12-15 18:19:55.268   157   157 I hid-generic 0003: 1234:5678.0001: hidraw0: BLUETOOTH HID v0.00 Device [RocketBuds] on
 12-15 18:19:55.235   791   809 E DynamicSensorHal: return 1 sensors
-12-15 18:19:56.239  1629  1787 I SensorService: Dynamic sensor handle 0x1 connected, type 65536, name RocketBuds
-acme-co$ adb shell dumpsys sensorservice | grep Rocket
-0x00000001) RocketBuds                | BLUETOOTH 1234:1234   | ver: 1 | type: com.google.hardware.sensor.hid_dynamic.headtracker(65536) | perm: n/a | flags: 0x00000020
+12-15 18:19:56.239  1629  1787 I SensorService: Dynamic sensor handle 0x1 connected, type 37, name RocketBuds
+acme-co$ adb shell dumpsys sensorservice | grep head_tracker
+0x00000001) RocketBuds                | BLUETOOTH 1234:5678   | ver: 1 | type: android.sensor.head_tracker(37) | perm: n/a | flags: 0x00000020
 acme-co$
 ```