From e9e48e4a793d1404a57d9cfac64d3de3e7fbcaf5 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sun, 13 Jun 2021 19:16:51 +0200 Subject: [PATCH] Bugfix: cycling sensors report wheel count as UINT32 - data type must be long, int is too small. Also forgot to fix tests. Fixes #810. --- .../opentracks/content/sensor/SensorDataCyclingTest.java | 2 +- .../java/de/dennisguse/opentracks/util/UintUtilsTest.java | 2 +- .../opentracks/content/sensor/SensorDataCycling.java | 6 +++--- src/main/java/de/dennisguse/opentracks/util/UintUtils.java | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/sensor/SensorDataCyclingTest.java b/src/androidTest/java/de/dennisguse/opentracks/content/sensor/SensorDataCyclingTest.java index d18eb079b..bb8cfae24 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/sensor/SensorDataCyclingTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/sensor/SensorDataCyclingTest.java @@ -111,7 +111,7 @@ public class SensorDataCyclingTest { @Test public void compute_speed_rollOverCount() { // given - SensorDataCycling.DistanceSpeed previous = new SensorDataCycling.DistanceSpeed("sensorAddress", "sensorName", UintUtils.UINT16_MAX - 1, 1024); + SensorDataCycling.DistanceSpeed previous = new SensorDataCycling.DistanceSpeed("sensorAddress", "sensorName", UintUtils.UINT32_MAX - 1, 1024); SensorDataCycling.DistanceSpeed current = new SensorDataCycling.DistanceSpeed("sensorAddress", "sensorName", 0, 2048); // when diff --git a/src/androidTest/java/de/dennisguse/opentracks/util/UintUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/util/UintUtilsTest.java index f47c2ca33..68c7c47c9 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/util/UintUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/util/UintUtilsTest.java @@ -18,6 +18,6 @@ public class UintUtilsTest { @Test public void realData() { - assertEquals(3, UintUtils.diff(381616, 381615, UintUtils.UINT32_MAX)); + assertEquals(1, UintUtils.diff(381616, 381615, UintUtils.UINT32_MAX)); } } \ No newline at end of file diff --git a/src/main/java/de/dennisguse/opentracks/content/sensor/SensorDataCycling.java b/src/main/java/de/dennisguse/opentracks/content/sensor/SensorDataCycling.java index 314dbc621..c085d81fa 100644 --- a/src/main/java/de/dennisguse/opentracks/content/sensor/SensorDataCycling.java +++ b/src/main/java/de/dennisguse/opentracks/content/sensor/SensorDataCycling.java @@ -94,7 +94,7 @@ public final class SensorDataCycling { public static class DistanceSpeed extends SensorData { - private final Integer wheelRevolutionsCount; // UINT32 + private final Long wheelRevolutionsCount; // UINT32 private final Integer wheelRevolutionsTime; // UINT16; 1/1024s public DistanceSpeed(String sensorAddress) { @@ -103,7 +103,7 @@ public final class SensorDataCycling { this.wheelRevolutionsTime = null; } - public DistanceSpeed(String sensorAddress, String sensorName, int wheelRevolutionsCount, int wheelRevolutionsTime) { + public DistanceSpeed(String sensorAddress, String sensorName, long wheelRevolutionsCount, int wheelRevolutionsTime) { super(sensorAddress, sensorName); this.wheelRevolutionsCount = wheelRevolutionsCount; this.wheelRevolutionsTime = wheelRevolutionsTime; @@ -113,7 +113,7 @@ public final class SensorDataCycling { return wheelRevolutionsCount != null && wheelRevolutionsTime != null; } - public int getWheelRevolutionsCount() { + public long getWheelRevolutionsCount() { return wheelRevolutionsCount; } diff --git a/src/main/java/de/dennisguse/opentracks/util/UintUtils.java b/src/main/java/de/dennisguse/opentracks/util/UintUtils.java index 5e252fc36..6d9c321eb 100644 --- a/src/main/java/de/dennisguse/opentracks/util/UintUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/UintUtils.java @@ -18,7 +18,7 @@ public class UintUtils { throw new RuntimeException("a or b cannot be less than zero."); } if (a > UINT_MAX || b > UINT_MAX) { - throw new RuntimeException("a or b are outside of the allowed range." + a + " " + b); + throw new RuntimeException("a or b are outside of the allowed range."); } if (a >= b) {