From c3d55127fec546e2c2de6150a2774b47dfb42170 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Thu, 11 Nov 2021 20:20:43 +0100 Subject: [PATCH] Bugfix: running sensor data total is distance is UINT_32. --- .../de/dennisguse/opentracks/util/BluetoothUtilsTest.java | 6 +++--- .../java/de/dennisguse/opentracks/util/BluetoothUtils.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/util/BluetoothUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/util/BluetoothUtilsTest.java index 948e62e72..4c5e9d4b9 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/util/BluetoothUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/util/BluetoothUtilsTest.java @@ -93,8 +93,8 @@ public class BluetoothUtilsTest { @Test public void parseRunningSpeedAndCadence_with_distance() { - BluetoothGattCharacteristic characteristic = new BluetoothGattCharacteristic(BluetoothUtils.CYCLING_SPEED_CADENCE_MEASUREMENT_CHAR_UUID, 0, 0); - characteristic.setValue(new byte[]{2, 0, 5, 80, 12, 1}); + BluetoothGattCharacteristic characteristic = new BluetoothGattCharacteristic(BluetoothUtils.RUNNING_RUNNING_SPEED_CADENCE_CHAR_UUID, 0, 0); + characteristic.setValue(new byte[]{2, 0, 5, 80, (byte) 0xFF, (byte) 0xFF, 0, 1}); // when SensorDataRunning sensor = BluetoothUtils.parseRunningSpeedAndCadence("address", "sensorName", characteristic); @@ -102,6 +102,6 @@ public class BluetoothUtilsTest { // then assertEquals(Speed.of(5), sensor.getSpeed()); assertEquals(80, sensor.getCadence(), 0.01); - assertEquals(Distance.of(26.8), sensor.getTotalDistance()); + assertEquals(Distance.of(6553.5 + 1677721.6), sensor.getTotalDistance()); } } \ No newline at end of file diff --git a/src/main/java/de/dennisguse/opentracks/util/BluetoothUtils.java b/src/main/java/de/dennisguse/opentracks/util/BluetoothUtils.java index 4a9b72687..8df73aca6 100644 --- a/src/main/java/de/dennisguse/opentracks/util/BluetoothUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/BluetoothUtils.java @@ -175,8 +175,8 @@ public class BluetoothUtils { index += 2; } - if (hasTotalDistance && valueLength - index >= 2) { - totalDistance = Distance.ofDM(characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT16, index)); + if (hasTotalDistance && valueLength - index >= 4) { + totalDistance = Distance.ofDM(characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT32, index)); } return new SensorDataRunning(address, sensorName, speed, cadence, totalDistance);