diff --git a/src/androidTest/java/de/dennisguse/opentracks/sensors/BluetoothUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/sensors/BluetoothUtilsTest.java index fd0f00014..6f37ea39a 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/sensors/BluetoothUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/sensors/BluetoothUtilsTest.java @@ -9,6 +9,7 @@ import org.junit.Test; import de.dennisguse.opentracks.data.models.Cadence; import de.dennisguse.opentracks.data.models.Distance; +import de.dennisguse.opentracks.data.models.HeartRate; import de.dennisguse.opentracks.data.models.Speed; import de.dennisguse.opentracks.sensors.sensorData.SensorDataCyclingCadenceAndDistanceSpeed; import de.dennisguse.opentracks.sensors.sensorData.SensorDataCyclingPower; @@ -23,10 +24,10 @@ public class BluetoothUtilsTest { characteristic.setValue(new byte[]{0x02, 0x3C}); // when - int heartRate = BluetoothUtils.parseHeartRate(characteristic); + HeartRate heartRate = BluetoothUtils.parseHeartRate(characteristic); // then - assertEquals(60, heartRate); + assertEquals(HeartRate.of(60), heartRate); } @Test @@ -36,10 +37,10 @@ public class BluetoothUtilsTest { characteristic.setValue(new byte[]{0x01, 0x01, 0x01}); // when - int heartRate = BluetoothUtils.parseHeartRate(characteristic); + HeartRate heartRate = BluetoothUtils.parseHeartRate(characteristic); // then - assertEquals(257, heartRate); + assertEquals(HeartRate.of(257), heartRate); } @Test diff --git a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothRemoteSensorManagerHeartRate.java b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothRemoteSensorManagerHeartRate.java index 54b2b317c..fa831edcf 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothRemoteSensorManagerHeartRate.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothRemoteSensorManagerHeartRate.java @@ -20,8 +20,8 @@ public class BluetoothRemoteSensorManagerHeartRate extends BluetoothConnectionMa @Override protected SensorDataHeartRate parsePayload(@NonNull ServiceMeasurementUUID serviceMeasurementUUID, String sensorName, String address, BluetoothGattCharacteristic characteristic) { - Integer heartRate = BluetoothUtils.parseHeartRate(characteristic); + HeartRate heartRate = BluetoothUtils.parseHeartRate(characteristic); - return heartRate != null ? new SensorDataHeartRate(address, sensorName, HeartRate.of(heartRate)) : null; + return heartRate != null ? new SensorDataHeartRate(address, sensorName, heartRate) : null; } } diff --git a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothUtils.java b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothUtils.java index 41c99b2af..81af15d3e 100644 --- a/src/main/java/de/dennisguse/opentracks/sensors/BluetoothUtils.java +++ b/src/main/java/de/dennisguse/opentracks/sensors/BluetoothUtils.java @@ -30,6 +30,7 @@ import java.util.UUID; import de.dennisguse.opentracks.data.models.Cadence; import de.dennisguse.opentracks.data.models.Distance; +import de.dennisguse.opentracks.data.models.HeartRate; import de.dennisguse.opentracks.data.models.Power; import de.dennisguse.opentracks.data.models.Speed; import de.dennisguse.opentracks.sensors.sensorData.SensorDataCyclingCadence; @@ -101,7 +102,7 @@ public class BluetoothUtils { return BluetoothUtils.getAdapter(context) != null; } - public static Integer parseHeartRate(BluetoothGattCharacteristic characteristic) { + public static HeartRate parseHeartRate(BluetoothGattCharacteristic characteristic) { //DOCUMENTATION https://www.bluetooth.com/wp-content/uploads/Sitecore-Media-Library/Gatt/Xml/Characteristics/org.bluetooth.characteristic.heart_rate_measurement.xml byte[] raw = characteristic.getValue(); if (raw.length == 0) { @@ -110,10 +111,10 @@ public class BluetoothUtils { boolean formatUINT16 = ((raw[0] & 0x1) == 1); if (formatUINT16 && raw.length >= 3) { - return characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT16, 1); + return HeartRate.of(characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT16, 1)); } if (!formatUINT16 && raw.length >= 2) { - return characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8, 1); + return HeartRate.of(characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8, 1)); } return null;