diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/Huami2021Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/Huami2021Coordinator.java
index 0abd61d80..e722c9c8c 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/Huami2021Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/Huami2021Coordinator.java
@@ -16,6 +16,9 @@
along with this program. If not, see . */
package nodomain.freeyourgadget.gadgetbridge.devices.huami;
+import android.content.Context;
+import android.net.Uri;
+
import androidx.annotation.NonNull;
import org.apache.commons.lang3.ArrayUtils;
@@ -37,11 +40,15 @@ import nodomain.freeyourgadget.gadgetbridge.entities.Device;
import nodomain.freeyourgadget.gadgetbridge.entities.HuamiExtendedActivitySampleDao;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryParser;
+import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.AbstractHuami2021FWInstallHandler;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.zeppos.services.ZeppOsConfigService;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiLanguageType;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiVibrationPatternNotificationType;
public abstract class Huami2021Coordinator extends HuamiCoordinator {
+ @Override
+ public abstract AbstractHuami2021FWInstallHandler findInstallHandler(final Uri uri, final Context context);
+
@Override
public boolean supportsHeartRateMeasurement(final GBDevice device) {
return true;
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiFWHelper.java
index cd8651b84..c089c41ea 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiFWHelper.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/HuamiFWHelper.java
@@ -28,7 +28,6 @@ import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWHelper;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.AbstractHuamiFirmwareInfo;
-import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareInfo;
import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.HuamiFirmwareType;
public abstract class HuamiFWHelper extends AbstractMiBandFWHelper {
@@ -124,6 +123,12 @@ public abstract class HuamiFWHelper extends AbstractMiBandFWHelper {
return firmwareInfo.getFirmwareType();
}
+ @Override
+ public void unsetFwBytes() {
+ super.unsetFwBytes();
+ firmwareInfo.unsetFwBytes();
+ }
+
public AbstractHuamiFirmwareInfo getFirmwareInfo() {
return firmwareInfo;
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband7/AmazfitBand7Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband7/AmazfitBand7Coordinator.java
index f59aefdc4..be96aa481 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband7/AmazfitBand7Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband7/AmazfitBand7Coordinator.java
@@ -25,11 +25,11 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
+import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.AbstractHuami2021FWInstallHandler;
public class AmazfitBand7Coordinator extends Huami2021Coordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitBand7Coordinator.class);
@@ -56,7 +56,7 @@ public class AmazfitBand7Coordinator extends Huami2021Coordinator {
}
@Override
- public InstallHandler findInstallHandler(final Uri uri, final Context context) {
+ public AbstractHuami2021FWInstallHandler findInstallHandler(final Uri uri, final Context context) {
final AmazfitBand7FWInstallHandler handler = new AmazfitBand7FWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband7/AmazfitBand7FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband7/AmazfitBand7FWInstallHandler.java
index 805c7de2a..659164e72 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband7/AmazfitBand7FWInstallHandler.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitband7/AmazfitBand7FWInstallHandler.java
@@ -23,11 +23,11 @@ import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWHelper;
-import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWInstallHandler;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
+import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.AbstractHuami2021FWInstallHandler;
-class AmazfitBand7FWInstallHandler extends AbstractMiBandFWInstallHandler {
+class AmazfitBand7FWInstallHandler extends AbstractHuami2021FWInstallHandler {
AmazfitBand7FWInstallHandler(final Uri uri, final Context context) {
super(uri, context);
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr3/AmazfitGTR3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr3/AmazfitGTR3Coordinator.java
index f34ea492f..df2b97f3d 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr3/AmazfitGTR3Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr3/AmazfitGTR3Coordinator.java
@@ -25,11 +25,11 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
+import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.AbstractHuami2021FWInstallHandler;
public class AmazfitGTR3Coordinator extends Huami2021Coordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTR3Coordinator.class);
@@ -56,7 +56,7 @@ public class AmazfitGTR3Coordinator extends Huami2021Coordinator {
}
@Override
- public InstallHandler findInstallHandler(final Uri uri, final Context context) {
+ public AbstractHuami2021FWInstallHandler findInstallHandler(final Uri uri, final Context context) {
final AmazfitGTR3FWInstallHandler handler = new AmazfitGTR3FWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr3/AmazfitGTR3FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr3/AmazfitGTR3FWInstallHandler.java
index 97b5b86c0..7220bddcd 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr3/AmazfitGTR3FWInstallHandler.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr3/AmazfitGTR3FWInstallHandler.java
@@ -23,11 +23,11 @@ import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWHelper;
-import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWInstallHandler;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
+import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.AbstractHuami2021FWInstallHandler;
-class AmazfitGTR3FWInstallHandler extends AbstractMiBandFWInstallHandler {
+class AmazfitGTR3FWInstallHandler extends AbstractHuami2021FWInstallHandler {
AmazfitGTR3FWInstallHandler(Uri uri, Context context) {
super(uri, context);
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr4/AmazfitGTR4Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr4/AmazfitGTR4Coordinator.java
index 14c9ba1a8..3e08d7372 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr4/AmazfitGTR4Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr4/AmazfitGTR4Coordinator.java
@@ -30,6 +30,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
+import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.AbstractHuami2021FWInstallHandler;
public class AmazfitGTR4Coordinator extends Huami2021Coordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTR4Coordinator.class);
@@ -56,7 +57,7 @@ public class AmazfitGTR4Coordinator extends Huami2021Coordinator {
}
@Override
- public InstallHandler findInstallHandler(final Uri uri, final Context context) {
+ public AbstractHuami2021FWInstallHandler findInstallHandler(final Uri uri, final Context context) {
final AmazfitGTR4FWInstallHandler handler = new AmazfitGTR4FWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr4/AmazfitGTR4FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr4/AmazfitGTR4FWInstallHandler.java
index f98f681a0..64fcd3fbe 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr4/AmazfitGTR4FWInstallHandler.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgtr4/AmazfitGTR4FWInstallHandler.java
@@ -23,11 +23,11 @@ import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWHelper;
-import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWInstallHandler;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
+import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.AbstractHuami2021FWInstallHandler;
-class AmazfitGTR4FWInstallHandler extends AbstractMiBandFWInstallHandler {
+class AmazfitGTR4FWInstallHandler extends AbstractHuami2021FWInstallHandler {
AmazfitGTR4FWInstallHandler(final Uri uri, final Context context) {
super(uri, context);
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts3/AmazfitGTS3Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts3/AmazfitGTS3Coordinator.java
index a5d5b4c52..d6a34951d 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts3/AmazfitGTS3Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts3/AmazfitGTS3Coordinator.java
@@ -25,11 +25,11 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
+import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.AbstractHuami2021FWInstallHandler;
public class AmazfitGTS3Coordinator extends Huami2021Coordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTS3Coordinator.class);
@@ -56,7 +56,7 @@ public class AmazfitGTS3Coordinator extends Huami2021Coordinator {
}
@Override
- public InstallHandler findInstallHandler(final Uri uri, final Context context) {
+ public AbstractHuami2021FWInstallHandler findInstallHandler(final Uri uri, final Context context) {
final AmazfitGTS3FWInstallHandler handler = new AmazfitGTS3FWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts3/AmazfitGTS3FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts3/AmazfitGTS3FWInstallHandler.java
index cc9e60e76..f9203b700 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts3/AmazfitGTS3FWInstallHandler.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts3/AmazfitGTS3FWInstallHandler.java
@@ -23,11 +23,11 @@ import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWHelper;
-import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWInstallHandler;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
+import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.AbstractHuami2021FWInstallHandler;
-class AmazfitGTS3FWInstallHandler extends AbstractMiBandFWInstallHandler {
+class AmazfitGTS3FWInstallHandler extends AbstractHuami2021FWInstallHandler {
AmazfitGTS3FWInstallHandler(Uri uri, Context context) {
super(uri, context);
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts4/AmazfitGTS4Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts4/AmazfitGTS4Coordinator.java
index cc9e2bd2b..ffc4ca5da 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts4/AmazfitGTS4Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts4/AmazfitGTS4Coordinator.java
@@ -25,11 +25,11 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
+import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.AbstractHuami2021FWInstallHandler;
public class AmazfitGTS4Coordinator extends Huami2021Coordinator {
private static final Logger LOG = LoggerFactory.getLogger(AmazfitGTS4Coordinator.class);
@@ -56,7 +56,7 @@ public class AmazfitGTS4Coordinator extends Huami2021Coordinator {
}
@Override
- public InstallHandler findInstallHandler(final Uri uri, final Context context) {
+ public AbstractHuami2021FWInstallHandler findInstallHandler(final Uri uri, final Context context) {
final AmazfitGTS4FWInstallHandler handler = new AmazfitGTS4FWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts4/AmazfitGTS4FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts4/AmazfitGTS4FWInstallHandler.java
index 2dcb489e8..ccc5d3f58 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts4/AmazfitGTS4FWInstallHandler.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/amazfitgts4/AmazfitGTS4FWInstallHandler.java
@@ -23,11 +23,11 @@ import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWHelper;
-import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWInstallHandler;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
+import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.AbstractHuami2021FWInstallHandler;
-class AmazfitGTS4FWInstallHandler extends AbstractMiBandFWInstallHandler {
+class AmazfitGTS4FWInstallHandler extends AbstractHuami2021FWInstallHandler {
AmazfitGTS4FWInstallHandler(final Uri uri, final Context context) {
super(uri, context);
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband7/MiBand7Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband7/MiBand7Coordinator.java
index 7c7854862..5726c1d41 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband7/MiBand7Coordinator.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband7/MiBand7Coordinator.java
@@ -25,11 +25,11 @@ import androidx.annotation.NonNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021Coordinator;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.HuamiConst;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceCandidate;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
+import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.AbstractHuami2021FWInstallHandler;
public class MiBand7Coordinator extends Huami2021Coordinator {
private static final Logger LOG = LoggerFactory.getLogger(MiBand7Coordinator.class);
@@ -56,7 +56,7 @@ public class MiBand7Coordinator extends Huami2021Coordinator {
}
@Override
- public InstallHandler findInstallHandler(final Uri uri, final Context context) {
+ public AbstractHuami2021FWInstallHandler findInstallHandler(final Uri uri, final Context context) {
final MiBand7FWInstallHandler handler = new MiBand7FWInstallHandler(uri, context);
return handler.isValid() ? handler : null;
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband7/MiBand7FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband7/MiBand7FWInstallHandler.java
index 465b616c2..7c0c35cae 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband7/MiBand7FWInstallHandler.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/huami/miband7/MiBand7FWInstallHandler.java
@@ -23,11 +23,11 @@ import java.io.IOException;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWHelper;
-import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWInstallHandler;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
+import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.AbstractHuami2021FWInstallHandler;
-class MiBand7FWInstallHandler extends AbstractMiBandFWInstallHandler {
+class MiBand7FWInstallHandler extends AbstractHuami2021FWInstallHandler {
MiBand7FWInstallHandler(Uri uri, Context context) {
super(uri, context);
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/AbstractMiBandFWHelper.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/AbstractMiBandFWHelper.java
index d3e7a7a8e..a43ad98c1 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/AbstractMiBandFWHelper.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/miband/AbstractMiBandFWHelper.java
@@ -43,8 +43,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.UriHelper;
public abstract class AbstractMiBandFWHelper {
private static final Logger LOG = LoggerFactory.getLogger(AbstractMiBandFWHelper.class);
- @NonNull
- private final byte[] fw;
+ private byte[] fw;
public AbstractMiBandFWHelper(Uri uri, Context context) throws IOException {
UriHelper uriHelper = UriHelper.get(uri, context);
@@ -104,9 +103,17 @@ public abstract class AbstractMiBandFWHelper {
@NonNull
public byte[] getFw() {
+ if (fw == null) {
+ throw new IllegalStateException("fw is null");
+ }
+
return fw;
}
+ public void unsetFwBytes() {
+ this.fw = null;
+ }
+
public boolean isFirmwareWhitelisted() {
for (int wlf : getWhitelistedFirmwareVersions()) {
if (wlf == getFirmwareVersion()) {
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/AbstractHuami2021FWInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/AbstractHuami2021FWInstallHandler.java
new file mode 100644
index 000000000..f053b643a
--- /dev/null
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/AbstractHuami2021FWInstallHandler.java
@@ -0,0 +1,37 @@
+/* Copyright (C) 2022 José Rebelo
+
+ 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.huami;
+
+import android.content.Context;
+import android.net.Uri;
+
+import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWInstallHandler;
+import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
+
+public abstract class AbstractHuami2021FWInstallHandler extends AbstractMiBandFWInstallHandler {
+ public AbstractHuami2021FWInstallHandler(final Uri uri, final Context context) {
+ super(uri, context);
+ }
+
+ @Override
+ public void onStartInstall(GBDevice device) {
+ // Unset the firmware bytes
+ // Huami2021 firmwares are large (> 130MB). With the current architecture, the update operation
+ // will re-read them to memory, and we run out-of-memory.
+ helper.unsetFwBytes();
+ }
+}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/AbstractHuamiFirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/AbstractHuamiFirmwareInfo.java
index 4ccd608e8..96cbf60a1 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/AbstractHuamiFirmwareInfo.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/AbstractHuamiFirmwareInfo.java
@@ -26,7 +26,7 @@ import nodomain.freeyourgadget.gadgetbridge.util.ArrayUtils;
import nodomain.freeyourgadget.gadgetbridge.util.CheckSums;
public abstract class AbstractHuamiFirmwareInfo {
- private final byte[] bytes;
+ private byte[] bytes;
private final int crc16;
private final int crc32;
@@ -78,6 +78,10 @@ public abstract class AbstractHuamiFirmwareInfo {
return firmwareType;
}
+ public void unsetFwBytes() {
+ this.bytes = null;
+ }
+
public abstract String toVersion(int crc16);
public abstract boolean isGenerallyCompatibleWith(GBDevice device);
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/Huami2021FirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/Huami2021FirmwareInfo.java
index e0bc3ac75..676eacae3 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/Huami2021FirmwareInfo.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/Huami2021FirmwareInfo.java
@@ -28,15 +28,18 @@ import java.util.Arrays;
import nodomain.freeyourgadget.gadgetbridge.service.btle.BLETypeConversions;
import nodomain.freeyourgadget.gadgetbridge.util.ArrayUtils;
-import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.util.ZipFile;
+import nodomain.freeyourgadget.gadgetbridge.util.ZipFileException;
public abstract class Huami2021FirmwareInfo extends AbstractHuamiFirmwareInfo {
private static final Logger LOG = LoggerFactory.getLogger(Huami2021FirmwareInfo.class);
+ private final String preComputedVersion;
+
public Huami2021FirmwareInfo(final byte[] bytes) {
super(bytes);
+ this.preComputedVersion = preComputeVersion();
}
/**
@@ -44,11 +47,6 @@ public abstract class Huami2021FirmwareInfo extends AbstractHuamiFirmwareInfo {
*/
public abstract String deviceName();
- /**
- * The expected firmware header bytes, to search on firmware.bin in order to determine compatibility.
- */
- public abstract byte[] getExpectedFirmwareHeader();
-
@Override
protected HuamiFirmwareType determineFirmwareType(final byte[] bytes) {
if (ArrayUtils.equals(bytes, UIHHContainer.UIHH_HEADER, 0)) {
@@ -70,7 +68,7 @@ public abstract class Huami2021FirmwareInfo extends AbstractHuamiFirmwareInfo {
UIHHContainer.FileEntry uihhFirmwareZipFile = null;
boolean hasChangelog = false;
for (final UIHHContainer.FileEntry file : uihh.getFiles()) {
- switch(file.getType()) {
+ switch (file.getType()) {
case FIRMWARE_ZIP:
uihhFirmwareZipFile = file;
continue;
@@ -83,7 +81,14 @@ public abstract class Huami2021FirmwareInfo extends AbstractHuamiFirmwareInfo {
}
if (uihhFirmwareZipFile != null && hasChangelog) {
- byte[] firmwareBin = ZipFile.tryReadFileQuick(uihhFirmwareZipFile.getContent(), "META/firmware.bin");
+ final ZipFile zipFile = new ZipFile(uihhFirmwareZipFile.getContent());
+ final byte[] firmwareBin;
+ try {
+ firmwareBin = zipFile.getFileFromZip("META/firmware.bin");
+ } catch (final ZipFileException e) {
+ LOG.error("Failed to read zip from UIHH", e);
+ return HuamiFirmwareType.INVALID;
+ }
if (isCompatibleFirmwareBin(firmwareBin)) {
return HuamiFirmwareType.FIRMWARE_UIHH_2021_ZIP_WITH_CHANGELOG;
@@ -94,13 +99,33 @@ public abstract class Huami2021FirmwareInfo extends AbstractHuamiFirmwareInfo {
}
private HuamiFirmwareType handleZipPackage(byte[] bytes) {
- final byte[] firmwareBin = ZipFile.tryReadFileQuick(bytes, "META/firmware.bin");
+ final ZipFile zipFile = new ZipFile(bytes);
+ final byte[] firmwareBin;
+ try {
+ firmwareBin = zipFile.getFileFromZip("META/firmware.bin");
+ } catch (final ZipFileException e) {
+ LOG.error("Failed to get firmware.bin from zip file", e);
+ return HuamiFirmwareType.FIRMWARE;
+ }
+
if (isCompatibleFirmwareBin(firmwareBin)) {
return HuamiFirmwareType.FIRMWARE;
}
- final String appType = getAppType();
- switch(appType) {
+ final JSONObject appJson = getAppJson(zipFile);
+ if (appJson == null) {
+ return HuamiFirmwareType.INVALID;
+ }
+
+ final String appType;
+ try {
+ appType = appJson.getJSONObject("app").getString("appType");
+ } catch (final Exception e) {
+ LOG.error("Failed to get appType from app.json", e);
+ return HuamiFirmwareType.INVALID;
+ }
+
+ switch (appType) {
case "watchface":
return HuamiFirmwareType.WATCHFACE;
case "app":
@@ -119,27 +144,35 @@ public abstract class Huami2021FirmwareInfo extends AbstractHuamiFirmwareInfo {
return crcMapVersion;
}
- switch (firmwareType) {
- case FIRMWARE_UIHH_2021_ZIP_WITH_CHANGELOG:
- final UIHHContainer uihh = UIHHContainer.fromRawBytes(getBytes());
- if (uihh == null) {
- return null;
- }
- return getFirmwareVersion(uihh.getFile(UIHHContainer.FileType.FIRMWARE_ZIP));
- case FIRMWARE:
- return getFirmwareVersion(getBytes());
- case WATCHFACE:
- final String watchfaceName = getAppName();
- if (watchfaceName == null) {
- return "(unknown watchface)";
- }
- return String.format("%s (watchface)", watchfaceName);
- case APP:
- final String appName = getAppName();
- if (appName == null) {
- return "(unknown app)";
- }
- return String.format("%s (app)", appName);
+ return preComputedVersion;
+ }
+
+ public String preComputeVersion() {
+ try {
+ switch (firmwareType) {
+ case FIRMWARE_UIHH_2021_ZIP_WITH_CHANGELOG:
+ final UIHHContainer uihh = UIHHContainer.fromRawBytes(getBytes());
+ if (uihh == null) {
+ return null;
+ }
+ return getFirmwareVersion(uihh.getFile(UIHHContainer.FileType.FIRMWARE_ZIP));
+ case FIRMWARE:
+ return getFirmwareVersion(getBytes());
+ case WATCHFACE:
+ final String watchfaceName = getAppName(new ZipFile(getBytes()));
+ if (watchfaceName == null) {
+ return "(unknown watchface)";
+ }
+ return String.format("%s (watchface)", watchfaceName);
+ case APP:
+ final String appName = getAppName(new ZipFile(getBytes()));
+ if (appName == null) {
+ return "(unknown app)";
+ }
+ return String.format("%s (app)", appName);
+ }
+ } catch (final Exception e) {
+ LOG.error("Failed to pre compute version", e);
}
return null;
@@ -150,7 +183,7 @@ public abstract class Huami2021FirmwareInfo extends AbstractHuamiFirmwareInfo {
throw new IllegalStateException("Can only repack FIRMWARE");
}
- final UIHHContainer uihh = packFirmwareInUIHH();
+ final UIHHContainer uihh = packFirmwareInUIHH(getBytes());
try {
final Constructor extends Huami2021FirmwareInfo> constructor = this.getClass().getConstructor(byte[].class);
@@ -160,7 +193,7 @@ public abstract class Huami2021FirmwareInfo extends AbstractHuamiFirmwareInfo {
}
}
- private UIHHContainer packFirmwareInUIHH() {
+ private static UIHHContainer packFirmwareInUIHH(final byte[] zipBytes) {
final UIHHContainer uihh = new UIHHContainer();
final byte[] timestampBytes = BLETypeConversions.fromUint32((int) (System.currentTimeMillis() / 1000L));
final String changelogText = "Unknown changelog";
@@ -168,23 +201,18 @@ public abstract class Huami2021FirmwareInfo extends AbstractHuamiFirmwareInfo {
timestampBytes,
changelogText.getBytes(StandardCharsets.UTF_8)
);
- uihh.addFile(UIHHContainer.FileType.FIRMWARE_ZIP, getBytes());
+ uihh.addFile(UIHHContainer.FileType.FIRMWARE_ZIP, zipBytes);
uihh.addFile(UIHHContainer.FileType.FIRMWARE_CHANGELOG, changelogBytes);
return uihh;
}
private boolean isCompatibleFirmwareBin(final byte[] firmwareBin) {
if (firmwareBin == null) {
+ LOG.error("firmware bin is null");
return false;
}
- if (!ArrayUtils.equals(firmwareBin, getExpectedFirmwareHeader(), 0)) {
- LOG.warn("Unexpected firmware header: {}", GB.hexdump(Arrays.copyOfRange(firmwareBin, 0, getExpectedFirmwareHeader().length + 3)));
- return false;
- }
-
- // On the MB7, this only works for firmwares > 1.8.5.1, not for any older firmware
- if (!searchString32BitAligned(firmwareBin, deviceName() + "\0")) {
+ if (!searchString(firmwareBin, deviceName())) {
LOG.warn("Failed to find {} in fwBytes", deviceName());
return false;
}
@@ -192,11 +220,13 @@ public abstract class Huami2021FirmwareInfo extends AbstractHuamiFirmwareInfo {
return true;
}
- public String getFirmwareVersion(final byte[] fwbytes) {
- final byte[] firmwareBin = ZipFile.tryReadFileQuick(fwbytes, "META/firmware.bin");
-
- if (firmwareBin == null) {
- LOG.warn("Failed to read firmware.bin");
+ public static String getFirmwareVersion(final byte[] fwBytes) {
+ final ZipFile zipFile = new ZipFile(fwBytes);
+ final byte[] firmwareBin;
+ try {
+ firmwareBin = zipFile.getFileFromZip("META/firmware.bin");
+ } catch (final ZipFileException e) {
+ LOG.error("Failed to get firmware.bin from zip", e);
return null;
}
@@ -225,10 +255,30 @@ public abstract class Huami2021FirmwareInfo extends AbstractHuamiFirmwareInfo {
return new String(Arrays.copyOfRange(firmwareBin, startIdx, endIdx));
}
- public String getAppName() {
- final byte[] appJsonBin = ZipFile.tryReadFileQuick(getBytes(), "app.json");
- if (appJsonBin == null) {
- LOG.warn("Failed to get app.json from zip");
+ public String getAppName(final ZipFile zipFile) {
+ // TODO check i18n section?
+ // TODO Show preview icon?
+
+ final JSONObject appJson = getAppJson(zipFile);
+ if (appJson == null) {
+ return null;
+ }
+
+ try {
+ return appJson.getJSONObject("app").getString("appName");
+ } catch (final Exception e) {
+ LOG.error("Failed to get appName from app.json", e);
+ }
+
+ return null;
+ }
+
+ private static JSONObject getAppJson(final ZipFile zipFile) {
+ final byte[] appJsonBin;
+ try {
+ appJsonBin = zipFile.getFileFromZip("app.json");
+ } catch (final ZipFileException e) {
+ LOG.error("Failed to read app.json", e);
return null;
}
@@ -236,12 +286,7 @@ public abstract class Huami2021FirmwareInfo extends AbstractHuamiFirmwareInfo {
final String appJsonString = new String(appJsonBin, StandardCharsets.UTF_8)
// Remove UTF-8 BOM if present
.replace("\uFEFF", "");
- final JSONObject jsonObject = new JSONObject(appJsonString);
- // TODO check i18n section?
- // TODO Show preview icon?
- final String appName = jsonObject.getJSONObject("app").getString("appName");
-
- return String.format("%s", appName);
+ return new JSONObject(appJsonString);
} catch (final Exception e) {
LOG.error("Failed to parse app.json", e);
}
@@ -249,23 +294,22 @@ public abstract class Huami2021FirmwareInfo extends AbstractHuamiFirmwareInfo {
return null;
}
- public String getAppType() {
- final byte[] appJsonBin = ZipFile.tryReadFileQuick(getBytes(), "app.json");
- if (appJsonBin == null) {
- LOG.warn("Failed to get app.json from zip");
- return null;
+ public static boolean searchString(final byte[] fwBytes, final String str) {
+ final byte[] strBytes = (str + "\0").getBytes(StandardCharsets.UTF_8);
+
+ for (int i = 0; i < fwBytes.length - strBytes.length + 1; i++) {
+ boolean found = true;
+ for (int j = 0; j < strBytes.length; j++) {
+ if (fwBytes[i + j] != strBytes[j]) {
+ found = false;
+ break;
+ }
+ }
+ if (found) {
+ return true;
+ }
}
- try {
- final String appJsonString = new String(appJsonBin, StandardCharsets.UTF_8)
- // Remove UTF-8 BOM if present
- .replace("\uFEFF", "");
- final JSONObject jsonObject = new JSONObject(appJsonString);
- return jsonObject.getJSONObject("app").getString("appType");
- } catch (final Exception e) {
- LOG.error("Failed to parse app.json", e);
- }
-
- return null;
+ return false;
}
}
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitband7/AmazfitBand7FirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitband7/AmazfitBand7FirmwareInfo.java
index 7e0b40e81..756b51db5 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitband7/AmazfitBand7FirmwareInfo.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitband7/AmazfitBand7FirmwareInfo.java
@@ -37,11 +37,6 @@ public class AmazfitBand7FirmwareInfo extends Huami2021FirmwareInfo {
return HuamiConst.AMAZFIT_BAND7_NAME;
}
- @Override
- public byte[] getExpectedFirmwareHeader() {
- return new byte[]{0x51, 0x71};
- }
-
@Override
public boolean isGenerallyCompatibleWith(final GBDevice device) {
return isHeaderValid() && device.getType() == DeviceType.AMAZFITBAND7;
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgtr3/AmazfitGTR3FirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgtr3/AmazfitGTR3FirmwareInfo.java
index 9c3782de2..e1cd6f485 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgtr3/AmazfitGTR3FirmwareInfo.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgtr3/AmazfitGTR3FirmwareInfo.java
@@ -43,11 +43,6 @@ public class AmazfitGTR3FirmwareInfo extends Huami2021FirmwareInfo {
return HuamiConst.AMAZFIT_GTR3_NAME;
}
- @Override
- public byte[] getExpectedFirmwareHeader() {
- return new byte[]{0x00, 0x00, 0x50}; // Probably bogus, only checked against 2 firmware files
- }
-
@Override
public boolean isGenerallyCompatibleWith(final GBDevice device) {
return isHeaderValid() && device.getType() == DeviceType.AMAZFITGTR3;
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgtr4/AmazfitGTR4FirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgtr4/AmazfitGTR4FirmwareInfo.java
index 4bad7f693..a9301de10 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgtr4/AmazfitGTR4FirmwareInfo.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgtr4/AmazfitGTR4FirmwareInfo.java
@@ -27,6 +27,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.huami.Huami2021Firmw
public class AmazfitGTR4FirmwareInfo extends Huami2021FirmwareInfo {
private static final Map crcToVersion = new HashMap() {{
// firmware
+ put(1699, "3.17.0.2");
}};
public AmazfitGTR4FirmwareInfo(final byte[] bytes) {
@@ -38,11 +39,6 @@ public class AmazfitGTR4FirmwareInfo extends Huami2021FirmwareInfo {
return HuamiConst.AMAZFIT_GTR4_NAME;
}
- @Override
- public byte[] getExpectedFirmwareHeader() {
- return new byte[]{(byte) 0x51, (byte) 0x71, (byte) 0x9c}; // Probably bogus, only checked against 1 firmware files
- }
-
@Override
public boolean isGenerallyCompatibleWith(final GBDevice device) {
return isHeaderValid() && device.getType() == DeviceType.AMAZFITGTR4;
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts3/AmazfitGTS3FirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts3/AmazfitGTS3FirmwareInfo.java
index 3b4a0ff4f..fe9638bce 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts3/AmazfitGTS3FirmwareInfo.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts3/AmazfitGTS3FirmwareInfo.java
@@ -43,11 +43,6 @@ public class AmazfitGTS3FirmwareInfo extends Huami2021FirmwareInfo {
return HuamiConst.AMAZFIT_GTS3_NAME;
}
- @Override
- public byte[] getExpectedFirmwareHeader() {
- return new byte[]{0x00, 0x00, 0x50}; // Probably bogus, only checked against 2 firmware files
- }
-
@Override
public boolean isGenerallyCompatibleWith(final GBDevice device) {
return isHeaderValid() && device.getType() == DeviceType.AMAZFITGTS3;
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts4/AmazfitGTS4FirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts4/AmazfitGTS4FirmwareInfo.java
index d4ee2ffa8..1be99de31 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts4/AmazfitGTS4FirmwareInfo.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/amazfitgts4/AmazfitGTS4FirmwareInfo.java
@@ -38,11 +38,6 @@ public class AmazfitGTS4FirmwareInfo extends Huami2021FirmwareInfo {
return HuamiConst.AMAZFIT_GTS4_NAME;
}
- @Override
- public byte[] getExpectedFirmwareHeader() {
- return new byte[]{(byte) 0x51, (byte) 0x71, (byte) 0x9c}; // Probably bogus, only checked against 1 firmware files
- }
-
@Override
public boolean isGenerallyCompatibleWith(final GBDevice device) {
return isHeaderValid() && device.getType() == DeviceType.AMAZFITGTS4;
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband7/MiBand7FirmwareInfo.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband7/MiBand7FirmwareInfo.java
index ee0398d72..c00250cc6 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband7/MiBand7FirmwareInfo.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/miband7/MiBand7FirmwareInfo.java
@@ -43,11 +43,6 @@ public class MiBand7FirmwareInfo extends Huami2021FirmwareInfo {
return HuamiConst.XIAOMI_SMART_BAND7_NAME;
}
- @Override
- public byte[] getExpectedFirmwareHeader() {
- return new byte[]{0x51, 0x71};
- }
-
@Override
public boolean isGenerallyCompatibleWith(final GBDevice device) {
return isHeaderValid() && device.getType() == DeviceType.MIBAND7;
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/ZipFile.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/ZipFile.java
index ae24c178e..c17995ec7 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/ZipFile.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/util/ZipFile.java
@@ -79,28 +79,6 @@ public class ZipFile {
}
}
- /**
- * Tries to obtain file from ZIP file without much hassle, but is not safe.
- * Please only use this in place of old code where correctness of the result is checked only later on.
- * Use getFileFromZip of ZipFile instance instead.
- * @param zipBytes
- * @param path Path of the file in the ZIP file.
- * @return Contents of requested file or null.
- */
- @Deprecated
- @Nullable
- public static byte[] tryReadFileQuick(final byte[] zipBytes, final String path) {
- try {
- return new ZipFile(zipBytes).getFileFromZip(path);
- } catch (ZipFileException e) {
- LOG.error("Quick ZIP reading failed.", e);
- } catch (Exception e) {
- LOG.error("Unable to close ZipFile.", e);
- }
-
- return null;
- }
-
private static byte[] readAllBytes(final InputStream is) throws IOException {
final ByteArrayOutputStream buffer = new ByteArrayOutputStream();