Fossil HR: cleaned up firmware version handling

This commit is contained in:
Daniel Dakhno 2022-08-27 02:54:56 +02:00
parent e0e1a91dc8
commit 1a472493c7
4 changed files with 15 additions and 37 deletions

View File

@ -173,9 +173,7 @@ public class HRConfigActivity extends AbstractGBActivity {
List<GBDevice> devices = GBApplication.app().getDeviceManager().getSelectedDevices();
for (GBDevice device : devices) {
if (device.getType() == DeviceType.FOSSILQHYBRID) {
String fwVersion_str = device.getFirmwareVersion();
fwVersion_str = fwVersion_str.replaceFirst("^DN1\\.0\\.", "").replaceFirst
("^IV0\\.0\\.", "").replaceFirst("r\\.v.*", "");
String fwVersion_str = device.getFirmwareVersion2();
Version fwVersion = new Version(fwVersion_str);
if (fwVersion.compareTo(new Version("2.20")) >= 0) {
findViewById(R.id.qhybrid_widget_add).setEnabled(false);

View File

@ -235,15 +235,6 @@ public class QHybridCoordinator extends AbstractBLEDeviceCoordinator {
@Override
public boolean supportsFindDevice() {
return true;
/*GBDevice connectedDevice = GBApplication.app().getDeviceManager().getSelectedDevice();
if(connectedDevice == null || connectedDevice.getType() != DeviceType.FOSSILQHYBRID){
return true;
}
ItemWithDetails vibration = connectedDevice.getDeviceInfo(QHybridSupport.ITEM_EXTENDED_VIBRATION_SUPPORT);
if(vibration == null){
return true;
}
return vibration.getDetails().equals("true");*/
}
@Override
@ -253,7 +244,7 @@ public class QHybridCoordinator extends AbstractBLEDeviceCoordinator {
@Override
public int[] getSupportedDeviceSpecificSettings(GBDevice device) {
if (isHybridHR() && getFirmwareVersion() != null && getFirmwareVersion().compareTo(new Version("2.20")) < 0) {
if (isHybridHR() && getFirmwareVersion() != null && getFirmwareVersion().smallerThan(new Version("2.20"))) {
return new int[]{
R.xml.devicesettings_fossilhybridhr_pre_fw20,
R.xml.devicesettings_fossilhybridhr,
@ -306,15 +297,7 @@ public class QHybridCoordinator extends AbstractBLEDeviceCoordinator {
List<GBDevice> devices = GBApplication.app().getDeviceManager().getSelectedDevices();
for (GBDevice device : devices) {
if (isFossilHybrid(device)) {
String firmware = device.getFirmwareVersion();
if (firmware != null) {
firmware = firmware.replaceFirst("DN1\\.0\\.", "").replaceFirst("IV0\\.0\\.", "");
Matcher matcher = Pattern.compile("[0-9]+\\.[0-9]+").matcher(firmware); // DN1.0.2.19r.v5
if (matcher.find()) {
firmware = matcher.group(0);
return new Version(firmware);
}
}
return new Version(device.getFirmwareVersion2());
}
}

View File

@ -44,6 +44,8 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import nodomain.freeyourgadget.gadgetbridge.BuildConfig;
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
@ -78,6 +80,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.requests.mis
import nodomain.freeyourgadget.gadgetbridge.service.serial.GBDeviceProtocol;
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.util.Version;
public class QHybridSupport extends QHybridBaseSupport {
public static final String QHYBRID_COMMAND_CONTROL = "qhybrid_command_control";
@ -756,8 +759,15 @@ public class QHybridSupport extends QHybridBaseSupport {
switch (characteristic.getUuid().toString()) {
case "00002a26-0000-1000-8000-00805f9b34fb": {
String firmwareVersion = characteristic.getStringValue(0);
gbDevice.setFirmwareVersion(firmwareVersion);
Matcher matcher = Pattern
.compile("(?<=[A-Z]{2}[0-9]\\.[0-9]\\.)[0-9]+\\.[0-9]+")
.matcher(firmwareVersion);
if(matcher.find()){
gbDevice.setFirmwareVersion2(matcher.group());
}
this.watchAdapter = new WatchAdapterFactory().createWatchAdapter(firmwareVersion, this);
this.watchAdapter.initialize();
showNotificationsByAllActive(false);

View File

@ -1749,8 +1749,6 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter {
boolean versionSupportsConfirmation = getCleanFWVersion().greaterOrEqualThan(new Version("2.22"));
versionSupportsConfirmation |= getDeviceSupport().getDevice().getModel().startsWith("VA");
if(!versionSupportsConfirmation){
GB.toast("not supported in this version", Toast.LENGTH_SHORT, GB.ERROR);
return;
@ -1852,18 +1850,7 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter {
}
private Version getCleanFWVersion() {
if(cleanFirmwareVersion != null){
return cleanFirmwareVersion;
}
String firmware = getDeviceSupport().getDevice().getFirmwareVersion();
Matcher matcher = Pattern
.compile("(?<=[A-Z]{2}[0-9]\\.[0-9]\\.)[0-9]+\\.[0-9]+")
.matcher(firmware);
if(!matcher.find()){
return null;
}
cleanFirmwareVersion = new Version(matcher.group());
return cleanFirmwareVersion;
return new Version(getDeviceSupport().getDevice().getFirmwareVersion2());
}
public String getInstalledAppNameFromUUID(UUID uuid) {