From 7e6d96ae8c5666ac37177cc582465ad95329da45 Mon Sep 17 00:00:00 2001 From: Thomas Kuehne Date: Fri, 5 Jun 2026 02:13:44 +0000 Subject: [PATCH] TransactionBuilder: rename wait/WaitAction to sleep/SleepAction Object.wait(long) and TransactionBuilder.wait(int) have too similar signatures that may result in unintentionally calling the wrong method. --- .../service/btbr/TransactionBuilder.java | 12 +++-- .../{WaitAction.java => SleepAction.java} | 4 +- .../service/btle/TransactionBuilder.java | 12 +++-- .../{WaitAction.java => SleepAction.java} | 4 +- .../atcbleoepl/ATCBLEOEPLDeviceSupport.java | 2 +- .../gb6900/CasioGB6900DeviceSupport.java | 4 +- .../casio/gb6900/SetAlarmOperation.java | 2 +- .../casio/gbd200/FetchSportDataOperation.java | 2 +- .../gbd200/FetchStepCountDataOperation.java | 2 +- .../devices/casio/gbd200/InitOperation.java | 2 +- .../gbx100/FetchStepCountDataOperation.java | 2 +- .../gbx100/GetConfigurationOperation.java | 2 +- .../gbx100/SetConfigurationOperation.java | 2 +- .../devices/domyos/DomyosT540Support.java | 4 +- .../devices/fitpro/FitProDeviceSupport.java | 18 ++++---- .../service/devices/hplus/HPlusSupport.java | 2 +- .../miband2/Mi2NotificationStrategy.java | 2 +- .../devices/huawei/requests/Request.java | 4 +- .../devices/keephealth/C60DeviceSupport.java | 44 +++++++++---------- .../laxasfit/LaxasFitDeviceSupport.java | 16 +++---- .../lefun/requests/MultiFetchRequest.java | 2 +- .../marstek/MarstekB2500DeviceSupport.java | 4 +- .../miband/V1NotificationStrategy.java | 8 ++-- .../miband/V2NotificationStrategy.java | 6 +-- .../devices/zetime/ZeTimeDeviceSupport.java | 2 +- 25 files changed, 88 insertions(+), 76 deletions(-) rename app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/actions/{WaitAction.java => SleepAction.java} (94%) rename app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/actions/{WaitAction.java => SleepAction.java} (94%) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/TransactionBuilder.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/TransactionBuilder.java index ef99a67fb2..9da2363cba 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/TransactionBuilder.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/TransactionBuilder.java @@ -32,7 +32,7 @@ import java.util.function.Predicate; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.service.btbr.actions.FunctionAction; import nodomain.freeyourgadget.gadgetbridge.service.btbr.actions.SetProgressAction; -import nodomain.freeyourgadget.gadgetbridge.service.btbr.actions.WaitAction; +import nodomain.freeyourgadget.gadgetbridge.service.btbr.actions.SleepAction; import nodomain.freeyourgadget.gadgetbridge.service.btbr.actions.WriteAction; import nodomain.freeyourgadget.gadgetbridge.service.btbr.actions.SetDeviceStateAction; import nodomain.freeyourgadget.gadgetbridge.service.btbr.actions.SetDeviceBusyAction; @@ -72,11 +72,17 @@ public class TransactionBuilder { * @see Thread#sleep(long) */ @NonNull - public TransactionBuilder wait(@IntRange(from = 0L) int millis) { - WaitAction action = new WaitAction(millis); + public TransactionBuilder sleep(@IntRange(from = 0L) int millis) { + SleepAction action = new SleepAction(millis); return add(action); } + /// @deprecated use {@link #sleep(int)} instead + @Deprecated + public TransactionBuilder wait(@IntRange(from = 0L) int millis) { + return sleep(millis); + } + /// Causes the {@link BtBRQueue} to execute the {@link Predicate} and expect no {@link SocketCallback} result. /// The {@link Transaction} is aborted if the predicate throws an {@link Exception} or returns {@code false}. /// diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/actions/WaitAction.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/actions/SleepAction.java similarity index 94% rename from app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/actions/WaitAction.java rename to app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/actions/SleepAction.java index fd36b33f60..5261913435 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/actions/WaitAction.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btbr/actions/SleepAction.java @@ -23,11 +23,11 @@ import android.bluetooth.BluetoothSocket; * Note that this is usually a bad idea, since it will not be able to process messages * during that time. It is also likely to cause race conditions. */ -public class WaitAction extends PlainAction { +public class SleepAction extends PlainAction { private final int mMillis; - public WaitAction(int millis) { + public SleepAction(int millis) { mMillis = millis; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/TransactionBuilder.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/TransactionBuilder.java index 9657c8c69e..5355e27390 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/TransactionBuilder.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/TransactionBuilder.java @@ -50,7 +50,7 @@ import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceBusyAc import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetDeviceStateAction; import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetPreferredPhyAction; import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SetProgressAction; -import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.WaitAction; +import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.SleepAction; import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.WriteAction; public class TransactionBuilder { @@ -275,11 +275,17 @@ public class TransactionBuilder { * @see Thread#sleep(long) */ @NonNull - public TransactionBuilder wait(@IntRange(from = 0L) int millis) { - WaitAction action = new WaitAction(millis); + public TransactionBuilder sleep(@IntRange(from = 0L) int millis) { + SleepAction action = new SleepAction(millis); return add(action); } + /// @deprecated use {@link #sleep(int)} instead + @Deprecated + public TransactionBuilder wait(@IntRange(from = 0L) int millis) { + return sleep(millis); + } + /// Causes the {@link BtLEQueue} to execute the {@link Predicate} and expect no {@link GattCallback} result. /// The {@link Transaction} is aborted if the predicate throws an {@link Exception} or returns {@code false}. /// diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/actions/WaitAction.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/actions/SleepAction.java similarity index 94% rename from app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/actions/WaitAction.java rename to app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/actions/SleepAction.java index 82c09b4487..67afa4d20d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/actions/WaitAction.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/actions/SleepAction.java @@ -23,11 +23,11 @@ import android.bluetooth.BluetoothGatt; * Note that this is usually a bad idea, since it will not be able to process messages * during that time. It is also likely to cause race conditions. */ -public class WaitAction extends PlainAction { +public class SleepAction extends PlainAction { private final int mMillis; - public WaitAction(int millis) { + public SleepAction(int millis) { mMillis = millis; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/atcbleoepl/ATCBLEOEPLDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/atcbleoepl/ATCBLEOEPLDeviceSupport.java index 167d3783ae..82760e8f7b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/atcbleoepl/ATCBLEOEPLDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/atcbleoepl/ATCBLEOEPLDeviceSupport.java @@ -90,7 +90,7 @@ public class ATCBLEOEPLDeviceSupport extends AbstractBTLESingleDeviceSupport { getDevice().setFirmwareVersion2("N/A"); builder.requestMtu(512); builder.notify(UUID_CHARACTERISTIC_MAIN, true); - builder.wait(300); + builder.sleep(300); builder.write(UUID_CHARACTERISTIC_MAIN, COMMAND_GET_CONFIGURATION); return builder; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/gb6900/CasioGB6900DeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/gb6900/CasioGB6900DeviceSupport.java index b23da437c5..0b08f89d55 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/gb6900/CasioGB6900DeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/gb6900/CasioGB6900DeviceSupport.java @@ -209,7 +209,7 @@ public class CasioGB6900DeviceSupport extends CasioSupport { BluetoothGattService llService = mBtGatt.getService(CasioConstants.LINK_LOSS_SERVICE); BluetoothGattCharacteristic charact = llService.getCharacteristic(CasioConstants.ALERT_LEVEL_CHARACTERISTIC_UUID); builder.writeLegacy(charact, value); - builder.wait(mCasioSleepTime); + builder.sleep(mCasioSleepTime); } private void addCharacteristics() { @@ -223,7 +223,7 @@ public class CasioGB6900DeviceSupport extends CasioSupport { public boolean enableNotifications(TransactionBuilder builder, boolean enable) { for(BluetoothGattCharacteristic charact : mCasioCharacteristics) { builder.notify(charact, enable); - builder.wait(mCasioSleepTime); + builder.sleep(mCasioSleepTime); } return true; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/gb6900/SetAlarmOperation.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/gb6900/SetAlarmOperation.java index 6390d83214..f1c5170470 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/gb6900/SetAlarmOperation.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/casio/gb6900/SetAlarmOperation.java @@ -73,7 +73,7 @@ public class SetAlarmOperation extends AbstractBTLEOperation 0) { - builder.wait(wait); + builder.sleep(wait); } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/laxasfit/LaxasFitDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/laxasfit/LaxasFitDeviceSupport.java index 870b52e142..e7410a126f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/laxasfit/LaxasFitDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/laxasfit/LaxasFitDeviceSupport.java @@ -212,21 +212,21 @@ public class LaxasFitDeviceSupport extends AbstractBTLESingleDeviceSupport { builder.write(writeCharacteristic, craftData(CMD_GROUP_GENERAL, LaxasFitConstants.CMD_INIT1, (byte) 0x2)); setTime(builder); - //builder.wait(200); + //builder.sleep(200); builder.write(writeCharacteristic, craftData(CMD_GROUP_REQUEST_DATA, LaxasFitConstants.CMD_INIT1)); - //builder.wait(200); + //builder.sleep(200); builder.write(writeCharacteristic, craftData(CMD_GROUP_REQUEST_DATA, LaxasFitConstants.CMD_INIT2)); - //builder.wait(200); + //builder.sleep(200); builder.write(writeCharacteristic, craftData(CMD_GROUP_GENERAL, LaxasFitConstants.CMD_INIT3, VALUE_ON)); - //builder.wait(200); + //builder.sleep(200); builder.write(writeCharacteristic, craftData(CMD_GROUP_REQUEST_DATA, VALUE_ON)); - //builder.wait(200); + //builder.sleep(200); builder.write(writeCharacteristic, craftData(CMD_GROUP_REQUEST_DATA, (byte) 0xf)); - //builder.wait(200); + //builder.sleep(200); builder.write(writeCharacteristic, craftData(CMD_GROUP_REQUEST_DATA, CMD_GET_HW_INFO)); - //builder.wait(200); + //builder.sleep(200); builder.write(writeCharacteristic, craftData(CMD_GROUP_BAND_INFO, CMD_RX_BAND_INFO)); - //builder.wait(200); + //builder.sleep(200); builder.setDeviceState(GBDevice.State.INITIALIZED); return builder; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/MultiFetchRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/MultiFetchRequest.java index 290af072ef..7675388468 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/MultiFetchRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/lefun/requests/MultiFetchRequest.java @@ -54,7 +54,7 @@ public abstract class MultiFetchRequest extends Request { throw new IllegalStateException("Device is busy"); } builder.setBusyTask(getOperationName()); - builder.wait(1000); // Wait a bit (after previous operation), or device sometimes won't respond + builder.sleep(1000); // Wait a bit (after previous operation), or device sometimes won't respond } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/marstek/MarstekB2500DeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/marstek/MarstekB2500DeviceSupport.java index d6020a048f..94303f5280 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/marstek/MarstekB2500DeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/marstek/MarstekB2500DeviceSupport.java @@ -118,7 +118,7 @@ public class MarstekB2500DeviceSupport extends AbstractBTLESingleDeviceSupport { getDevice().setFirmwareVersion2("N/A"); builder.requestMtu(512); builder.notify(UUID_CHARACTERISTIC_MAIN, true); - builder.wait(3500); + builder.sleep(3500); builder.write(UUID_CHARACTERISTIC_MAIN, COMMAND_GET_INFOS1); return builder; } @@ -133,7 +133,7 @@ public class MarstekB2500DeviceSupport extends AbstractBTLESingleDeviceSupport { BluetoothGattCharacteristic characteristic = getCharacteristic(UUID_CHARACTERISTIC_MAIN); if (characteristic != null && contents != null) { builder.write(characteristic, contents); - builder.wait(750); + builder.sleep(750); builder.queue(); } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/V1NotificationStrategy.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/V1NotificationStrategy.java index 089b73bcfb..a7386224fd 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/V1NotificationStrategy.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/V1NotificationStrategy.java @@ -87,12 +87,12 @@ public class V1NotificationStrategy implements NotificationStrategy { int on = onOffSequence[j]; on = Math.min(500, on); // longer than 500ms is not possible builder.write(controlPoint, startVibrate); - builder.wait(on); + builder.sleep(on); builder.write(controlPoint, stopVibrate); if (++j < onOffSequence.length) { int off = Math.max(onOffSequence[j], 25); // wait at least 25ms - builder.wait(off); + builder.sleep(off); } if (extraAction != null) { @@ -112,10 +112,10 @@ public class V1NotificationStrategy implements NotificationStrategy { // int vDuration = Math.min(500, vibrateDuration); // longer than 500ms is not possible // for (int i = 0; i < vibrateTimes; i++) { // builder.write(controlPoint, startVibrate); -// builder.wait(vDuration); +// builder.sleep(vDuration); // builder.write(controlPoint, stopVibrate); // if (pause > 0) { -// builder.wait(pause); +// builder.sleep(pause); // } // } // diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/V2NotificationStrategy.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/V2NotificationStrategy.java index c97cd62a25..e533d45a93 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/V2NotificationStrategy.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/miband/V2NotificationStrategy.java @@ -52,14 +52,14 @@ public class V2NotificationStrategy i int on = onOffSequence[j]; on = Math.min(500, on); // longer than 500ms is not possible builder.write(alert, new byte[]{GattCharacteristic.MILD_ALERT}); //MILD_ALERT lights up GREEN leds, HIGH_ALERT lights up RED leds -// builder.wait(on); +// builder.sleep(on); // builder.write(alert, new byte[]{GattCharacteristic.HIGH_ALERT}); - builder.wait(on); + builder.sleep(on); builder.write(alert, new byte[]{GattCharacteristic.NO_ALERT}); if (++j < onOffSequence.length) { int off = Math.max(onOffSequence[j], 25); // wait at least 25ms - builder.wait(off); + builder.sleep(off); } if (extraAction != null) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/zetime/ZeTimeDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/zetime/ZeTimeDeviceSupport.java index eb008cb132..783ffc2e37 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/zetime/ZeTimeDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/zetime/ZeTimeDeviceSupport.java @@ -573,7 +573,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLESingleDeviceSupport { byte[] message = encodeCalendarEvent(body, calendarEvent.getBeginSeconds(), opcode); sendMsgToWatch(builder, message); - builder.wait(300); // Urgh, seems it is a general problem when sending data too fast + builder.sleep(300); // Urgh, seems it is a general problem when sending data too fast if (eventCount++ == 16) { // limit this to 16 for now break;