From b7b96b5ab5828638c364d742247811059871a829 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Sun, 10 Dec 2017 20:30:27 +0100 Subject: [PATCH] Amazfit Bip/Cor: for untested installable files, at least display the type (res/font/gps/watchface) For res the version is also displayed (the same as noted in the wiki) --- .../devices/huami/HuamiFirmwareInfo.java | 34 +++++++++++++++++-- .../devices/miband2/Mi2FirmwareInfo.java | 2 +- 2 files changed, 33 insertions(+), 3 deletions(-) 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 6f1eee5e9..89fb07bf3 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 @@ -45,7 +45,37 @@ public abstract class HuamiFirmwareInfo { public String toVersion(int crc16) { String version = getCrcMap().get(crc16); if (version == null) { - version = searchVersion(bytes); + if (firmwareType == HuamiFirmwareType.FIRMWARE) { + version = searchFirmwareVersion(bytes); + } + else if (firmwareType == HuamiFirmwareType.RES) { + version = "RES " + Integer.toString(bytes[5]); + } + else if (firmwareType == HuamiFirmwareType.RES_NEW) { + version = "RES " + Integer.toString(bytes[14]); + } + } + if (version == null) { + switch (firmwareType) { + case FIRMWARE: + version = "(unknown)"; + break; + case FONT: + version = "(unknown font)"; + break; + case GPS: + version = "(unknown GPS)"; + break; + case GPS_CEP: + version = "(unknown CEP)"; + break; + case GPS_ALMANAC: + version = "(unknown ALM)"; + break; + case WATCHFACE: + version = "(unknown watchface)"; + break; + } } return version; } @@ -102,7 +132,7 @@ public abstract class HuamiFirmwareInfo { protected abstract HuamiFirmwareType determineFirmwareType(byte[] bytes); - protected String searchVersion(byte[] fwbytes) { + protected String searchFirmwareVersion(byte[] fwbytes) { ByteBuffer buf = ByteBuffer.wrap(fwbytes); buf.order(ByteOrder.BIG_ENDIAN); while (buf.remaining() > 3) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/Mi2FirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/Mi2FirmwareInfo.java index 7efa68f75..e5ac63dae 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/Mi2FirmwareInfo.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/Mi2FirmwareInfo.java @@ -87,7 +87,7 @@ public class Mi2FirmwareInfo extends HuamiFirmwareInfo { } @Override - protected String searchVersion(byte[] fwbytes) { + protected String searchFirmwareVersion(byte[] fwbytes) { // does not work for Mi Band 2 return null; }