1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-07-04 20:12:27 +02:00
Gadgetbridge/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/Huami2021FWInstallHandler.java
2023-06-15 20:50:15 +01:00

89 lines
3.2 KiB
Java

/* 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 <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.service.devices.huami;
import android.content.Context;
import android.net.Uri;
import java.io.IOException;
import java.util.Map;
import java.util.Set;
import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.devices.huami.Huami2021FWHelper;
import nodomain.freeyourgadget.gadgetbridge.devices.miband.AbstractMiBandFWInstallHandler;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.DeviceType;
public class Huami2021FWInstallHandler extends AbstractMiBandFWInstallHandler {
private final String deviceName;
private final Set<Integer> deviceSources;
private final DeviceType deviceType;
private final Map<Integer, String> crcMap;
public Huami2021FWInstallHandler(final Uri uri,
final Context context,
final String deviceName,
final Set<Integer> deviceSources,
final DeviceType deviceType,
final Map<Integer, String> crcMap) {
super(uri, context);
this.deviceName = deviceName;
this.deviceSources = deviceSources;
this.deviceType = deviceType;
this.crcMap = crcMap;
}
@Override
public Huami2021FWHelper getHelper() {
return (Huami2021FWHelper) helper;
}
protected boolean isSupportedDeviceType(final GBDevice device) {
return device.getType() == deviceType;
}
@Override
protected String getFwUpgradeNotice() {
return mContext.getString(
R.string.fw_upgrade_notice_zip,
helper.getHumanFirmwareVersion(),
mContext.getString(deviceType.getName())
);
}
@Override
protected Huami2021FWHelper createHelper(final Uri uri, final Context context) throws IOException {
return new Huami2021FWHelper(
uri,
context,
deviceName,
deviceSources,
deviceType,
crcMap
);
}
@Override
public void onStartInstall(final 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();
}
}