diff --git a/README_TESTED_SENSORS.md b/README_TESTED_SENSORS.md index d37fe7596..6e03e5eb6 100644 --- a/README_TESTED_SENSORS.md +++ b/README_TESTED_SENSORS.md @@ -19,6 +19,9 @@ However, often only one value is provided. ### Speed * Garmin Speed Sensor 2 + This sensor reports speed data as cadence. + A workaround is in place. + * Wahoo Speed (Model: WFRPMSPD) ### Cadence diff --git a/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothConnectionManager.java b/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothConnectionManager.java index c518a9c59..fa44df1ef 100644 --- a/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothConnectionManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/sensors/BluetoothConnectionManager.java @@ -220,7 +220,13 @@ public abstract class BluetoothConnectionManager { protected SensorDataCycling.DistanceSpeed parsePayload(String sensorName, String address, BluetoothGattCharacteristic characteristic) { SensorDataCycling.CadenceAndSpeed cadenceAndSpeed = BluetoothUtils.parseCyclingCrankAndWheel(address, sensorName, characteristic); if (cadenceAndSpeed != null) { - return cadenceAndSpeed.getDistanceSpeed(); + // Workaround for Garmin Speed Sensor 2: provides cadence instead of speed + SensorDataCycling.DistanceSpeed result = cadenceAndSpeed.getDistanceSpeed(); + if (result == null && cadenceAndSpeed.getCadence() != null) { + result = new SensorDataCycling.DistanceSpeed(cadenceAndSpeed.getSensorAddress(), cadenceAndSpeed.getSensorName(), (int) cadenceAndSpeed.getCadence().getCrankRevolutionsCount(), cadenceAndSpeed.getCadence().getCrankRevolutionsTime()); + } + + return result; } return null; }