From e3ca3872e1ee663f385234f1326a57e26b63b565 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Thu, 9 Nov 2017 21:59:41 +0100 Subject: [PATCH] Amazfit Bip: Allow watchface flashing and whitelist Firmware 0.0.9.40 --- .../devices/amazfitbip/AmazfitBipFirmwareInfo.java | 5 +++++ .../service/devices/huami/HuamiFirmwareInfo.java | 9 +++++---- .../service/devices/huami/HuamiFirmwareType.java | 1 + 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipFirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipFirmwareInfo.java index 1f5dfe562..d39d2f1c1 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipFirmwareInfo.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/AmazfitBipFirmwareInfo.java @@ -62,12 +62,14 @@ public class AmazfitBipFirmwareInfo extends HuamiFirmwareInfo { crcToVersion.put(3462, "0.0.8.98"); crcToVersion.put(55420, "0.0.9.14"); crcToVersion.put(39465, "0.0.9.26"); + crcToVersion.put(27394, "0.0.9.40"); // resources crcToVersion.put(12586, "RES 0.0.8.74"); crcToVersion.put(34068, "RES 0.0.8.88"); crcToVersion.put(59839, "RES 0.0.8.96-98"); crcToVersion.put(50401, "RES 0.0.9.14-26"); + crcToVersion.put(22051, "RES 0.0.9.40"); // gps crcToVersion.put(61520, "GPS 9367,8f79a91,0,0,"); @@ -99,6 +101,9 @@ public class AmazfitBipFirmwareInfo extends HuamiFirmwareInfo { // TODO: this is certainly not a correct validation, but it works for now return HuamiFirmwareType.FIRMWARE; } + if (ArrayUtils.startsWith(bytes, WATCHFACE_HEADER)) { + return HuamiFirmwareType.WATCHFACE; + } return HuamiFirmwareType.INVALID; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiFirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiFirmwareInfo.java index 8fd72afee..8ff8cbfd5 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiFirmwareInfo.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiFirmwareInfo.java @@ -30,11 +30,12 @@ public abstract class HuamiFirmwareInfo { 0x48, 0x4d, 0x52, 0x45, 0x53 }; + protected static final byte[] WATCHFACE_HEADER = new byte[]{ + 0x48, 0x4d, 0x44, 0x49, 0x41, 0x4c + }; + protected static final byte[] FT_HEADER = new byte[]{ // HMZK font file (*.ft, *.ft.xx) - 0x48, - 0x4d, - 0x5a, - 0x4b + 0x48, 0x4d, 0x5a, 0x4b }; private HuamiFirmwareType firmwareType = HuamiFirmwareType.FIRMWARE; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiFirmwareType.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiFirmwareType.java index b3375249c..810479246 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiFirmwareType.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiFirmwareType.java @@ -24,6 +24,7 @@ public enum HuamiFirmwareType { GPS((byte) 3), GPS_CEP((byte) 4), GPS_ALMANAC((byte)5), + WATCHFACE((byte)8), INVALID(Byte.MIN_VALUE); private final byte value;