diff options
Diffstat (limited to 'modules/sensors/dynamic_sensor/HidUtils/HidParser.cpp')
-rw-r--r-- | modules/sensors/dynamic_sensor/HidUtils/HidParser.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/modules/sensors/dynamic_sensor/HidUtils/HidParser.cpp b/modules/sensors/dynamic_sensor/HidUtils/HidParser.cpp index 19aa4291..63210200 100644 --- a/modules/sensors/dynamic_sensor/HidUtils/HidParser.cpp +++ b/modules/sensors/dynamic_sensor/HidUtils/HidParser.cpp @@ -240,8 +240,14 @@ std::vector<HidParser::ReportPacket> HidParser::convertGroupToPacket( auto logical = r.getLogicalRange(); auto physical = r.getPhysicalRange(); - double scale = static_cast<double>((physical.second - physical.first)) - / (logical.second - logical.first); + double scale; + if ((physical.first != physical.second) && + (logical.first != logical.second)) { + scale = static_cast<double>(physical.second - physical.first) + / (logical.second - logical.first); + } else { + scale = (physical.first != 0) ? physical.first : 1.0; + } scale *= r.getExponentValue(); int64_t offset = (physical.first * r.getExponentValue() / scale) - |