diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/operations/AmazfitBipUpdateFirmwareOperation.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/operations/AmazfitBipUpdateFirmwareOperation.java new file mode 100644 index 00000000..0f115dd4 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/amazfitbip/operations/AmazfitBipUpdateFirmwareOperation.java @@ -0,0 +1,49 @@ +/* Copyright (C) 2016-2017 Carsten Pfeiffer + + This file is part of Gadgetbridge. + + Gadgetbridge is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + Gadgetbridge is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . */ +package nodomain.freeyourgadget.gadgetbridge.service.devices.amazfitbip.operations; + +import android.net.Uri; +import android.widget.Toast; + +import java.io.IOException; + +import nodomain.freeyourgadget.gadgetbridge.devices.amazfitbip.AmazfitBipFWHelper; +import nodomain.freeyourgadget.gadgetbridge.service.devices.amazfitbip.AmazfitBipSupport; +import nodomain.freeyourgadget.gadgetbridge.service.devices.miband2.operations.UpdateFirmwareOperation; +import nodomain.freeyourgadget.gadgetbridge.util.GB; + +public class AmazfitBipUpdateFirmwareOperation extends UpdateFirmwareOperation { + public AmazfitBipUpdateFirmwareOperation(Uri uri, AmazfitBipSupport support) { + super(uri, support); + } + + @Override + protected void doPerform() throws IOException { + AmazfitBipFWHelper mFwHelper = new AmazfitBipFWHelper(uri, getContext()); + + firmwareInfo = mFwHelper.getFirmwareInfo(); + if (!firmwareInfo.isGenerallyCompatibleWith(getDevice())) { + throw new IOException("Firmware is not compatible with the given device: " + getDevice().getAddress()); + } + + if (!sendFwInfo()) { + displayMessage(getContext(), "Error sending firmware info, aborting.", Toast.LENGTH_LONG, GB.ERROR); + done(); + } + //the firmware will be sent by the notification listener if the band confirms that the metadata are ok. + } +} 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 1516b995..787d3927 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 @@ -48,7 +48,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.Prefs; public class UpdateFirmwareOperation extends AbstractMiBand2Operation { private static final Logger LOG = LoggerFactory.getLogger(UpdateFirmwareOperation.class); - private final Uri uri; + protected final Uri uri; protected final BluetoothGattCharacteristic fwCControlChar; protected final BluetoothGattCharacteristic fwCDataChar; protected final Prefs prefs = GBApplication.getPrefs(); @@ -82,7 +82,7 @@ public class UpdateFirmwareOperation extends AbstractMiBand2Operation { //the firmware will be sent by the notification listener if the band confirms that the metadata are ok. } - private void done() { + protected void done() { LOG.info("Operation done."); operationFinished(); unsetBusy(); @@ -163,7 +163,7 @@ public class UpdateFirmwareOperation extends AbstractMiBand2Operation { done(); } } - private void displayMessage(Context context, String message, int duration, int severity) { + protected void displayMessage(Context context, String message, int duration, int severity) { getSupport().handleGBDeviceEvent(new GBDeviceEventDisplayMessage(message, duration, severity)); }