From b0bb0f0eb5ed6d98ab6bc3a09f0c457e778d6f6a Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Thu, 3 Jul 2025 23:57:54 +0200 Subject: [PATCH] Rename ATC_TLSR_Paper to ATC_BLE_OEPL It seems the old github repo is named ATC_TLSR_Paper, but the firmware (without published source) we use now is called ATC_BLE_OEPL At least the author calls it ATC_BLE_OEPL now https://www.youtube.com/watch?v=9oKWkHGI-Yk --- CHANGELOG.md | 2 +- .../DeviceSettingsPreferenceConst.java | 6 ++-- .../DeviceSpecificSettingsFragment.java | 6 ++-- .../ATCBLEOEPLCoordinator.java} | 18 +++++------ .../ATCBLEOEPLInstallHandler.java} | 6 ++-- .../gadgetbridge/model/DeviceType.java | 4 +-- .../ATCBLEOEPLDeviceSupport.java} | 32 +++++++++---------- app/src/main/res/values/arrays.xml | 8 ++--- app/src/main/res/values/strings.xml | 10 +++--- .../res/xml/devicesettings_atc_ble_oepl.xml | 23 +++++++++++++ .../res/xml/devicesettings_atc_trsr_paper.xml | 23 ------------- 11 files changed, 69 insertions(+), 69 deletions(-) rename app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/{atctlsrpaper/ATCTLSRPaperCoordinator.java => atcbleoepl/ATCBLEOEPLCoordinator.java} (79%) rename app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/{atctlsrpaper/ATCTLSRPaperInstallHandler.java => atcbleoepl/ATCBLEOEPLInstallHandler.java} (87%) rename app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/{atctlsrpaper/ATCTLSRPaperDeviceSupport.java => atcbleoepl/ATCBLEOEPLDeviceSupport.java} (93%) create mode 100644 app/src/main/res/xml/devicesettings_atc_ble_oepl.xml delete mode 100644 app/src/main/res/xml/devicesettings_atc_trsr_paper.xml diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f7ee0568b..230797d5ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ * Initial support for Garmin Descent Mk3 * Initial support for Redmi Watch 5 * Initial support for Yawell rings R10 and R11 -* Initial support for ATC_TLSR_Paper (experimental) +* Initial support for ATC_BLE_OEPL (experimental) * Experimental support for Amazfit Balance 2 * CMF Watch Pro: Firmware update * Fossil/Skagen Hybrids: Add calendar support diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java index f64f747c46..fe6fd50bbc 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSettingsPreferenceConst.java @@ -650,7 +650,7 @@ public class DeviceSettingsPreferenceConst { public static final String PREF_DEVICE_STRESS_TEST_CONNECT_PARALLEL = "pref_device_stress_test_connect_parallel"; public static final String PREF_DEVICE_STRESS_TEST_DISPOSE = "pref_device_stress_test_dispose"; - public static final String PREF_ATC_TLSR_PAPER_MODEL = "pref_atc_tlsr_paper_model"; - public static final String PREF_ATC_TLSR_PAPER_BLE_ADV_INTERVAL = "pref_atc_tlsr_paper_ble_adv_interval"; - public static final String PREF_ATC_TLSR_PAPER_OEPL_PROTOCOL_ENABLE = "pref_atc_tlsr_paper_oepl_protocol_enable"; + public static final String PREF_ATC_BLE_OEPL_MODEL = "pref_atc_ble_oepl_model"; + public static final String PREF_ATC_BLE_OEPL_BLE_ADV_INTERVAL = "pref_atc_ble_oepl_ble_adv_interval"; + public static final String PREF_ATC_BLE_OEPL_OEPL_PROTOCOL_ENABLE = "pref_atc_ble_oepl_oepl_protocol_enable"; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java index 3ac85c4ed4..886cb211b5 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/devicesettings/DeviceSpecificSettingsFragment.java @@ -967,9 +967,9 @@ public class DeviceSpecificSettingsFragment extends AbstractPreferenceFragment i addPreferenceHandlerFor(PREF_CALENDAR_MAX_DESC_LENGTH); addPreferenceHandlerFor(PREF_CALENDAR_TARGET_APP); - addPreferenceHandlerFor(PREF_ATC_TLSR_PAPER_MODEL); - addPreferenceHandlerFor(PREF_ATC_TLSR_PAPER_BLE_ADV_INTERVAL); - addPreferenceHandlerFor(PREF_ATC_TLSR_PAPER_OEPL_PROTOCOL_ENABLE); + addPreferenceHandlerFor(PREF_ATC_BLE_OEPL_MODEL); + addPreferenceHandlerFor(PREF_ATC_BLE_OEPL_BLE_ADV_INTERVAL); + addPreferenceHandlerFor(PREF_ATC_BLE_OEPL_OEPL_PROTOCOL_ENABLE); final Preference dischargeIntervalsSet = findPreference(PREF_BATTERY_DISCHARGE_INTERVALS_SET); if (dischargeIntervalsSet != null) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/atctlsrpaper/ATCTLSRPaperCoordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/atcbleoepl/ATCBLEOEPLCoordinator.java similarity index 79% rename from app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/atctlsrpaper/ATCTLSRPaperCoordinator.java rename to app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/atcbleoepl/ATCBLEOEPLCoordinator.java index b6727fb6dc..406fb1f21b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/atctlsrpaper/ATCTLSRPaperCoordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/atcbleoepl/ATCBLEOEPLCoordinator.java @@ -15,7 +15,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package nodomain.freeyourgadget.gadgetbridge.devices.atctlsrpaper; +package nodomain.freeyourgadget.gadgetbridge.devices.atcbleoepl; import android.bluetooth.le.ScanFilter; import android.content.Context; @@ -33,12 +33,12 @@ import nodomain.freeyourgadget.gadgetbridge.devices.AbstractDeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.service.DeviceSupport; -import nodomain.freeyourgadget.gadgetbridge.service.devices.atctlsrpaper.ATCTLSRPaperDeviceSupport; +import nodomain.freeyourgadget.gadgetbridge.service.devices.atcbleoepl.ATCBLEOEPLDeviceSupport; -public class ATCTLSRPaperCoordinator extends AbstractDeviceCoordinator { +public class ATCBLEOEPLCoordinator extends AbstractDeviceCoordinator { @Override public int getDeviceNameResource() { - return R.string.devicetype_atc_tlsr_paper; + return R.string.devicetype_atc_ble_oepl; } @Override @@ -54,7 +54,7 @@ public class ATCTLSRPaperCoordinator extends AbstractDeviceCoordinator { @NonNull @Override public Class getDeviceSupportClass(final GBDevice device) { - return ATCTLSRPaperDeviceSupport.class; + return ATCBLEOEPLDeviceSupport.class; } @Override @@ -65,8 +65,8 @@ public class ATCTLSRPaperCoordinator extends AbstractDeviceCoordinator { @NonNull @Override public Collection createBLEScanFilters() { - ParcelUuid ATCTLSRPaperService = new ParcelUuid(ATCTLSRPaperDeviceSupport.UUID_SERVICE_MAIN); - ScanFilter filter = new ScanFilter.Builder().setServiceUuid(ATCTLSRPaperService).build(); + ParcelUuid ATCBLEOEPLService = new ParcelUuid(ATCBLEOEPLDeviceSupport.UUID_SERVICE_MAIN); + ScanFilter filter = new ScanFilter.Builder().setServiceUuid(ATCBLEOEPLService).build(); return Collections.singletonList(filter); } @@ -77,14 +77,14 @@ public class ATCTLSRPaperCoordinator extends AbstractDeviceCoordinator { @Override public InstallHandler findInstallHandler(final Uri uri, final Context context) { - ATCTLSRPaperInstallHandler installHandler = new ATCTLSRPaperInstallHandler(uri, context); + ATCBLEOEPLInstallHandler installHandler = new ATCBLEOEPLInstallHandler(uri, context); return installHandler.isValid() ? installHandler : null; } @Override public int[] getSupportedDeviceSpecificSettings(GBDevice device) { return new int[]{ - R.xml.devicesettings_atc_trsr_paper + R.xml.devicesettings_atc_ble_oepl }; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/atctlsrpaper/ATCTLSRPaperInstallHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/atcbleoepl/ATCBLEOEPLInstallHandler.java similarity index 87% rename from app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/atctlsrpaper/ATCTLSRPaperInstallHandler.java rename to app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/atcbleoepl/ATCBLEOEPLInstallHandler.java index 2641c4ad48..0ec4db4080 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/atctlsrpaper/ATCTLSRPaperInstallHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/atcbleoepl/ATCBLEOEPLInstallHandler.java @@ -15,7 +15,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -package nodomain.freeyourgadget.gadgetbridge.devices.atctlsrpaper; +package nodomain.freeyourgadget.gadgetbridge.devices.atcbleoepl; import android.content.Context; import android.net.Uri; @@ -24,11 +24,11 @@ import nodomain.freeyourgadget.gadgetbridge.activities.InstallActivity; import nodomain.freeyourgadget.gadgetbridge.devices.InstallHandler; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -public class ATCTLSRPaperInstallHandler implements InstallHandler { +public class ATCBLEOEPLInstallHandler implements InstallHandler { private final Context mContext; private final Uri mUri; - public ATCTLSRPaperInstallHandler(Uri uri, Context context) { + public ATCBLEOEPLInstallHandler(Uri uri, Context context) { mContext = context; mUri = uri; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java index 1f7bfbd9b9..a6e2e85e8a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/DeviceType.java @@ -31,7 +31,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.UnknownDeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.aawireless.AAWirelessCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.asteroidos.AsteroidOSDeviceCoordinator; -import nodomain.freeyourgadget.gadgetbridge.devices.atctlsrpaper.ATCTLSRPaperCoordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.atcbleoepl.ATCBLEOEPLCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.bandwpseries.BandWPSeriesDeviceCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.banglejs.BangleJSCoordinator; import nodomain.freeyourgadget.gadgetbridge.devices.binary_sensor.coordinator.BinarySensorCoordinator; @@ -725,7 +725,7 @@ public enum DeviceType { GENERIC_HEADPHONES(GenericHeadphonesCoordinator.class), TEST(TestDeviceCoordinator.class), ULTRAHUMAN_RING_AIR(UltrahumanDeviceCoordinator.class), - ATC_TLSR_PAPER(ATCTLSRPaperCoordinator.class); + ATC_BLE_OEPL(ATCBLEOEPLCoordinator.class); private DeviceCoordinator coordinator; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/atctlsrpaper/ATCTLSRPaperDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/atcbleoepl/ATCBLEOEPLDeviceSupport.java similarity index 93% rename from app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/atctlsrpaper/ATCTLSRPaperDeviceSupport.java rename to app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/atcbleoepl/ATCBLEOEPLDeviceSupport.java index 1cd608e482..47ed245705 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/atctlsrpaper/ATCTLSRPaperDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/atcbleoepl/ATCBLEOEPLDeviceSupport.java @@ -15,7 +15,7 @@ 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.atctlsrpaper; +package nodomain.freeyourgadget.gadgetbridge.service.devices.atcbleoepl; import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGattCharacteristic; @@ -54,10 +54,10 @@ import nodomain.freeyourgadget.gadgetbridge.util.GB; import nodomain.freeyourgadget.gadgetbridge.util.StringUtils; import nodomain.freeyourgadget.gadgetbridge.util.UriHelper; -public class ATCTLSRPaperDeviceSupport extends AbstractBTLESingleDeviceSupport { +public class ATCBLEOEPLDeviceSupport extends AbstractBTLESingleDeviceSupport { public static final UUID UUID_SERVICE_MAIN = UUID.fromString("00001337-0000-1000-8000-00805f9b34fb"); public static final UUID UUID_CHARACTERISTIC_MAIN = UUID.fromString("00001337-0000-1000-8000-00805f9b34fb"); - private static final Logger LOG = LoggerFactory.getLogger(ATCTLSRPaperDeviceSupport.class); + private static final Logger LOG = LoggerFactory.getLogger(ATCBLEOEPLDeviceSupport.class); private static final byte[] COMMAND_GET_CONFIGURATION = new byte[]{0x00, 0x05}; private static final byte[] COMMAND_ENABLE_OEPL = new byte[]{0x00, 0x06}; private static final byte[] COMMAND_DISABLE_OEPL = new byte[]{0x00, 0x07}; @@ -74,7 +74,7 @@ public class ATCTLSRPaperDeviceSupport extends AbstractBTLESingleDeviceSupport { private int current_chunk = -1; - public ATCTLSRPaperDeviceSupport() { + public ATCBLEOEPLDeviceSupport() { super(LOG); addSupportedService(UUID_SERVICE_MAIN); } @@ -255,9 +255,9 @@ public class ATCTLSRPaperDeviceSupport extends AbstractBTLESingleDeviceSupport { LOG.info("decoded data: version={}, width={}, height={}, nr_colors={}, w/h swapped={}, model={} ble_adv_interval={}, oepl_enabled={}", version, epaper_width, epaper_height, epaper_colors, is_wh_swapped, model, ble_adv_interval, oepl_enabled); SharedPreferences.Editor editor = GBApplication.getDeviceSpecificSharedPrefs(gbDevice.getAddress()).edit(); - editor.putString(DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_MODEL, String.valueOf(model)); - editor.putString(DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_BLE_ADV_INTERVAL, String.valueOf(ble_adv_interval)); - editor.putBoolean(DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_OEPL_PROTOCOL_ENABLE, oepl_enabled); + editor.putString(DeviceSettingsPreferenceConst.PREF_ATC_BLE_OEPL_MODEL, String.valueOf(model)); + editor.putString(DeviceSettingsPreferenceConst.PREF_ATC_BLE_OEPL_BLE_ADV_INTERVAL, String.valueOf(ble_adv_interval)); + editor.putBoolean(DeviceSettingsPreferenceConst.PREF_ATC_BLE_OEPL_OEPL_PROTOCOL_ENABLE, oepl_enabled); editor.apply(); final TransactionBuilder builder = new TransactionBuilder("set initialized"); @@ -267,16 +267,16 @@ public class ATCTLSRPaperDeviceSupport extends AbstractBTLESingleDeviceSupport { @Override public void onSendConfiguration(String config) { - if (DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_MODEL.equals(config) - || DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_BLE_ADV_INTERVAL.equals(config) - || DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_OEPL_PROTOCOL_ENABLE.equals(config) + if (DeviceSettingsPreferenceConst.PREF_ATC_BLE_OEPL_MODEL.equals(config) + || DeviceSettingsPreferenceConst.PREF_ATC_BLE_OEPL_BLE_ADV_INTERVAL.equals(config) + || DeviceSettingsPreferenceConst.PREF_ATC_BLE_OEPL_OEPL_PROTOCOL_ENABLE.equals(config) ) { TransactionBuilder builder; SharedPreferences sharedPrefs = GBApplication.getDeviceSpecificSharedPrefs(getDevice().getAddress()); try { builder = performInitialized("Sending configuration for option: " + config); - if (DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_MODEL.equals(config)) { - String display_model = sharedPrefs.getString(DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_MODEL, "1"); + if (DeviceSettingsPreferenceConst.PREF_ATC_BLE_OEPL_MODEL.equals(config)) { + String display_model = sharedPrefs.getString(DeviceSettingsPreferenceConst.PREF_ATC_BLE_OEPL_MODEL, "1"); int model = Integer.parseInt(display_model); if (model == 10000) {// HACK: this is for the HS 213 BWRY JD type builder.write(getCharacteristic(UUID_CHARACTERISTIC_MAIN), COMMAND_CONFIGURE_HS_154_BWRY_JD); @@ -284,13 +284,13 @@ public class ATCTLSRPaperDeviceSupport extends AbstractBTLESingleDeviceSupport { builder.write(getCharacteristic(UUID_CHARACTERISTIC_MAIN), new byte[]{0x00, 0x04, 0x00, (byte) model}); } } - if (DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_BLE_ADV_INTERVAL.equals(config)) { - String bt_adv_interval = sharedPrefs.getString(DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_BLE_ADV_INTERVAL, "1000"); + if (DeviceSettingsPreferenceConst.PREF_ATC_BLE_OEPL_BLE_ADV_INTERVAL.equals(config)) { + String bt_adv_interval = sharedPrefs.getString(DeviceSettingsPreferenceConst.PREF_ATC_BLE_OEPL_BLE_ADV_INTERVAL, "1000"); int interval = Integer.parseInt(bt_adv_interval); builder.write(getCharacteristic(UUID_CHARACTERISTIC_MAIN), new byte[]{0x00, 0x08, (byte) ((interval >> 8) & 0xff), (byte) (interval & 0xff)}); } - if (DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_OEPL_PROTOCOL_ENABLE.equals(config)) { - boolean enable_oepl_protocol = sharedPrefs.getBoolean(DeviceSettingsPreferenceConst.PREF_ATC_TLSR_PAPER_OEPL_PROTOCOL_ENABLE, true); + if (DeviceSettingsPreferenceConst.PREF_ATC_BLE_OEPL_OEPL_PROTOCOL_ENABLE.equals(config)) { + boolean enable_oepl_protocol = sharedPrefs.getBoolean(DeviceSettingsPreferenceConst.PREF_ATC_BLE_OEPL_OEPL_PROTOCOL_ENABLE, true); if (enable_oepl_protocol) { builder.write(getCharacteristic(UUID_CHARACTERISTIC_MAIN), COMMAND_ENABLE_OEPL); } else { diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index a2d95b2ab7..d1129fcd7b 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -4985,7 +4985,7 @@ 90 - + Gici 213 BW SSD Gici 213 BW ST Gici 213 BW UC @@ -5039,7 +5039,7 @@ - + 29 13 30 @@ -5091,7 +5091,7 @@ 39 - + 625ms 2000ms 2500ms @@ -5102,7 +5102,7 @@ 6250ms - + 1000 3200 4000 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ff96a55d56..efeed970d6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2051,7 +2051,7 @@ Bowers and Wilkins P series EarFun Air S EarFun Air Pro 4 - ATC_TLSR_Paper + ATC_BLE_OEPL Choose export location General High-priority @@ -4085,8 +4085,8 @@ Target app on watch for calendar events same image already on device sending image - Display Model - BLE Advertising Interval - Enable OEPL protocol - Disable this if only using BLE to save power + Display Model + BLE Advertising Interval + Enable OEPL protocol + Disable this if only using BLE to save power diff --git a/app/src/main/res/xml/devicesettings_atc_ble_oepl.xml b/app/src/main/res/xml/devicesettings_atc_ble_oepl.xml new file mode 100644 index 0000000000..2990fdbaf4 --- /dev/null +++ b/app/src/main/res/xml/devicesettings_atc_ble_oepl.xml @@ -0,0 +1,23 @@ + + + + + + diff --git a/app/src/main/res/xml/devicesettings_atc_trsr_paper.xml b/app/src/main/res/xml/devicesettings_atc_trsr_paper.xml deleted file mode 100644 index cb68c8433f..0000000000 --- a/app/src/main/res/xml/devicesettings_atc_trsr_paper.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - -