The new version scheme and the fact that recent Bip and Cor firmwares are
impossible to distinguish by comparing data at fixed offsets make it necessary
to dynamically search for sequences of data. We do this now by searching for
"Amazfit Bip Watch" and "Amazfit Cor".
This allows the register to be registered only when the device is connected,
and also toggling without completely exiting the application.
The logic in the receiver itself was simplified and an explanation added
to the preference summary.
This also improves firmware/RES probing to distinguish Mi Band 2/3 firmware files and Mi Band 3/Bip RES files.
Notes:
- Firmware flashing should might but is untested
- This basicall runs off the Amazfit Bip code which will probably incorrect (Mi Band 3 is proabably something between the Bip and the Mi Band 2)
Automatically connect at boot if gadgetbridge is configured to start at
boot and to attempt an automatic connection when bluetooth is available
Fixes#693 and fixes#891
According to the documentation the current call state might be not correctly
contained in the extra, and using getCallState() is the right thing to do
Might help for #799 (and #756)
Since the device object (local to DCS) is set to null on disconnect, the
notification could not get updated from within the receiver. DeviceManager
does not have such issues.
The problem appeared with 3f421facab
This speeds up things up a lot. We should still somehow limit it, but not by waiting
after one PPoGATT ACK after each complete PP package.
This leaves the old mode untouched, so we have something to compare
Newer Cor and Bip firmwares seem to be indistinguishable,
What we do for now is use the version we already search for say
Bip firmwares are valid from 0.0.8.00 to < 1.0.5.00 (lastest as of today is 0.1.0.39)
Cor firmwares are valid from 1.0.5.00
This should work for a while.
Fixes#1095
This fixes notification text not displaying when a short vibration
pattern is set.
If the notification text is sent while the icon is still visible
it is not displayed. We need to wait until it disapears (about 4 seconds)
This basically makes sure that
- only one gatt write operation is in progress
- data is not sent from within callbacks to prevent a deadlock when waiting for a nre callback that cant happen yet beause the current has not been retuned
This will eliminate the need for the Phone being a GATT Server and might lead
to better connection stability once it is ready.
NOTE: Enabling this in the code (change clientOnly=true in PebbleLESupport)
will only work for a few packets before in totally breaks, so only enable
if you want to fix it :P