summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-09-12 03:19:17 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2022-09-12 03:19:17 +0000
commit8002a2660e2d663770d74ea99a0875bacb89ae1d (patch)
treefb996429d375dd50d032eb51f8169e83c1a0f879
parent85a937782e4752d49f6bd0b2184ec56bc15f8ea0 (diff)
parent21cfd0feee4389c7c723cc81944f486c5a31b000 (diff)
downloadlibhardware-gki13-boot-release.tar.gz
Merge "Snap for 9051340 from dcbe8650b6ac75485dacd38f66263373c6e4bf82 to gki13-boot-release" into gki13-boot-releasegki13-boot-release
-rw-r--r--modules/sensors/dynamic_sensor/HidRawSensor.cpp5
-rw-r--r--modules/sensors/dynamic_sensor/HidRawSensor.h6
2 files changed, 8 insertions, 3 deletions
diff --git a/modules/sensors/dynamic_sensor/HidRawSensor.cpp b/modules/sensors/dynamic_sensor/HidRawSensor.cpp
index 3759e7e9..c90f4f1a 100644
--- a/modules/sensors/dynamic_sensor/HidRawSensor.cpp
+++ b/modules/sensors/dynamic_sensor/HidRawSensor.cpp
@@ -1066,7 +1066,10 @@ bool HidRawSensor::getHeadTrackerEventData(const std::vector<uint8_t> &message,
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 074482a8..e4564a0f 100644
--- a/modules/sensors/dynamic_sensor/HidRawSensor.h
+++ b/modules/sensors/dynamic_sensor/HidRawSensor.h
@@ -154,9 +154,11 @@ private:
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
}