dynamic_sensor: Fix report item offset calculation.
Bug: 207008609
Test: Verified dynamic sensor sampling with proposed standard Android
head tracker.
Change-Id: I163b79c2c99f02961adebcb5dcb7e39603944e24
diff --git a/modules/sensors/dynamic_sensor/HidUtils/HidParser.cpp b/modules/sensors/dynamic_sensor/HidUtils/HidParser.cpp
index 28d87d9..19aa429 100644
--- a/modules/sensors/dynamic_sensor/HidUtils/HidParser.cpp
+++ b/modules/sensors/dynamic_sensor/HidUtils/HidParser.cpp
@@ -240,10 +240,12 @@
auto logical = r.getLogicalRange();
auto physical = r.getPhysicalRange();
- int64_t offset = physical.first - logical.first;
double scale = static_cast<double>((physical.second - physical.first))
/ (logical.second - logical.first);
scale *= r.getExponentValue();
+ int64_t offset =
+ (physical.first * r.getExponentValue() / scale) -
+ logical.first;
ReportItem digest = {
.usage = r.getFullUsage(),