From 3c9fab0471cf54453476ebb0db609a6a92157f45 Mon Sep 17 00:00:00 2001 From: cpfeiffer Date: Mon, 25 Sep 2017 00:03:40 +0200 Subject: [PATCH] Fix fw update notification being stuck at the end Fixes #821 --- .../service/devices/miband2/MiBand2Support.java | 7 ++++++- .../miband2/operations/UpdateFirmwareOperation.java | 6 +++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/MiBand2Support.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/MiBand2Support.java index 318385a1..44579af9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/MiBand2Support.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/MiBand2Support.java @@ -687,13 +687,18 @@ public class MiBand2Support extends AbstractBTLEDeviceSupport { public void onReboot() { try { TransactionBuilder builder = performInitialized("Reboot"); - builder.write(getCharacteristic(MiBand2Service.UUID_CHARACTERISTIC_FIRMWARE), new byte[] { MiBand2Service.COMMAND_FIRMWARE_REBOOT}); + sendReboot(builder); builder.queue(getQueue()); } catch (IOException ex) { LOG.error("Unable to reboot MI", ex); } } + public MiBand2Support sendReboot(TransactionBuilder builder) { + builder.write(getCharacteristic(MiBand2Service.UUID_CHARACTERISTIC_FIRMWARE), new byte[] { MiBand2Service.COMMAND_FIRMWARE_REBOOT}); + return this; + } + @Override public void onHeartRateTest() { try { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/operations/UpdateFirmwareOperation.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/operations/UpdateFirmwareOperation.java index b1d2e4bf..742bb174 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/operations/UpdateFirmwareOperation.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband2/operations/UpdateFirmwareOperation.java @@ -97,6 +97,7 @@ public class UpdateFirmwareOperation extends AbstractMiBand2Operation { UUID characteristicUUID = characteristic.getUuid(); if (fwCControlChar.getUuid().equals(characteristicUUID)) { handleNotificationNotif(characteristic.getValue()); + return true; // don't let anyone else handle it } else { super.onCharacteristicChanged(gatt, characteristic); } @@ -134,7 +135,9 @@ public class UpdateFirmwareOperation extends AbstractMiBand2Operation { } case MiBand2Service.COMMAND_FIRMWARE_CHECKSUM: { if (getFirmwareInfo().getFirmwareType() == FirmwareType.FIRMWARE) { - getSupport().onReboot(); + TransactionBuilder builder = performInitialized("reboot"); + getSupport().sendReboot(builder); + builder.queue(getQueue()); } else { GB.updateInstallNotification(getContext().getString(R.string.updatefirmwareoperation_update_complete), false, 100, getContext()); done(); @@ -142,6 +145,7 @@ public class UpdateFirmwareOperation extends AbstractMiBand2Operation { break; } case MiBand2Service.COMMAND_FIRMWARE_REBOOT: { + LOG.info("Reboot command successfully sent."); GB.updateInstallNotification(getContext().getString(R.string.updatefirmwareoperation_update_complete), false, 100, getContext()); // getSupport().onReboot(); done();