From a90e1be0ee46f2c84d43a785cd719636ff8a22c0 Mon Sep 17 00:00:00 2001 From: "Martin.JM" Date: Mon, 3 Jun 2024 11:42:04 +0200 Subject: [PATCH] Huawei: Generalize HR and SpO2 support --- .../activities/charts/ActivityChartsActivity.java | 2 +- .../devices/AbstractDeviceCoordinator.java | 2 +- .../gadgetbridge/devices/DeviceCoordinator.java | 2 +- .../devices/cmfwatchpro/CmfWatchProCoordinator.java | 2 +- .../gadgetbridge/devices/garmin/GarminCoordinator.java | 2 +- .../huami/amazfitbip3/AmazfitBip3Coordinator.java | 2 +- .../amazfitbip3pro/AmazfitBip3ProCoordinator.java | 2 +- .../devices/huami/zeppos/ZeppOsCoordinator.java | 2 +- .../devices/huawei/HuaweiBRCoordinator.java | 7 ++++++- .../gadgetbridge/devices/huawei/HuaweiCoordinator.java | 2 -- .../devices/huawei/HuaweiLECoordinator.java | 7 ++++++- .../huawei/honorband5/HonorBand5Coordinator.java | 10 ---------- .../huawei/honorband6/HonorBand6Coordinator.java | 10 ---------- .../huawei/honorband7/HonorBand7Coordinator.java | 10 ---------- .../honormagicwatch2/HonorMagicWatch2Coordinator.java | 5 ----- .../huaweiband4pro/HuaweiBand4ProCoordinator.java | 10 ---------- .../huawei/huaweiband6/HuaweiBand6Coordinator.java | 10 ---------- .../huawei/huaweiband7/HuaweiBand7Coordinator.java | 10 ---------- .../huawei/huaweiband8/HuaweiBand8Coordinator.java | 10 ---------- .../huawei/huaweiband9/HuaweiBand9Coordinator.java | 10 ---------- .../huaweiwatchfit/HuaweiWatchFitCoordinator.java | 10 ---------- .../huawei/huaweiwatchgt/HuaweiWatchGTCoordinator.java | 10 ---------- .../huaweiwatchgt2/HuaweiWatchGT2Coordinator.java | 5 ----- .../huaweiwatchgt2e/HuaweiWatchGT2eCoordinator.java | 10 ---------- .../huaweiwatchgt4/HuaweiWatchGT4Coordinator.java | 10 ---------- .../HuaweiWatchUltimateCoordinator.java | 10 ---------- .../devices/sony/wena3/SonyWena3Coordinator.java | 2 +- .../devices/test/TestDeviceCoordinator.java | 4 ++-- .../gadgetbridge/devices/xiaomi/XiaomiCoordinator.java | 4 ++-- .../devices/xiaomi/miwatch/MiWatchLiteCoordinator.java | 3 ++- .../service/devices/huami/HuamiSupport.java | 2 +- 31 files changed, 28 insertions(+), 159 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ActivityChartsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ActivityChartsActivity.java index e53b0d5f8..e8285ef4f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ActivityChartsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ActivityChartsActivity.java @@ -93,7 +93,7 @@ public class ActivityChartsActivity extends AbstractChartsActivity { if (!coordinator.supportsPai()) { tabList.remove("pai"); } - if (!coordinator.supportsSpo2()) { + if (!coordinator.supportsSpo2(device)) { tabList.remove("spo2"); } if (!coordinator.supportsStepCounter()) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinator.java index 5918746af..d8af331ff 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/AbstractDeviceCoordinator.java @@ -466,7 +466,7 @@ public abstract class AbstractDeviceCoordinator implements DeviceCoordinator { } @Override - public boolean supportsSpo2() { + public boolean supportsSpo2(final GBDevice device) { return false; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java index c4dc3dd01..21d1d51fb 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/DeviceCoordinator.java @@ -229,7 +229,7 @@ public interface DeviceCoordinator { * Returns true if SpO2 measurement and fetching is supported by the device * (with this coordinator). */ - boolean supportsSpo2(); + boolean supportsSpo2(GBDevice device); /** * Returns true if heart rate stats (max, resting, manual) measurement and fetching is supported diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/cmfwatchpro/CmfWatchProCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/cmfwatchpro/CmfWatchProCoordinator.java index d69ccb3c9..5ffbd449a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/cmfwatchpro/CmfWatchProCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/cmfwatchpro/CmfWatchProCoordinator.java @@ -266,7 +266,7 @@ public class CmfWatchProCoordinator extends AbstractBLEDeviceCoordinator { } @Override - public boolean supportsSpo2() { + public boolean supportsSpo2(GBDevice device) { return true; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/garmin/GarminCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/garmin/GarminCoordinator.java index fe3003f26..d4f444825 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/garmin/GarminCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/garmin/GarminCoordinator.java @@ -172,7 +172,7 @@ public abstract class GarminCoordinator extends AbstractBLEDeviceCoordinator { } @Override - public boolean supportsSpo2() { + public boolean supportsSpo2(GBDevice device) { return true; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3/AmazfitBip3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3/AmazfitBip3Coordinator.java index 23da3fe5e..4ce5b6a99 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3/AmazfitBip3Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3/AmazfitBip3Coordinator.java @@ -88,7 +88,7 @@ public class AmazfitBip3Coordinator extends HuamiCoordinator { } @Override - public boolean supportsSpo2() { + public boolean supportsSpo2(GBDevice device) { return true; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3pro/AmazfitBip3ProCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3pro/AmazfitBip3ProCoordinator.java index cec23d2b4..28b83bab7 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3pro/AmazfitBip3ProCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitbip3pro/AmazfitBip3ProCoordinator.java @@ -93,7 +93,7 @@ public class AmazfitBip3ProCoordinator extends HuamiCoordinator { } @Override - public boolean supportsSpo2() { + public boolean supportsSpo2(GBDevice device) { return true; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsCoordinator.java index f7968bc78..f0988da63 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/zeppos/ZeppOsCoordinator.java @@ -176,7 +176,7 @@ public abstract class ZeppOsCoordinator extends HuamiCoordinator { } @Override - public boolean supportsSpo2() { + public boolean supportsSpo2(GBDevice device) { return true; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiBRCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiBRCoordinator.java index 4f56a104a..a21586e12 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiBRCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiBRCoordinator.java @@ -220,7 +220,12 @@ public abstract class HuaweiBRCoordinator extends AbstractBLClassicDeviceCoordin @Override public boolean supportsHeartRateMeasurement(GBDevice device) { - return false; + return huaweiCoordinator.supportsHeartRate(device); + } + + @Override + public boolean supportsSpo2(GBDevice device) { + return huaweiCoordinator.supportsSPo2(device); } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiCoordinator.java index 19d123ea9..46d0660a7 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiCoordinator.java @@ -59,7 +59,6 @@ public class HuaweiCoordinator { private final HuaweiCoordinatorSupplier parent; - private boolean transactionCrypted=true; public HuaweiCoordinator(HuaweiCoordinatorSupplier parent) { @@ -340,7 +339,6 @@ public class HuaweiCoordinator { } public boolean supportsHeartRate() { - // TODO: this is not correct return supportsCommandForService(0x07, 0x17); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiLECoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiLECoordinator.java index a7fc8b3a0..280025751 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiLECoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/HuaweiLECoordinator.java @@ -222,7 +222,12 @@ public abstract class HuaweiLECoordinator extends AbstractBLEDeviceCoordinator i @Override public boolean supportsHeartRateMeasurement(GBDevice device) { - return false; + return huaweiCoordinator.supportsHeartRate(device); + } + + @Override + public boolean supportsSpo2(GBDevice device) { + return huaweiCoordinator.supportsSPo2(device); } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/honorband5/HonorBand5Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/honorband5/HonorBand5Coordinator.java index f71fbc175..bb8e82834 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/honorband5/HonorBand5Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/honorband5/HonorBand5Coordinator.java @@ -50,16 +50,6 @@ public class HonorBand5Coordinator extends HuaweiLECoordinator { return Pattern.compile(HuaweiConstants.HO_BAND5_NAME + ".*", Pattern.CASE_INSENSITIVE); } - @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { - return true; - } - - @Override - public boolean supportsSpo2() { - return true; - } - @Override public TimeSampleProvider getSpo2SampleProvider(GBDevice device, DaoSession session) { return new HuaweiSpo2SampleProvider(device, session); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/honorband6/HonorBand6Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/honorband6/HonorBand6Coordinator.java index 17e2a6638..368198f12 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/honorband6/HonorBand6Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/honorband6/HonorBand6Coordinator.java @@ -45,16 +45,6 @@ public class HonorBand6Coordinator extends HuaweiLECoordinator { return Pattern.compile(HuaweiConstants.HO_BAND6_NAME + ".*", Pattern.CASE_INSENSITIVE); } - @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { - return true; - } - - @Override - public boolean supportsSpo2() { - return true; - } - @Override public TimeSampleProvider getSpo2SampleProvider(GBDevice device, DaoSession session) { return new HuaweiSpo2SampleProvider(device, session); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/honorband7/HonorBand7Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/honorband7/HonorBand7Coordinator.java index 266d8a5d0..e281ae3bd 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/honorband7/HonorBand7Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/honorband7/HonorBand7Coordinator.java @@ -45,16 +45,6 @@ public class HonorBand7Coordinator extends HuaweiLECoordinator { return Pattern.compile(HuaweiConstants.HO_BAND7_NAME + ".*", Pattern.CASE_INSENSITIVE); } - @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { - return true; - } - - @Override - public boolean supportsSpo2() { - return true; - } - @Override public TimeSampleProvider getSpo2SampleProvider(GBDevice device, DaoSession session) { return new HuaweiSpo2SampleProvider(device, session); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/honormagicwatch2/HonorMagicWatch2Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/honormagicwatch2/HonorMagicWatch2Coordinator.java index c63b5fa57..2b2d7ba68 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/honormagicwatch2/HonorMagicWatch2Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/honormagicwatch2/HonorMagicWatch2Coordinator.java @@ -54,11 +54,6 @@ public class HonorMagicWatch2Coordinator extends HuaweiBRCoordinator { return Pattern.compile(HuaweiConstants.HO_MAGICWATCH2_NAME + ".*", Pattern.CASE_INSENSITIVE); } - @Override - public boolean supportsSpo2() { - return true; - } - @Override public TimeSampleProvider getSpo2SampleProvider(GBDevice device, DaoSession session) { return new HuaweiSpo2SampleProvider(device, session); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband4pro/HuaweiBand4ProCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband4pro/HuaweiBand4ProCoordinator.java index 4fdcd26c7..14d768797 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband4pro/HuaweiBand4ProCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband4pro/HuaweiBand4ProCoordinator.java @@ -45,16 +45,6 @@ public class HuaweiBand4ProCoordinator extends HuaweiLECoordinator { return Pattern.compile("(" + HuaweiConstants.HU_BAND4_NAME + "|" + HuaweiConstants.HU_BAND4PRO_NAME + ").*", Pattern.CASE_INSENSITIVE); } - @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { - return true; - } - - @Override - public boolean supportsSpo2() { - return true; - } - @Override public TimeSampleProvider getSpo2SampleProvider(GBDevice device, DaoSession session) { return new HuaweiSpo2SampleProvider(device, session); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband6/HuaweiBand6Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband6/HuaweiBand6Coordinator.java index bb2414b0d..87e464cf4 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband6/HuaweiBand6Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband6/HuaweiBand6Coordinator.java @@ -45,16 +45,6 @@ public class HuaweiBand6Coordinator extends HuaweiLECoordinator { return Pattern.compile(HuaweiConstants.HU_BAND6_NAME + ".*", Pattern.CASE_INSENSITIVE); } - @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { - return true; - } - - @Override - public boolean supportsSpo2() { - return true; - } - @Override public TimeSampleProvider getSpo2SampleProvider(GBDevice device, DaoSession session) { return new HuaweiSpo2SampleProvider(device, session); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband7/HuaweiBand7Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband7/HuaweiBand7Coordinator.java index 38fb639a9..2e78ddc1f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband7/HuaweiBand7Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband7/HuaweiBand7Coordinator.java @@ -45,16 +45,6 @@ public class HuaweiBand7Coordinator extends HuaweiLECoordinator { return Pattern.compile(HuaweiConstants.HU_BAND7_NAME + ".*", Pattern.CASE_INSENSITIVE); } - @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { - return true; - } - - @Override - public boolean supportsSpo2() { - return true; - } - @Override public TimeSampleProvider getSpo2SampleProvider(GBDevice device, DaoSession session) { return new HuaweiSpo2SampleProvider(device, session); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband8/HuaweiBand8Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband8/HuaweiBand8Coordinator.java index 576449d13..c76093687 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband8/HuaweiBand8Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband8/HuaweiBand8Coordinator.java @@ -45,16 +45,6 @@ public class HuaweiBand8Coordinator extends HuaweiLECoordinator { return Pattern.compile(HuaweiConstants.HU_BAND8_NAME + ".*", Pattern.CASE_INSENSITIVE); } - @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { - return true; - } - - @Override - public boolean supportsSpo2() { - return true; - } - @Override public TimeSampleProvider getSpo2SampleProvider(GBDevice device, DaoSession session) { return new HuaweiSpo2SampleProvider(device, session); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband9/HuaweiBand9Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband9/HuaweiBand9Coordinator.java index 842f87f20..cf0ebc807 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband9/HuaweiBand9Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiband9/HuaweiBand9Coordinator.java @@ -49,16 +49,6 @@ public class HuaweiBand9Coordinator extends HuaweiLECoordinator { return Pattern.compile(HuaweiConstants.HU_BAND9_NAME + ".*", Pattern.CASE_INSENSITIVE); } - @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { - return true; - } - - @Override - public boolean supportsSpo2() { - return true; - } - @Override public TimeSampleProvider getSpo2SampleProvider(GBDevice device, DaoSession session) { return new HuaweiSpo2SampleProvider(device, session); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchfit/HuaweiWatchFitCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchfit/HuaweiWatchFitCoordinator.java index 5c8ee14e9..8213cdb8c 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchfit/HuaweiWatchFitCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchfit/HuaweiWatchFitCoordinator.java @@ -44,16 +44,6 @@ public class HuaweiWatchFitCoordinator extends HuaweiLECoordinator { return Pattern.compile(HuaweiConstants.HU_WATCHFIT_NAME + ".*", Pattern.CASE_INSENSITIVE); } - @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { - return true; - } - - @Override - public boolean supportsSpo2() { - return true; - } - @Override public TimeSampleProvider getSpo2SampleProvider(GBDevice device, DaoSession session) { return new HuaweiSpo2SampleProvider(device, session); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt/HuaweiWatchGTCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt/HuaweiWatchGTCoordinator.java index c13d2a97a..f1c45dc97 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt/HuaweiWatchGTCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt/HuaweiWatchGTCoordinator.java @@ -45,16 +45,6 @@ public class HuaweiWatchGTCoordinator extends HuaweiLECoordinator { return Pattern.compile(HuaweiConstants.HU_WATCHGT_NAME + ".*", Pattern.CASE_INSENSITIVE); } - @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { - return true; - } - - @Override - public boolean supportsSpo2() { - return true; - } - @Override public TimeSampleProvider getSpo2SampleProvider(GBDevice device, DaoSession session) { return new HuaweiSpo2SampleProvider(device, session); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt2/HuaweiWatchGT2Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt2/HuaweiWatchGT2Coordinator.java index 919a2f449..335e4b65a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt2/HuaweiWatchGT2Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt2/HuaweiWatchGT2Coordinator.java @@ -49,11 +49,6 @@ public class HuaweiWatchGT2Coordinator extends HuaweiBRCoordinator { return Pattern.compile("(" + HuaweiConstants.HU_WATCHGT2_NAME + "|" + HuaweiConstants.HU_WATCHGT2PRO_NAME + ").*", Pattern.CASE_INSENSITIVE); } - @Override - public boolean supportsSpo2() { - return true; - } - @Override public TimeSampleProvider getSpo2SampleProvider(GBDevice device, DaoSession session) { return new HuaweiSpo2SampleProvider(device, session); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt2e/HuaweiWatchGT2eCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt2e/HuaweiWatchGT2eCoordinator.java index 55f17c63c..51802e627 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt2e/HuaweiWatchGT2eCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt2e/HuaweiWatchGT2eCoordinator.java @@ -49,16 +49,6 @@ public class HuaweiWatchGT2eCoordinator extends HuaweiLECoordinator { return Pattern.compile(HuaweiConstants.HU_WATCHGT2E_NAME + ".*", Pattern.CASE_INSENSITIVE); } - @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { - return true; - } - - @Override - public boolean supportsSpo2() { - return true; - } - @Override public TimeSampleProvider getSpo2SampleProvider(GBDevice device, DaoSession session) { return new HuaweiSpo2SampleProvider(device, session); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt4/HuaweiWatchGT4Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt4/HuaweiWatchGT4Coordinator.java index 846463b63..db683a621 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt4/HuaweiWatchGT4Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchgt4/HuaweiWatchGT4Coordinator.java @@ -50,16 +50,6 @@ public class HuaweiWatchGT4Coordinator extends HuaweiBRCoordinator { return Pattern.compile("(" + HuaweiConstants.HU_WATCHGT4_NAME + ").*", Pattern.CASE_INSENSITIVE); } - @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { - return true; - } - - @Override - public boolean supportsSpo2() { - return true; - } - @Override public TimeSampleProvider getSpo2SampleProvider(GBDevice device, DaoSession session) { return new HuaweiSpo2SampleProvider(device, session); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchultimate/HuaweiWatchUltimateCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchultimate/HuaweiWatchUltimateCoordinator.java index 8f4f3a40b..26b541e60 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchultimate/HuaweiWatchUltimateCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huawei/huaweiwatchultimate/HuaweiWatchUltimateCoordinator.java @@ -49,16 +49,6 @@ public class HuaweiWatchUltimateCoordinator extends HuaweiBRCoordinator { return Pattern.compile("(" + HuaweiConstants.HU_WATCHULTIMATE_NAME + ").*", Pattern.CASE_INSENSITIVE); } - @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { - return true; - } - - @Override - public boolean supportsSpo2() { - return true; - } - @Override public TimeSampleProvider getSpo2SampleProvider(GBDevice device, DaoSession session) { return new HuaweiSpo2SampleProvider(device, session); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/wena3/SonyWena3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/wena3/SonyWena3Coordinator.java index 7e818c136..38af0c762 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/wena3/SonyWena3Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/sony/wena3/SonyWena3Coordinator.java @@ -172,7 +172,7 @@ public class SonyWena3Coordinator extends AbstractBLEDeviceCoordinator { } @Override - public boolean supportsSpo2() { + public boolean supportsSpo2(GBDevice device) { return false; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestDeviceCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestDeviceCoordinator.java index d4dea6480..cd9cbe40f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestDeviceCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/test/TestDeviceCoordinator.java @@ -126,7 +126,7 @@ public class TestDeviceCoordinator extends AbstractDeviceCoordinator { @Override public TimeSampleProvider getSpo2SampleProvider(final GBDevice device, final DaoSession session) { - return supportsSpo2() ? new TestSpo2SampleProvider() : super.getSpo2SampleProvider(device, session); + return supportsSpo2(device) ? new TestSpo2SampleProvider() : super.getSpo2SampleProvider(device, session); } @Override @@ -317,7 +317,7 @@ public class TestDeviceCoordinator extends AbstractDeviceCoordinator { } @Override - public boolean supportsSpo2() { + public boolean supportsSpo2(GBDevice device) { return supports(getTestDevice(), TestFeature.SPO2); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/XiaomiCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/XiaomiCoordinator.java index eafc04b1f..eb799fb62 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/XiaomiCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/XiaomiCoordinator.java @@ -251,7 +251,7 @@ public abstract class XiaomiCoordinator extends AbstractBLEDeviceCoordinator { } @Override - public boolean supportsSpo2() { + public boolean supportsSpo2(GBDevice device) { return true; } @@ -413,7 +413,7 @@ public abstract class XiaomiCoordinator extends AbstractBLEDeviceCoordinator { // // Health // - if (supportsStressMeasurement() && supports(device, FEAT_STRESS) && supportsSpo2() && supports(device, FEAT_SPO2)) { + if (supportsStressMeasurement() && supports(device, FEAT_STRESS) && supportsSpo2(device) && supports(device, FEAT_SPO2)) { deviceSpecificSettings.addRootScreen(R.xml.devicesettings_heartrate_sleep_alert_activity_stress_spo2); } else if (supportsStressMeasurement() && supports(device, FEAT_STRESS)) { deviceSpecificSettings.addRootScreen(R.xml.devicesettings_heartrate_sleep_alert_activity_stress); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/miwatch/MiWatchLiteCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/miwatch/MiWatchLiteCoordinator.java index 072a66a6c..1c7b4cca7 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/miwatch/MiWatchLiteCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/miwatch/MiWatchLiteCoordinator.java @@ -27,6 +27,7 @@ import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.XiaomiCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.xiaomi.XiaomiInstallHandler; +import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; public class MiWatchLiteCoordinator extends XiaomiCoordinator { @Override @@ -72,7 +73,7 @@ public class MiWatchLiteCoordinator extends XiaomiCoordinator { } @Override - public boolean supportsSpo2() { + public boolean supportsSpo2(GBDevice device) { return false; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java index 682ee6c3e..5f8c1c6da 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java @@ -1674,7 +1674,7 @@ public abstract class HuamiSupport extends AbstractBTLEDeviceSupport implements this.fetchOperationQueue.add(new FetchPaiOperation(this)); } - if ((dataTypes & RecordedDataTypes.TYPE_SPO2) != 0 && coordinator.supportsSpo2()) { + if ((dataTypes & RecordedDataTypes.TYPE_SPO2) != 0 && coordinator.supportsSpo2(gbDevice)) { this.fetchOperationQueue.add(new FetchSpo2NormalOperation(this)); }