diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/AppsManagementActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/AppsManagementActivity.java index 9b2309dff..31df95197 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/AppsManagementActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/AppsManagementActivity.java @@ -60,7 +60,7 @@ public class AppsManagementActivity extends AbstractGBActivity { if ( device.getType() == DeviceType.FOSSILQHYBRID && device.isConnected() && - device.getModel().startsWith("DN") && + (device.getModel().startsWith("DN") || device.getModel().startsWith("IV")) && device.getState() == GBDevice.State.INITIALIZED ) { String installedAppsJson = device.getDeviceInfo("INSTALLED_APPS").getDetails(); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/HRConfigActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/HRConfigActivity.java index d57e38d60..be382975f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/HRConfigActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/HRConfigActivity.java @@ -171,12 +171,13 @@ public class HRConfigActivity extends AbstractGBActivity { // Disable some functions on watches with too new firmware (from official app 4.6.0 and higher) List devices = GBApplication.app().getDeviceManager().getSelectedDevices(); - for(GBDevice device : devices){ - if(device.getType() == DeviceType.FOSSILQHYBRID){ + for (GBDevice device : devices) { + if (device.getType() == DeviceType.FOSSILQHYBRID) { String fwVersion_str = device.getFirmwareVersion(); - fwVersion_str = fwVersion_str.replaceFirst("^DN", "").replaceFirst("r\\.v.*", ""); + fwVersion_str = fwVersion_str.replaceFirst("^DN1\\.0\\.", "").replaceFirst + ("^IV0\\.0\\.", "").replaceFirst("r\\.v.*", ""); Version fwVersion = new Version(fwVersion_str); - if (fwVersion.compareTo(new Version("1.0.2.20")) >= 0) { + if (fwVersion.compareTo(new Version("2.20")) >= 0) { findViewById(R.id.qhybrid_widget_add).setEnabled(false); for (int i = 0; i < widgetButtonsMapping.size(); i++) { final int widgetButtonId = widgetButtonsMapping.keyAt(i); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java index 4baa69726..24c9e0cea 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridCoordinator.java @@ -253,7 +253,7 @@ public class QHybridCoordinator extends AbstractBLEDeviceCoordinator { @Override public int[] getSupportedDeviceSpecificSettings(GBDevice device) { - if (isHybridHR() && getFirmwareVersion() != null && getFirmwareVersion().compareTo(new Version("1.0.2.20")) < 0) { + if (isHybridHR() && getFirmwareVersion() != null && getFirmwareVersion().compareTo(new Version("2.20")) < 0) { return new int[]{ R.xml.devicesettings_fossilhybridhr_pre_fw20, R.xml.devicesettings_fossilhybridhr, @@ -299,11 +299,12 @@ public class QHybridCoordinator extends AbstractBLEDeviceCoordinator { private Version getFirmwareVersion() { List devices = GBApplication.app().getDeviceManager().getSelectedDevices(); - for(GBDevice device : devices){ - if(isFossilHybrid(device)){ + for (GBDevice device : devices) { + if (isFossilHybrid(device)) { String firmware = device.getFirmwareVersion(); if (firmware != null) { - Matcher matcher = Pattern.compile("[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+").matcher(firmware); // DN1.0.2.19r.v5 + 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); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/WatchAdapter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/WatchAdapter.java index 143bf258e..776bb684a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/WatchAdapter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/WatchAdapter.java @@ -80,10 +80,12 @@ public abstract class WatchAdapter { return "Q Commuter"; case "HL.0.0": return "Q Activist"; + case "IV.0.0": + return "Hybrid HR"; case "DN.1.0": - return "Hybrid HR Collider"; + return "Hybrid HR"; } - return "unknwon Q"; + return "unknown Q"; } public abstract void onFetchActivityData(); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/WatchAdapterFactory.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/WatchAdapterFactory.java index e9ef82671..77c61af98 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/WatchAdapterFactory.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/WatchAdapterFactory.java @@ -25,6 +25,7 @@ public final class WatchAdapterFactory { public final WatchAdapter createWatchAdapter(String firmwareVersion, QHybridSupport deviceSupport){ char hardwareVersion = firmwareVersion.charAt(2); if(hardwareVersion == '1') return new FossilHRWatchAdapter(deviceSupport); + if(firmwareVersion.startsWith("IV0")) return new FossilHRWatchAdapter(deviceSupport); char major = firmwareVersion.charAt(6); switch (major){ diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil/FossilWatchAdapter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil/FossilWatchAdapter.java index c5fd9a084..c1ff882c8 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil/FossilWatchAdapter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil/FossilWatchAdapter.java @@ -457,6 +457,8 @@ public class FossilWatchAdapter extends WatchAdapter { return true; case "HL.0.0": return false; + case "IV.0.0": + return true; case "DN.1.0": return true; } @@ -471,6 +473,8 @@ public class FossilWatchAdapter extends WatchAdapter { return true; case "HL.0.0": return false; + case "IV.0.0": + return false; case "DN.1.0": return false; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil_hr/FossilHRWatchAdapter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil_hr/FossilHRWatchAdapter.java index f2b76a007..cb527b030 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil_hr/FossilHRWatchAdapter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/fossil_hr/FossilHRWatchAdapter.java @@ -235,7 +235,7 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter { initializeAfterWatchConfirmation(false); return; } - boolean versionSupportsConfirmation = getCleanFWVersion().compareTo(new Version("1.0.2.22")) != -1; + boolean versionSupportsConfirmation = getCleanFWVersion().compareTo(new Version("2.22")) != -1; if(!versionSupportsConfirmation){ initializeAfterWatchConfirmation(true); return; @@ -472,7 +472,7 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter { private void loadWidgets() { Version firmwareVersion = getCleanFWVersion(); - if (firmwareVersion != null && firmwareVersion.compareTo(new Version("1.0.2.20")) >= 0) { + if (firmwareVersion != null && firmwareVersion.compareTo(new Version("2.20")) >= 0) { return; // this does not work on newer firmware versions } Prefs prefs = new Prefs(GBApplication.getDeviceSpecificSharedPrefs(getDeviceSupport().getDevice().getAddress())); @@ -594,7 +594,7 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter { private void renderWidgets() { Version firmwareVersion = getCleanFWVersion(); - if (firmwareVersion != null && firmwareVersion.compareTo(new Version("1.0.2.20")) >= 0) { + if (firmwareVersion != null && firmwareVersion.compareTo(new Version("2.20")) >= 0) { return; // this does not work on newer firmware versions } Prefs prefs = new Prefs(GBApplication.getDeviceSpecificSharedPrefs(getDeviceSupport().getDevice().getAddress())); @@ -1361,7 +1361,7 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter { String singlePressEvent = "short_press_release"; Version firmwareVersion = getCleanFWVersion(); - if (firmwareVersion != null && firmwareVersion.compareTo(new Version("1.0.2.19")) < 0) { + if (firmwareVersion != null && firmwareVersion.compareTo(new Version("2.19")) < 0) { singlePressEvent = "single_click"; } ArrayList configs = new ArrayList<>(5); @@ -1609,7 +1609,7 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter { public void onFindDevice(boolean start) { super.onFindDevice(start); - boolean versionSupportsConfirmation = getCleanFWVersion().compareTo(new Version("1.0.2.22")) != -1; + boolean versionSupportsConfirmation = getCleanFWVersion().compareTo(new Version("2.22")) != -1; if(!versionSupportsConfirmation){ GB.toast("not supported in this version", Toast.LENGTH_SHORT, GB.ERROR); @@ -1713,7 +1713,8 @@ public class FossilHRWatchAdapter extends FossilWatchAdapter { private Version getCleanFWVersion() { String firmware = getDeviceSupport().getDevice().getFirmwareVersion(); - Matcher matcher = Pattern.compile("[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+").matcher(firmware); // DN1.0.2.19r.v5 + 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);