From 1d9e1d7caf0df70f3ea7ce823a42696afa050307 Mon Sep 17 00:00:00 2001 From: Daniele Gobbetti Date: Tue, 29 Dec 2015 09:18:02 +0100 Subject: [PATCH] Fix possible race condition when availableSlots == 3 (There are two difficult things...) --- .../gadgetbridge/service/devices/miband/MiBandSupport.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/MiBandSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/MiBandSupport.java index 444cc81b..fe29943f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/MiBandSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/MiBandSupport.java @@ -811,16 +811,17 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport { int iteration = 0; ArrayList alarmList = new ArrayList<>(); for(CalendarEvents.CalendarEvent mEvt : mEvents) { - if (iteration >= availableSlots) { + if (iteration >= availableSlots || iteration > 2) { break; } + int slotToUse = 2 - iteration; Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(mEvt.getBegin()); byte[] calBytes = MiBandDateConverter.calendarToRawBytes(calendar); byte[] alarmMessage = new byte[]{ MiBandService.COMMAND_SET_TIMER, - (byte)(2-iteration), + (byte) slotToUse, (byte) 1, calBytes[0], calBytes[1],