From 6f7844418e206465ca5ece4d164fa596fcb248d3 Mon Sep 17 00:00:00 2001 From: Daniel Dakhno Date: Tue, 9 Jul 2024 00:25:01 +0200 Subject: [PATCH] Device UM25C: fixed disconnection scenario --- .../um25/Coordinator/UM25Coordinator.java | 56 ------------------- .../devices/um25/Support/UM25Support.java | 17 +++--- 2 files changed, 10 insertions(+), 63 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/um25/Coordinator/UM25Coordinator.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/um25/Coordinator/UM25Coordinator.java index 6eccc35b1..122bd055b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/um25/Coordinator/UM25Coordinator.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/um25/Coordinator/UM25Coordinator.java @@ -77,52 +77,11 @@ public class UM25Coordinator extends AbstractBLEDeviceCoordinator { }; } - @Nullable - @Override - public Class getPairingActivity() { - return null; - } - - @Override - public boolean supportsActivityDataFetching() { - return false; - } - - @Override - public boolean supportsActivityTracking() { - return false; - } - - @Override - public SampleProvider getSampleProvider(GBDevice device, DaoSession session) { - return null; - } - - @Override - public boolean supportsFindDevice() { - return false; - } - @Override public InstallHandler findInstallHandler(Uri uri, Context context) { return null; } - @Override - public boolean supportsScreenshots(final GBDevice device) { - return false; - } - - @Override - public int getAlarmSlotCount(GBDevice device) { - return 0; - } - - @Override - public boolean supportsHeartRateMeasurement(GBDevice device) { - return false; - } - @Override public String getManufacturer() { return "Ruideng"; @@ -138,21 +97,6 @@ public class UM25Coordinator extends AbstractBLEDeviceCoordinator { return DataActivity.class; } - @Override - public boolean supportsCalendarEvents() { - return false; - } - - @Override - public boolean supportsRealtimeData() { - return false; - } - - @Override - public boolean supportsWeather() { - return false; - } - @Override public int getBatteryCount() { return 0; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/um25/Support/UM25Support.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/um25/Support/UM25Support.java index 2342c575e..e0c4cfd92 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/um25/Support/UM25Support.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/um25/Support/UM25Support.java @@ -68,6 +68,8 @@ public class UM25Support extends UM25BaseSupport { private ByteBuffer buffer = ByteBuffer.allocate(PAYLOAD_LENGTH); + ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1); + private static final Logger logger = LoggerFactory.getLogger(UM25Support.class); SharedPreferences preferences; @@ -142,19 +144,20 @@ public class UM25Support extends UM25BaseSupport { super.dispose(); LocalBroadcastManager.getInstance(getContext()) .unregisterReceiver(resetReceiver); + executor.shutdown(); } private void startLoop(){ - ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1); - executor.scheduleWithFixedDelay(new Runnable() { - @Override - public void run() { - sendReadCommand(); - } - }, 0, LOOP_DELAY, TimeUnit.MILLISECONDS); + executor.scheduleWithFixedDelay(this::sendReadCommand, 0, LOOP_DELAY, TimeUnit.MILLISECONDS); } private void sendReadCommand(){ + if(!getDevice().isConnected()){ + logger.debug("device disconnected, stopping executor"); + executor.shutdown(); + return; + } + logger.debug("sending read command"); buffer.reset(); new TransactionBuilder("send read command")