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 6ffda8b6d..3e3f77ee3 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 @@ -72,6 +72,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.concurrent.TimeUnit; import java.util.regex.Pattern; import nodomain.freeyourgadget.gadgetbridge.BuildConfig; @@ -908,6 +909,18 @@ public abstract class Huami2021Support extends HuamiSupport { return this; } + @Override + public byte[] getTimeBytes(final Calendar calendar, final TimeUnit precision) { + final byte[] bytes = BLETypeConversions.shortCalendarToRawBytes(calendar); + + if (precision != TimeUnit.MINUTES && precision != TimeUnit.SECONDS) { + throw new IllegalArgumentException("Unsupported precision, only MINUTES and SECONDS are supported"); + } + final byte seconds = precision == TimeUnit.SECONDS ? fromUint8(calendar.get(Calendar.SECOND)) : 0; + final byte tz = BLETypeConversions.mapTimeZone(calendar, BLETypeConversions.TZ_FLAG_INCLUDE_DST_IN_TZ); + return BLETypeConversions.join(bytes, new byte[]{seconds, tz}); + } + @Override public Huami2021Support setCurrentTimeWithService(TransactionBuilder builder) { // It seems that the format sent to the Current Time characteristic changed in newer devices