From 18fc29fae7185e80d5203343ca492bcda7c598a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Rebelo?= Date: Fri, 6 Oct 2023 23:57:14 +0100 Subject: [PATCH] Mi Band 8: Save number of pending alarm acks (wip) --- .../xiaomi/services/XiaomiScheduleService.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiScheduleService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiScheduleService.java index 7f353b64f..a10e757ff 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiScheduleService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiScheduleService.java @@ -75,6 +75,8 @@ public class XiaomiScheduleService extends AbstractXiaomiService { // Map of alarm position to Alarm, as returned by the band private final Map watchAlarms = new HashMap<>(); + private int pendingAlarmAcks = 0; + public XiaomiScheduleService(final XiaomiSupport support) { super(support); } @@ -85,6 +87,14 @@ public class XiaomiScheduleService extends AbstractXiaomiService { case CMD_ALARMS_GET: handleAlarms(cmd.getSchedule().getAlarms()); break; + case CMD_ALARMS_CREATE: + pendingAlarmAcks--; + if (pendingAlarmAcks <= 0) { + final TransactionBuilder builder = getSupport().createTransactionBuilder("request alarms after all acks"); + requestAlarms(builder); + builder.queue(getSupport().getQueue()); + } + break; case CMD_WORLD_CLOCKS_GET: handleWorldClocks(cmd.getSchedule().getWorldClocks()); break; @@ -208,6 +218,7 @@ public class XiaomiScheduleService extends AbstractXiaomiService { .build() ); } else { + pendingAlarmAcks++; schedule.setCreateAlarm(alarmDetails); }