From 07357305cb7142b8d07d90de88f19f7381ab2424 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Sat, 20 May 2023 20:44:18 +0100 Subject: [PATCH] Huami: Unify recorded data fetching in HuamiSupport --- .../devices/huami/HuamiCoordinator.java | 4 ++++ .../huami/miband2/MiBand2Coordinator.java | 5 +++++ .../huami/miband2/MiBand2HRXCoordinator.java | 5 +++++ .../devices/huami/Huami2021Support.java | 22 ------------------- .../service/devices/huami/HuamiSupport.java | 20 ++++++++++++++--- .../huami/amazfitbip/AmazfitBipSupport.java | 18 --------------- 6 files changed, 31 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiCoordinator.java index d8a094c6b..7935085f3 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiCoordinator.java @@ -515,6 +515,10 @@ public abstract class HuamiCoordinator extends AbstractBLEDeviceCoordinator { return 22; // At least, Mi Fit still allows more } + public boolean supportsDebugLogs() { + return true; + } + public List getVibrationPatternNotificationTypes(final GBDevice device) { return Arrays.asList( HuamiVibrationPatternNotificationType.APP_ALERTS, diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2Coordinator.java index 446cf4dc2..8833cffe1 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2Coordinator.java @@ -79,6 +79,11 @@ public class MiBand2Coordinator extends HuamiCoordinator { return 0; } + @Override + public boolean supportsDebugLogs() { + return false; + } + @Override public int[] getSupportedDeviceSpecificSettings(GBDevice device) { return new int[]{ diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2HRXCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2HRXCoordinator.java index a39e23e54..61c494969 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2HRXCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband2/MiBand2HRXCoordinator.java @@ -85,6 +85,11 @@ public class MiBand2HRXCoordinator extends HuamiCoordinator { return false; } + @Override + public boolean supportsDebugLogs() { + return false; + } + @Override public int[] getSupportedDeviceSpecificSettings(GBDevice device) { return new int[]{ diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/Huami2021Support.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/Huami2021Support.java index 765e63c0f..e8f044149 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/Huami2021Support.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/Huami2021Support.java @@ -333,28 +333,6 @@ public abstract class Huami2021Support extends HuamiSupport { calendarService.deleteEvent(type, id); } - @Override - public void onFetchRecordedData(final int dataTypes) { - try { - // FIXME: currently only one data type supported, these are meant to be flags - switch (dataTypes) { - case RecordedDataTypes.TYPE_ACTIVITY: - new FetchActivityOperation(this).perform(); - break; - case RecordedDataTypes.TYPE_GPS_TRACKS: - new FetchSportsSummaryOperation(this, 1).perform(); - break; - case RecordedDataTypes.TYPE_DEBUGLOGS: - new HuamiFetchDebugLogsOperation(this).perform(); - break; - default: - LOG.warn("fetching multiple data types at once is not supported yet"); - } - } catch (final Exception e) { - LOG.error("Unable to fetch recorded data types {}", dataTypes, e); - } - } - @Override public void onHeartRateTest() { // TODO onHeartRateTest - what modes? this only works sometimes 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 9fb7b3a1b..79c188f9f 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 @@ -116,6 +116,9 @@ import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample; import nodomain.freeyourgadget.gadgetbridge.model.ActivityUser; import nodomain.freeyourgadget.gadgetbridge.model.Alarm; import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec; +import nodomain.freeyourgadget.gadgetbridge.model.RecordedDataTypes; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.operations.FetchSportsSummaryOperation; +import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.operations.HuamiFetchDebugLogsOperation; import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.zeppos.services.ZeppOsCannedMessagesService; import nodomain.freeyourgadget.gadgetbridge.util.calendar.CalendarEvent; import nodomain.freeyourgadget.gadgetbridge.util.calendar.CalendarManager; @@ -1640,10 +1643,21 @@ public abstract class HuamiSupport extends AbstractBTLEDeviceSupport implements @Override public void onFetchRecordedData(int dataTypes) { + final HuamiCoordinator coordinator = getCoordinator(); + try { - new FetchActivityOperation(this).perform(); - } catch (IOException ex) { - LOG.error("Unable to fetch activity data", ex); + // FIXME: currently only one data type supported, these are meant to be flags + if (dataTypes == RecordedDataTypes.TYPE_ACTIVITY) { + new FetchActivityOperation(this).perform(); + } else if (dataTypes == RecordedDataTypes.TYPE_GPS_TRACKS && coordinator.supportsActivityTracks()) { + new FetchSportsSummaryOperation(this, 1).perform(); + } else if (dataTypes == RecordedDataTypes.TYPE_DEBUGLOGS && coordinator.supportsDebugLogs()) { + new HuamiFetchDebugLogsOperation(this).perform(); + } else { + LOG.warn("fetching multiple data types at once is not supported yet"); + } + } catch (final IOException ex) { + LOG.error("Unable to fetch recorded data types" + dataTypes, ex); } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipSupport.java index 858e524c1..414768698 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitbip/AmazfitBipSupport.java @@ -80,24 +80,6 @@ public class AmazfitBipSupport extends HuamiSupport { return this; } - @Override - public void onFetchRecordedData(int dataTypes) { - try { - // FIXME: currently only one data type supported, these are meant to be flags - if (dataTypes == RecordedDataTypes.TYPE_ACTIVITY) { - new FetchActivityOperation(this).perform(); - } else if (dataTypes == RecordedDataTypes.TYPE_GPS_TRACKS) { - new FetchSportsSummaryOperation(this, 1).perform(); - } else if (dataTypes == RecordedDataTypes.TYPE_DEBUGLOGS) { - new HuamiFetchDebugLogsOperation(this).perform(); - } else { - LOG.warn("fetching multiple data types at once is not supported yet"); - } - } catch (IOException ex) { - LOG.error("Unable to fetch recorded data types" + dataTypes, ex); - } - } - @Override public void phase2Initialize(TransactionBuilder builder) { super.phase2Initialize(builder);