Based on the profile version which is 0x2000700 for both the bug reporter on a Mi Band 1 and for me on a Mi Band 1s
this either expects packets with length 20 (old firmwares) or 16 for HR enabled bands and 18 for non-HR enabled bands (new firmwares)
We check for profile version >=0x02000000 which is guessed, that needs confirmation for older firmwares and untested ones
Fixes#915
(while performing the same, known to be working firmware update for Mi1A)
Result: double firmware update procedure works on Mi1A.
Also updated FirmwareTest. Perform all tests not only in the test itself,
but also at runtime before doing the actual update.
Further:
- fix setting of firmwareInfoSent state variable, which prevented installation
of the section firmware
- make one string translatable
Also supports double firmware upgrade for Mi1S.
- so far, only hr firmware upgrade is tested for 1S
- adds junit testcases for firmware recognition and handling
This avoids a lot of problems because java
- does not know unsigned values
- jvm and dalvic do not internally support byte and short
- sqlite does not know them either
I hope I didn't break firmware upgrades on some Mi 1 models
other than mine (my hardware revision is 2).
Upgrades for Mi 1S are currently disabled, we need some brave
souls who can help us test this.
Closes#173
Also see: #169