From 78578cc86dd2d4ab75ca200661a1cf91173eb542 Mon Sep 17 00:00:00 2001 From: Thomas Kuehne Date: Sun, 13 Jul 2025 00:00:00 +0200 Subject: [PATCH] btle+br: use DeviceSupport.createTransactionBuilder instead of TransactionBuilder's constructor to prepare for queue isolation --- .../service/btbr/TransactionBuilder.java | 2 +- .../btle/AbstractBTLEMultiDeviceSupport.java | 10 +++++----- .../service/btle/TransactionBuilder.java | 2 +- .../asteroidos/AsteroidOSDeviceSupport.java | 16 +++++++-------- .../atcbleoepl/ATCBLEOEPLDeviceSupport.java | 10 +++++----- .../binary_sensor/BinarySensorSupport.java | 4 ++-- .../devices/domyos/DomyosT540Support.java | 6 +++--- .../evenrealities/G1DeviceSupport.java | 6 ++++-- .../devices/evenrealities/G1SideManager.java | 12 +++++++---- .../FemometerVinca2DeviceSupport.java | 2 +- .../devices/fitpro/FitProDeviceSupport.java | 20 +++++++++---------- .../zero/support/FlipperZeroSupport.java | 2 +- .../communicator/v1/CommunicatorV1.java | 2 +- .../communicator/v2/CommunicatorV2.java | 12 +++++------ .../devices/hplus/HPlusHandlerThread.java | 10 +++++----- .../service/devices/huami/HuamiSupport.java | 2 +- .../zeppos/ZeppOsBtbrTransactionBuilder.java | 2 +- .../zeppos/ZeppOsBtleTransactionBuilder.java | 2 +- .../devices/idasen/IdasenDeviceSupport.java | 6 +++--- .../service/devices/itag/ITagSupport.java | 2 +- .../marstek/MarstekB2500DeviceSupport.java | 2 +- .../service/devices/nut/NutSupport.java | 4 ++-- .../devices/pinetime/PineTimeJFSupport.java | 10 +++++----- .../adapter/fossil/FossilWatchAdapter.java | 10 +++++----- .../adapter/misfit/MisfitWatchAdapter.java | 4 ++-- .../fossil/file/FilePutRawRequest.java | 4 ++-- .../VerifyPrivateKeyRequest.java | 2 +- .../file/FileEncryptedPutRequest.java | 4 ++-- .../devices/supercars/SuperCarsSupport.java | 2 +- .../GenericThermalPrinterSupport.java | 2 +- .../devices/um25/Support/UM25Support.java | 4 ++-- .../devices/vesc/VescDeviceSupport.java | 2 +- .../vibratissimo/VibratissimoSupport.java | 2 +- .../yawell/ring/YawellRingDeviceSupport.java | 4 ++-- .../devices/zetime/ZeTimeDeviceSupport.java | 2 +- .../devices/huami/HuamiSupportTest.java | 2 +- 36 files changed, 98 insertions(+), 92 deletions(-) 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 d16e13d61c..13118c4db0 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 @@ -37,7 +37,7 @@ public class TransactionBuilder { private final Transaction mTransaction; private boolean mQueued; - public TransactionBuilder(String taskName) { + TransactionBuilder(String taskName) { mTransaction = new Transaction(taskName); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/AbstractBTLEMultiDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/AbstractBTLEMultiDeviceSupport.java index 00d6a6c173..438bab13d0 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/AbstractBTLEMultiDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/btle/AbstractBTLEMultiDeviceSupport.java @@ -230,8 +230,8 @@ public abstract class AbstractBTLEMultiDeviceSupport extends AbstractBTLEDeviceS } } - public TransactionBuilder createTransactionBuilder(String taskName) { - return new TransactionBuilder(taskName); + public TransactionBuilder createTransactionBuilder(String taskName, int deviceIdx) { + return new TransactionBuilder(taskName + "_" + deviceIdx); } public ServerTransactionBuilder createServerTransactionBuilder(String taskName) { @@ -268,12 +268,12 @@ public abstract class AbstractBTLEMultiDeviceSupport extends AbstractBTLEDeviceS if (!devices[deviceIdx].isInitialized()) { logger.debug("Initializing device for {}", taskName); // first, add a transaction that performs device initialization - TransactionBuilder builder = createTransactionBuilder("Initialize device"); + TransactionBuilder builder = createTransactionBuilder("Initialize device", deviceIdx); builder.add(new CheckInitializedAction(devices[deviceIdx])); initializeDevice(builder, deviceIdx); builder.queue(getQueue(deviceIdx)); } - return createTransactionBuilder(taskName); + return createTransactionBuilder(taskName, deviceIdx); } /** @@ -447,7 +447,7 @@ public abstract class AbstractBTLEMultiDeviceSupport extends AbstractBTLEDeviceS getDevice(deviceIdx), deviceIdx, getDevice(deviceIdx).getState()); return; } - TransactionBuilder builder = createTransactionBuilder("Initializing device_" + deviceIdx); + TransactionBuilder builder = createTransactionBuilder("Initializing device", deviceIdx); if (bleApis[deviceIdx] != null) { bleApis[deviceIdx].initializeDevice(builder); 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 dc56c52ea9..88d5aa6d5b 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 @@ -53,7 +53,7 @@ public class TransactionBuilder { private final Transaction mTransaction; private boolean mQueued; - public TransactionBuilder(String taskName) { + TransactionBuilder(String taskName) { mTransaction = new Transaction(taskName); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/asteroidos/AsteroidOSDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/asteroidos/AsteroidOSDeviceSupport.java index 71c92eda27..8a96147124 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/asteroidos/AsteroidOSDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/asteroidos/AsteroidOSDeviceSupport.java @@ -121,7 +121,7 @@ public class AsteroidOSDeviceSupport extends AbstractBTLESingleDeviceSupport { @Override public void onNotification(NotificationSpec notificationSpec) { AsteroidOSNotification notif = new AsteroidOSNotification(notificationSpec); - TransactionBuilder builder = new TransactionBuilder("send notification"); + TransactionBuilder builder = createTransactionBuilder("send notification"); safeWriteToCharacteristic(builder, AsteroidOSConstants.NOTIFICATION_UPDATE_CHAR, notif.toString().getBytes(StandardCharsets.UTF_8)); builder.queue(getQueue()); } @@ -129,14 +129,14 @@ public class AsteroidOSDeviceSupport extends AbstractBTLESingleDeviceSupport { @Override public void onDeleteNotification(int id) { AsteroidOSNotification notif = new AsteroidOSNotification(id); - TransactionBuilder builder = new TransactionBuilder("delete notification"); + TransactionBuilder builder = createTransactionBuilder("delete notification"); safeWriteToCharacteristic(builder, AsteroidOSConstants.NOTIFICATION_UPDATE_CHAR, notif.toString().getBytes(StandardCharsets.UTF_8)); builder.queue(getQueue()); } @Override public void onSetTime() { - TransactionBuilder builder = new TransactionBuilder("set time"); + TransactionBuilder builder = createTransactionBuilder("set time"); onSetTime(builder); builder.queue(getQueue()); } @@ -157,14 +157,14 @@ public class AsteroidOSDeviceSupport extends AbstractBTLESingleDeviceSupport { @Override public void onSetCallState(CallSpec callSpec) { AsteroidOSNotification call = new AsteroidOSNotification(callSpec); - TransactionBuilder builder = new TransactionBuilder("send call"); + TransactionBuilder builder = createTransactionBuilder("send call"); safeWriteToCharacteristic(builder, AsteroidOSConstants.NOTIFICATION_UPDATE_CHAR, call.toString().getBytes(StandardCharsets.UTF_8)); builder.queue(getQueue()); } @Override public void onSetMusicState(MusicStateSpec stateSpec) { - TransactionBuilder builder = new TransactionBuilder("set music state"); + TransactionBuilder builder = createTransactionBuilder("set music state"); if (stateSpec.state == MusicStateSpec.STATE_PLAYING) { safeWriteToCharacteristic(builder, AsteroidOSConstants.MEDIA_PLAYING_CHAR, new byte[]{1}); } else { @@ -175,7 +175,7 @@ public class AsteroidOSDeviceSupport extends AbstractBTLESingleDeviceSupport { @Override public void onSetMusicInfo(MusicSpec musicSpec) { - TransactionBuilder builder = new TransactionBuilder("send music information"); + TransactionBuilder builder = createTransactionBuilder("send music information"); // Send title { byte[] track_bytes; @@ -208,7 +208,7 @@ public class AsteroidOSDeviceSupport extends AbstractBTLESingleDeviceSupport { @Override public void onSetPhoneVolume(float volume) { - TransactionBuilder builder = new TransactionBuilder("send volume information"); + TransactionBuilder builder = createTransactionBuilder("send volume information"); byte volByte = (byte) Math.round(volume); safeWriteToCharacteristic(builder, AsteroidOSConstants.MEDIA_VOLUME_CHAR, new byte[]{volByte}); builder.queue(getQueue()); @@ -226,7 +226,7 @@ public class AsteroidOSDeviceSupport extends AbstractBTLESingleDeviceSupport { public void onSendWeather(ArrayList weatherSpecs) { WeatherSpec weatherSpec = weatherSpecs.get(0); AsteroidOSWeather asteroidOSWeather = new AsteroidOSWeather(weatherSpec); - TransactionBuilder builder = new TransactionBuilder("send weather info"); + TransactionBuilder builder = createTransactionBuilder("send weather info"); // Send city name safeWriteToCharacteristic(builder, AsteroidOSConstants.WEATHER_CITY_CHAR, asteroidOSWeather.getCityName()); // Send conditions 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 1932517427..ffbff44acd 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 @@ -187,7 +187,7 @@ public class ATCBLEOEPLDeviceSupport extends AbstractBTLESingleDeviceSupport { if (!success) { GB.toast(getContext().getString(R.string.same_image_already_on_device), Toast.LENGTH_LONG, GB.WARN); } - final TransactionBuilder builder = new TransactionBuilder("finish upload"); + final TransactionBuilder builder = createTransactionBuilder("finish upload"); builder.add(new SetProgressAction(getContext().getString(R.string.sending_image), false, 100, getContext())); if (!is_firmware) { builder.write(getCharacteristic(UUID_CHARACTERISTIC_MAIN), new byte[]{0x00, 0x03}); @@ -205,7 +205,7 @@ public class ATCBLEOEPLDeviceSupport extends AbstractBTLESingleDeviceSupport { } private void handleNextBlockRequest(byte[] value) { - final TransactionBuilder builder = new TransactionBuilder("send image start"); + final TransactionBuilder builder = createTransactionBuilder("send image start"); builder.write(getCharacteristic(UUID_CHARACTERISTIC_MAIN), new byte[]{0x00, 0x02}); current_chunk = 0; current_block = value[11]; @@ -217,7 +217,7 @@ public class ATCBLEOEPLDeviceSupport extends AbstractBTLESingleDeviceSupport { } private void handleNextChunkRequest(boolean success) { - final TransactionBuilder builder = new TransactionBuilder("send image chunk"); + final TransactionBuilder builder = createTransactionBuilder("send image chunk"); if (success) { current_chunk++; // only send next chunk when successful, else resend last chunk } @@ -264,7 +264,7 @@ public class ATCBLEOEPLDeviceSupport extends AbstractBTLESingleDeviceSupport { editor.putBoolean(DeviceSettingsPreferenceConst.PREF_ATC_BLE_OEPL_OEPL_PROTOCOL_ENABLE, oepl_enabled); editor.apply(); - final TransactionBuilder builder = new TransactionBuilder("set initialized"); + final TransactionBuilder builder = createTransactionBuilder("set initialized"); builder.add(new SetDeviceStateAction(getDevice(), GBDevice.State.INITIALIZED, getContext())); builder.queue(getQueue()); } @@ -457,7 +457,7 @@ public class ATCBLEOEPLDeviceSupport extends AbstractBTLESingleDeviceSupport { buf.put((byte) 0x00); buf.putShort((byte) 0x00); - final TransactionBuilder builder = new TransactionBuilder("send image prepare"); + final TransactionBuilder builder = createTransactionBuilder("send image prepare"); builder.write(getCharacteristic(UUID_CHARACTERISTIC_MAIN), buf.array()); builder.setBusyTask(getDevice(), R.string.sending_image, getContext()); builder.queue(getQueue()); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/binary_sensor/BinarySensorSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/binary_sensor/BinarySensorSupport.java index f420e946fb..cf0eb66e61 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/binary_sensor/BinarySensorSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/binary_sensor/BinarySensorSupport.java @@ -146,7 +146,7 @@ public class BinarySensorSupport extends BinarySensorBaseSupport { for (Parameter parameter : response.getParameters()) { if (parameter instanceof SensorState) { if(getDevice().getState() != GBDevice.State.INITIALIZED){ - new TransactionBuilder("set device state") + createTransactionBuilder("set device state") .setUpdateState(getDevice(), GBDevice.State.INITIALIZED, getContext()) .queue(getQueue()); } @@ -171,7 +171,7 @@ public class BinarySensorSupport extends BinarySensorBaseSupport { } private void sendPacketToDevice(byte[] data) { - TransactionBuilder builder = new TransactionBuilder("BSS control"); + TransactionBuilder builder = createTransactionBuilder("BSS control"); sendPacketToDevice(data, builder); builder.queue(getQueue()); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/domyos/DomyosT540Support.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/domyos/DomyosT540Support.java index d38fc0eca1..d666753dfc 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/domyos/DomyosT540Support.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/domyos/DomyosT540Support.java @@ -207,7 +207,7 @@ public class DomyosT540Support extends AbstractBTLESingleDeviceSupport { command[3] = getChecksum(command); BluetoothGattCharacteristic characteristic = getCharacteristic(UUUD_CHARACTERISTICS_WRITE); - TransactionBuilder builder = new TransactionBuilder("beep"); + TransactionBuilder builder = createTransactionBuilder("beep"); builder.write(characteristic, command); builder.queue(getQueue()); @@ -247,7 +247,7 @@ public class DomyosT540Support extends AbstractBTLESingleDeviceSupport { buf.get(); // ?? boolean workoutStarted = buf.get() > 0; - TransactionBuilder builder = new TransactionBuilder("send update"); + TransactionBuilder builder = createTransactionBuilder("send update"); if (buttonCode == 6 || buttonCode == 7) { if (workoutStarted || buttonCode == 7) { @@ -295,7 +295,7 @@ public class DomyosT540Support extends AbstractBTLESingleDeviceSupport { @Override public void onTestNewFunction() { - TransactionBuilder builder = new TransactionBuilder("xxx"); + TransactionBuilder builder = createTransactionBuilder("xxx"); //setDisplayValues(builder, 1, 10, 10, 10, 10); //writeChunked(builder, COMMAND_SET_DISPLAY); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/evenrealities/G1DeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/evenrealities/G1DeviceSupport.java index 94df6bf1e9..6a1bf6b4c1 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/evenrealities/G1DeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/evenrealities/G1DeviceSupport.java @@ -236,11 +236,13 @@ public class G1DeviceSupport extends AbstractBTLEMultiDeviceSupport { // Create the desired side. if (deviceIdx == G1Constants.Side.LEFT.getDeviceIndex()) { leftSide = new G1SideManager(G1Constants.Side.LEFT, backgroundTasksHandler, getQueue, - getDevice, handleEvent, this::getDevicePrefs, rx, tx); + getDevice, handleEvent, this::getDevicePrefs, rx, tx, + this::createTransactionBuilder); return leftSide; } else if (deviceIdx == G1Constants.Side.RIGHT.getDeviceIndex()) { rightSide = new G1SideManager(G1Constants.Side.RIGHT, backgroundTasksHandler, getQueue, - getDevice, handleEvent, this::getDevicePrefs, rx, tx); + getDevice, handleEvent, this::getDevicePrefs, rx, tx, + this::createTransactionBuilder); return rightSide; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/evenrealities/G1SideManager.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/evenrealities/G1SideManager.java index e41d6f2350..92c0dcf876 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/evenrealities/G1SideManager.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/evenrealities/G1SideManager.java @@ -12,6 +12,7 @@ import java.nio.charset.StandardCharsets; import java.util.HashSet; import java.util.Set; import java.util.concurrent.Callable; +import java.util.function.BiFunction; import java.util.function.Function; import nodomain.freeyourgadget.gadgetbridge.GBApplication; @@ -43,6 +44,7 @@ public class G1SideManager { private final Callable getDeviceHandler; private final Function sendEventHandler; private final Callable getPrefsHandler; + private final BiFunction createTransactionBuilder; private final BluetoothGattCharacteristic rx; private final BluetoothGattCharacteristic tx; private final Runnable batteryRunner; @@ -57,13 +59,15 @@ public class G1SideManager { public G1SideManager(G1Constants.Side mySide, Handler backgroundTasksHandler, Callable getQueue, Callable getDevice, Function sendEvent, Callable getPrefs, - BluetoothGattCharacteristic rx, BluetoothGattCharacteristic tx) { + BluetoothGattCharacteristic rx, BluetoothGattCharacteristic tx, + BiFunction createTransactionBuilder) { this.mySide = mySide; this.backgroundTasksHandler = backgroundTasksHandler; this.getQueueHandler = getQueue; this.getDeviceHandler = getDevice; this.sendEventHandler = sendEvent; this.getPrefsHandler = getPrefs; + this.createTransactionBuilder = createTransactionBuilder; this.rx = rx; this.tx = tx; this.batteryRunner = () -> { @@ -163,7 +167,7 @@ public class G1SideManager { public void postInitializeLeft() { TransactionBuilder transaction = - new TransactionBuilder("post_initialize_left_" + mySide.getDeviceIndex()); + createTransactionBuilder.apply("post_initialize_left", mySide.getDeviceIndex()); postInitializeCommon(transaction); // These can be sent to both, but the left lens is used as the master for these settings. @@ -175,7 +179,7 @@ public class G1SideManager { public void postInitializeRight() { TransactionBuilder transaction = - new TransactionBuilder( "post_initialize_right_" + mySide.getDeviceIndex()); + createTransactionBuilder.apply( "post_initialize_right", mySide.getDeviceIndex()); postInitializeCommon(transaction); // This settings are only sent to the right lens in the official app, so we copy that. @@ -277,7 +281,7 @@ public class G1SideManager { public void send(G1Communications.CommandHandler command) { TransactionBuilder transaction = - new TransactionBuilder(command.getName() + "_" + mySide.getDeviceIndex()); + createTransactionBuilder.apply(command.getName(), mySide.getDeviceIndex()); sendInTransaction(transaction, command); transaction.queue(getQueue()); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/femometer/FemometerVinca2DeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/femometer/FemometerVinca2DeviceSupport.java index f59cb21da0..a76ac510cc 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/femometer/FemometerVinca2DeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/femometer/FemometerVinca2DeviceSupport.java @@ -175,7 +175,7 @@ public class FemometerVinca2DeviceSupport extends AbstractBTLESingleDeviceSuppor @Override public void onSetTime() { - TransactionBuilder builder = new TransactionBuilder("set time"); + TransactionBuilder builder = createTransactionBuilder("set time"); setCurrentTime(builder); builder.queue(getQueue()); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/fitpro/FitProDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/fitpro/FitProDeviceSupport.java index ccdd86291b..8101552a36 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/fitpro/FitProDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/fitpro/FitProDeviceSupport.java @@ -402,7 +402,7 @@ public class FitProDeviceSupport extends AbstractBTLESingleDeviceSupport { //the band does not like to answer when asked together for both hw info, so ask now, // after data is already received - TransactionBuilder builder = new TransactionBuilder("notification"); + TransactionBuilder builder = createTransactionBuilder("notification"); builder.write(writeCharacteristic, craftData(CMD_GROUP_BAND_INFO, CMD_RX_BAND_INFO)); builder.queue(getQueue()); @@ -432,7 +432,7 @@ public class FitProDeviceSupport extends AbstractBTLESingleDeviceSupport { @Override public void onSetCallState(CallSpec callSpec) { LOG.debug("FitPro send call notification"); - TransactionBuilder builder = new TransactionBuilder("CALL"); + TransactionBuilder builder = createTransactionBuilder("CALL"); if (callSpec.command == CallSpec.CALL_INCOMING) { @@ -530,7 +530,7 @@ public class FitProDeviceSupport extends AbstractBTLESingleDeviceSupport { public void sendAck(byte command_group, byte length_high, byte length_low, byte command) { LOG.debug(" ACKing data: " + nodomain.freeyourgadget.gadgetbridge.util.ArrayUtils.arrayToString(new byte[]{command_group}) + " " + nodomain.freeyourgadget.gadgetbridge.util.ArrayUtils.arrayToString(new byte[]{command})); - TransactionBuilder builder = new TransactionBuilder("notification"); + TransactionBuilder builder = createTransactionBuilder("notification"); short size = (short) (ByteBuffer.wrap(new byte[]{length_high, length_low}).getShort() + 3); byte[] sizeArray = ByteBuffer.allocate(2).putShort(size).array(); builder.write(writeCharacteristic, new byte[]{FitProConstants.DATA_HEADER_ACK, 0, 5, command_group, 1, sizeArray[0], sizeArray[1], 1}); @@ -557,7 +557,7 @@ public class FitProDeviceSupport extends AbstractBTLESingleDeviceSupport { } byte currentConditionCode = Weather.mapToFitProCondition(weatherSpec.currentConditionCode); - TransactionBuilder builder = new TransactionBuilder("weather"); + TransactionBuilder builder = createTransactionBuilder("weather"); writeChunkedData(builder, craftData(CMD_GROUP_GENERAL, CMD_WEATHER, new byte[]{(byte) todayMin, (byte) todayMax, (byte) currentConditionCode, (byte) weatherUnit})); builder.queue(getQueue()); } @@ -570,7 +570,7 @@ public class FitProDeviceSupport extends AbstractBTLESingleDeviceSupport { @Override public void onNotification(NotificationSpec notificationSpec) { LOG.debug("FitPro notification: " + notificationSpec.type); - TransactionBuilder builder = new TransactionBuilder("notification"); + TransactionBuilder builder = createTransactionBuilder("notification"); byte icon = NOTIFICATION_ICON_SMS; switch (notificationSpec.type) { case GENERIC_SMS: @@ -738,7 +738,7 @@ public class FitProDeviceSupport extends AbstractBTLESingleDeviceSupport { @Override public void onFetchRecordedData(int dataTypes) { indicateFinishedFetchingOperation(); - TransactionBuilder builder = new TransactionBuilder("fetch data1"); + TransactionBuilder builder = createTransactionBuilder("fetch data1"); builder.setBusyTask(getDevice(), R.string.busy_task_fetch_activity_data, getContext()); builder.write(writeCharacteristic, craftData(CMD_GROUP_RECEIVE_SPORTS_DATA, CMD_REQUEST_STEPS_DATA1, VALUE_ON)); builder.queue(getQueue()); @@ -868,7 +868,7 @@ public class FitProDeviceSupport extends AbstractBTLESingleDeviceSupport { @Override public void onSetTime() { LOG.debug("FitPro set date and time"); - TransactionBuilder builder = new TransactionBuilder("Set date and time"); + TransactionBuilder builder = createTransactionBuilder("Set date and time"); setTime(builder); builder.queue(getQueue()); } @@ -964,14 +964,14 @@ public class FitProDeviceSupport extends AbstractBTLESingleDeviceSupport { } getQueue().clear(); - TransactionBuilder builder = new TransactionBuilder("resetting"); + TransactionBuilder builder = createTransactionBuilder("resetting"); builder.write(writeCharacteristic, command); builder.queue(getQueue()); } @Override public void onHeartRateTest() { - TransactionBuilder builder = new TransactionBuilder("notification"); + TransactionBuilder builder = createTransactionBuilder("notification"); builder.write(writeCharacteristic, craftData(CMD_GROUP_GENERAL, CMD_HEART_RATE_MEASUREMENT, VALUE_ON)); builder.queue(getQueue()); } @@ -980,7 +980,7 @@ public class FitProDeviceSupport extends AbstractBTLESingleDeviceSupport { public void onFindDevice(boolean start) { getQueue().clear(); LOG.debug("FitPro find device"); - TransactionBuilder builder = new TransactionBuilder("searching"); + TransactionBuilder builder = createTransactionBuilder("searching"); builder.write(writeCharacteristic, craftData(CMD_GROUP_GENERAL, CMD_FIND_BAND, start ? VALUE_ON : VALUE_OFF)); builder.queue(getQueue()); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/flipper/zero/support/FlipperZeroSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/flipper/zero/support/FlipperZeroSupport.java index aaf57411e4..258133b986 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/flipper/zero/support/FlipperZeroSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/flipper/zero/support/FlipperZeroSupport.java @@ -168,7 +168,7 @@ public class FlipperZeroSupport extends FlipperZeroBaseSupport{ } private void sendSerialData(byte[] data){ - new TransactionBuilder("send serial data") + createTransactionBuilder("send serial data") .write(getCharacteristic(UUID.fromString(UUID_SERIAL_CHARACTERISTIC_WRITE)), data) .queue(getQueue()); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/communicator/v1/CommunicatorV1.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/communicator/v1/CommunicatorV1.java index 516d345c4b..6f5556ab9f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/communicator/v1/CommunicatorV1.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/communicator/v1/CommunicatorV1.java @@ -74,7 +74,7 @@ public class CommunicatorV1 implements ICommunicator { final byte[] payload = cobsCoDec.encode(message); - final TransactionBuilder builder = new TransactionBuilder(taskName); + final TransactionBuilder builder = mSupport.createTransactionBuilder(taskName); int remainingBytes = payload.length; if (remainingBytes > maxWriteSize - 1) { int position = 0; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/communicator/v2/CommunicatorV2.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/communicator/v2/CommunicatorV2.java index 064f864b4a..61f1d2887c 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/communicator/v2/CommunicatorV2.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/garmin/communicator/v2/CommunicatorV2.java @@ -108,7 +108,7 @@ public class CommunicatorV2 implements ICommunicator { } final byte[] payload = cobsCoDec.encode(message); // LOG.debug("SENDING MESSAGE: {} - COBS ENCODED: {}", GB.hexdump(message), GB.hexdump(payload)); - final TransactionBuilder builder = new TransactionBuilder(taskName); + final TransactionBuilder builder = mSupport.createTransactionBuilder(taskName); int remainingBytes = payload.length; if (remainingBytes > maxWriteSize - 1) { int position = 0; @@ -161,7 +161,7 @@ public class CommunicatorV2 implements ICommunicator { public void onHeartRateTest() { realtimeHrOneShot = true; if (realtimeHrHandle == 0) { - new TransactionBuilder("heart rate test") + mSupport.createTransactionBuilder("heart rate test") .write(characteristicSend, registerService(Service.REALTIME_HR, false)) .queue(this.mSupport.getQueue()); } @@ -181,12 +181,12 @@ public class CommunicatorV2 implements ICommunicator { private boolean toggleService(final Service service, final int currentHandle, final boolean enable) { if (enable && currentHandle == 0) { - new TransactionBuilder(service + " = true") + mSupport.createTransactionBuilder(service + " = true") .write(characteristicSend, registerService(service, false)) .queue(this.mSupport.getQueue()); return true; } else if (!enable && currentHandle != 0) { - new TransactionBuilder(service + " = false") + mSupport.createTransactionBuilder(service + " = false") .write(characteristicSend, closeService(service, currentHandle)) .queue(this.mSupport.getQueue()); return true; @@ -245,7 +245,7 @@ public class CommunicatorV2 implements ICommunicator { break; case REALTIME_ACCELEROMETER: this.realtimeAccelHandle = handle; - new TransactionBuilder("start realtime accel") + mSupport.createTransactionBuilder("start realtime accel") .write(characteristicSend, new byte[]{(byte) handle, 0x01}) .queue(this.mSupport.getQueue()); break; @@ -303,7 +303,7 @@ public class CommunicatorV2 implements ICommunicator { this.realtimeSpo2Handle = 0; this.realtimeRespirationHandle = 0; this.realtimeHrvHandle = 0; - new TransactionBuilder("open GFDI") + mSupport.createTransactionBuilder("open GFDI") .write(characteristicSend, registerService(Service.GFDI, false)) .queue(this.mSupport.getQueue()); break; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/hplus/HPlusHandlerThread.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/hplus/HPlusHandlerThread.java index dc42efac3d..fc3bd6c823 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/hplus/HPlusHandlerThread.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/hplus/HPlusHandlerThread.java @@ -164,7 +164,7 @@ class HPlusHandlerThread extends GBDeviceIoThread { if (!mHPlusSupport.isConnected()) mHPlusSupport.connect(); - TransactionBuilder builder = new TransactionBuilder("startSyncDayStats"); + TransactionBuilder builder = mHPlusSupport.createTransactionBuilder("startSyncDayStats"); builder.write(mHPlusSupport.ctrlCharacteristic, new byte[]{HPlusConstants.CMD_GET_DEVICE_ID}); builder.write(mHPlusSupport.ctrlCharacteristic, new byte[]{HPlusConstants.CMD_GET_VERSION}); @@ -182,7 +182,7 @@ class HPlusHandlerThread extends GBDeviceIoThread { public void sendHello() { try { - TransactionBuilder builder = new TransactionBuilder("hello"); + TransactionBuilder builder = mHPlusSupport.createTransactionBuilder("hello"); builder.write(mHPlusSupport.ctrlCharacteristic, HPlusConstants.CMD_ACTION_HELLO); mHPlusSupport.performConnected(builder.getTransaction()); @@ -540,7 +540,7 @@ class HPlusHandlerThread extends GBDeviceIoThread { */ private void requestNextSleepData() { try { - TransactionBuilder builder = new TransactionBuilder("requestSleepStats"); + TransactionBuilder builder = mHPlusSupport.createTransactionBuilder("requestSleepStats"); builder.write(mHPlusSupport.ctrlCharacteristic, new byte[]{HPlusConstants.CMD_GET_SLEEP}); mHPlusSupport.performConnected(builder.getTransaction()); } catch (Exception e) { @@ -595,7 +595,7 @@ class HPlusHandlerThread extends GBDeviceIoThread { byte[] msg = new byte[]{HPlusConstants.CMD_GET_ACTIVE_DAY, hour, minute, nextHour, nextMinute}; try { - TransactionBuilder builder = new TransactionBuilder("getNextDaySlot"); + TransactionBuilder builder = mHPlusSupport.createTransactionBuilder("getNextDaySlot"); builder.write(mHPlusSupport.ctrlCharacteristic, msg); mHPlusSupport.performConnected(builder.getTransaction()); } catch (Exception e) { @@ -608,7 +608,7 @@ class HPlusHandlerThread extends GBDeviceIoThread { */ public void requestDaySummaryData() { try { - TransactionBuilder builder = new TransactionBuilder("startSyncDaySummary"); + TransactionBuilder builder = mHPlusSupport.createTransactionBuilder("startSyncDaySummary"); builder.write(mHPlusSupport.ctrlCharacteristic, new byte[]{HPlusConstants.CMD_GET_DAY_DATA}); mHPlusSupport.performConnected(builder.getTransaction()); } catch (Exception e) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java index cc1db3cd07..9148be5fd6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupport.java @@ -1684,7 +1684,7 @@ public abstract class HuamiSupport extends AbstractBTLESingleDeviceSupport case HuamiDeviceEvent.ALARM_TOGGLED: case HuamiDeviceEvent.ALARM_CHANGED: LOG.info("An alarm was toggled or changed"); - TransactionBuilder builder = new TransactionBuilder("requestAlarms"); + TransactionBuilder builder = createTransactionBuilder("requestAlarms"); requestAlarms(builder); builder.queue(getQueue()); break; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/zeppos/ZeppOsBtbrTransactionBuilder.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/zeppos/ZeppOsBtbrTransactionBuilder.java index 6eb6adf19a..b7c8f05a76 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/zeppos/ZeppOsBtbrTransactionBuilder.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/zeppos/ZeppOsBtbrTransactionBuilder.java @@ -32,7 +32,7 @@ public class ZeppOsBtbrTransactionBuilder implements ZeppOsTransactionBuilder { public ZeppOsBtbrTransactionBuilder(final ZeppOsBtbrSupport mSupport, final String taskName) { this.mSupport = mSupport; - this.mBuilder = new TransactionBuilder(taskName); + this.mBuilder = mSupport.createTransactionBuilder(taskName); } public ZeppOsBtbrTransactionBuilder(final ZeppOsBtbrSupport mSupport, final TransactionBuilder builder) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/zeppos/ZeppOsBtleTransactionBuilder.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/zeppos/ZeppOsBtleTransactionBuilder.java index 3896c2b959..7d775073dc 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/zeppos/ZeppOsBtleTransactionBuilder.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/zeppos/ZeppOsBtleTransactionBuilder.java @@ -32,7 +32,7 @@ public class ZeppOsBtleTransactionBuilder implements ZeppOsTransactionBuilder { public ZeppOsBtleTransactionBuilder(final ZeppOsBtleSupport mSupport, final String taskName) { this.mSupport = mSupport; - this.mBuilder = new TransactionBuilder(taskName); + this.mBuilder = mSupport.createTransactionBuilder(taskName); } public ZeppOsBtleTransactionBuilder(final ZeppOsBtleSupport mSupport, final TransactionBuilder builder) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/idasen/IdasenDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/idasen/IdasenDeviceSupport.java index 5e4e13fe78..01758ec49f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/idasen/IdasenDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/idasen/IdasenDeviceSupport.java @@ -95,7 +95,7 @@ public class IdasenDeviceSupport extends AbstractBTLESingleDeviceSupport { // needs to get from the lowest to the highest point. int cutOff = 100; do { - TransactionBuilder builder = new TransactionBuilder("height"); + TransactionBuilder builder = createTransactionBuilder("height"); builder.write(characteristic, setHeightRequest); builder.queue(getQueue()); @@ -168,7 +168,7 @@ public class IdasenDeviceSupport extends AbstractBTLESingleDeviceSupport { private void readCharacteristic(String taskName, UUID charac) { BluetoothGattCharacteristic characteristic = getCharacteristic(charac); - TransactionBuilder builder = new TransactionBuilder(taskName); + TransactionBuilder builder = createTransactionBuilder(taskName); builder.read(characteristic); builder.queue(getQueue()); } @@ -200,7 +200,7 @@ public class IdasenDeviceSupport extends AbstractBTLESingleDeviceSupport { } private void sendCommand(String taskName, UUID charac, byte[] contents) { - TransactionBuilder builder = new TransactionBuilder(taskName); + TransactionBuilder builder = createTransactionBuilder(taskName); BluetoothGattCharacteristic characteristic = getCharacteristic(charac); if (characteristic != null) { builder.write(characteristic, contents); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/itag/ITagSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/itag/ITagSupport.java index 554788fd23..008bd5322b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/itag/ITagSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/itag/ITagSupport.java @@ -116,7 +116,7 @@ public class ITagSupport extends AbstractBTLESingleDeviceSupport { getQueue().clear(); BluetoothGattCharacteristic characteristic = getCharacteristic(ITagConstants.UUID_LINK_LOSS_ALERT_LEVEL); - TransactionBuilder builder = new TransactionBuilder("beeping"); + TransactionBuilder builder = createTransactionBuilder("beeping"); builder.write(characteristic, new byte[]{(byte) intensity}); builder.queue(getQueue()); } 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 399e4ba563..499cf06d4d 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 @@ -129,7 +129,7 @@ public class MarstekB2500DeviceSupport extends AbstractBTLESingleDeviceSupport { } private void sendCommand(String taskName, byte[] contents) { - TransactionBuilder builder = new TransactionBuilder(taskName); + TransactionBuilder builder = createTransactionBuilder(taskName); BluetoothGattCharacteristic characteristic = getCharacteristic(UUID_CHARACTERISTIC_MAIN); if (characteristic != null && contents != null) { builder.write(characteristic, contents); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/nut/NutSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/nut/NutSupport.java index 3525168499..88ceaae381 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/nut/NutSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/nut/NutSupport.java @@ -457,7 +457,7 @@ public class NutSupport extends AbstractBTLESingleDeviceSupport { private void writeCharacteristic(String taskName, UUID charac, byte[] data) { BluetoothGattCharacteristic characteristic = getCharacteristic(charac); - TransactionBuilder builder = new TransactionBuilder(taskName); + TransactionBuilder builder = createTransactionBuilder(taskName); builder.write(characteristic, data); builder.queue(getQueue()); } @@ -471,7 +471,7 @@ public class NutSupport extends AbstractBTLESingleDeviceSupport { private void readCharacteristic(String taskName, UUID charac) { BluetoothGattCharacteristic characteristic = getCharacteristic(charac); - TransactionBuilder builder = new TransactionBuilder(taskName); + TransactionBuilder builder = createTransactionBuilder(taskName); builder.read(characteristic); builder.queue(getQueue()); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pinetime/PineTimeJFSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pinetime/PineTimeJFSupport.java index 2c6d478b84..e4db0ea0e1 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pinetime/PineTimeJFSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/pinetime/PineTimeJFSupport.java @@ -298,7 +298,7 @@ public class PineTimeJFSupport extends AbstractBTLESingleDeviceSupport implement @Override public void onNotification(NotificationSpec notificationSpec) { - TransactionBuilder builder = new TransactionBuilder("notification"); + TransactionBuilder builder = createTransactionBuilder("notification"); String message; String source = null; @@ -341,7 +341,7 @@ public class PineTimeJFSupport extends AbstractBTLESingleDeviceSupport implement @Override public void onSetNavigationInfo(NavigationInfoSpec navigationInfoSpec) { - TransactionBuilder builder = new TransactionBuilder("navigation info"); + TransactionBuilder builder = createTransactionBuilder("navigation info"); if (navigationInfoSpec.instruction == null) { navigationInfoSpec.instruction = ""; } @@ -413,7 +413,7 @@ public class PineTimeJFSupport extends AbstractBTLESingleDeviceSupport implement byte[] bytesCurrentTime = BLETypeConversions.calendarToCurrentTime(now, 0); byte[] bytesLocalTime = BLETypeConversions.calendarToLocalTime(now); - TransactionBuilder builder = new TransactionBuilder("set time"); + TransactionBuilder builder = createTransactionBuilder("set time"); builder.write(getCharacteristic(GattCharacteristic.UUID_CHARACTERISTIC_CURRENT_TIME), bytesCurrentTime); builder.write(getCharacteristic(GattCharacteristic.UUID_CHARACTERISTIC_LOCAL_TIME), bytesLocalTime); builder.queue(getQueue()); @@ -422,7 +422,7 @@ public class PineTimeJFSupport extends AbstractBTLESingleDeviceSupport implement @Override public void onSetCallState(CallSpec callSpec) { if (callSpec.command == CallSpec.CALL_INCOMING) { - TransactionBuilder builder = new TransactionBuilder("incomingcall"); + TransactionBuilder builder = createTransactionBuilder("incomingcall"); String message; if (isFirmwareAtLeastVersion0_15() && callSpec.sourceName != null) { @@ -631,7 +631,7 @@ public class PineTimeJFSupport extends AbstractBTLESingleDeviceSupport implement baos.write(new byte[9]); } - TransactionBuilder builder = new TransactionBuilder("set world clocks"); + TransactionBuilder builder = createTransactionBuilder("set world clocks"); builder.write(getCharacteristic(PineTimeJFConstants.UUID_CHARACTERISTIC_WORLD_TIME), baos.toByteArray()); builder.queue(getQueue()); } catch (Exception e) { 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 6a22c94b6a..cf4cc0b9ca 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 @@ -702,14 +702,14 @@ public class FossilWatchAdapter extends WatchAdapter { try { if (!this.supportsExtendedVibration()) { if (start) { - new TransactionBuilder("vibrate find") + getDeviceSupport().createTransactionBuilder("vibrate find") .write( getDeviceSupport().getCharacteristic(UUID.fromString("3dda0005-957f-7d4a-34a6-74696673696d")), new byte[]{(byte) 0x01, (byte) 0x04, (byte) 0x30, (byte) 0x75, (byte) 0x00, (byte) 0x00} ) .queue(getDeviceSupport().getQueue()); } else { - new TransactionBuilder("vibrate find") + getDeviceSupport().createTransactionBuilder("vibrate find") .write( getDeviceSupport().getCharacteristic(UUID.fromString("3dda0005-957f-7d4a-34a6-74696673696d")), new byte[]{(byte) 0x02, (byte) 0x05, (byte) 0x04} @@ -817,7 +817,7 @@ public class FossilWatchAdapter extends WatchAdapter { log("dropping requetst " + request.getName()); return; } - new TransactionBuilder("requestMtu") + getDeviceSupport().createTransactionBuilder("requestMtu") .requestMtu(512) .queue(getDeviceSupport().getQueue()); @@ -865,7 +865,7 @@ public class FossilWatchAdapter extends WatchAdapter { log("executing request: " + request.getName()); restartRequestTimeout(); this.fossilRequest = request; - new TransactionBuilder(request.getClass().getSimpleName()).write(getDeviceSupport().getCharacteristic(request.getRequestUUID()), request.getRequestData()).queue(getDeviceSupport().getQueue()); + getDeviceSupport().createTransactionBuilder(request.getClass().getSimpleName()).write(getDeviceSupport().getCharacteristic(request.getRequestUUID()), request.getRequestData()).queue(getDeviceSupport().getQueue()); if (request.isFinished()) { this.fossilRequest = null; @@ -881,7 +881,7 @@ public class FossilWatchAdapter extends WatchAdapter { return; } restartRequestTimeout(); - new TransactionBuilder(request.getClass().getSimpleName()).write(getDeviceSupport().getCharacteristic(request.getRequestUUID()), request.getRequestData()).queue(getDeviceSupport().getQueue()); + getDeviceSupport().createTransactionBuilder(request.getClass().getSimpleName()).write(getDeviceSupport().getCharacteristic(request.getRequestUUID()), request.getRequestData()).queue(getDeviceSupport().getQueue()); queueNextRequest(); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/misfit/MisfitWatchAdapter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/misfit/MisfitWatchAdapter.java index 78869c62b2..d278f068cc 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/misfit/MisfitWatchAdapter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/adapter/misfit/MisfitWatchAdapter.java @@ -314,7 +314,7 @@ public class MisfitWatchAdapter extends WatchAdapter { break; case UPLOAD: for (byte[] packet : this.uploadFileRequest.packets) { - new TransactionBuilder("File upload").write(characteristic, packet).queue(getDeviceSupport().getQueue()); + getDeviceSupport().createTransactionBuilder("File upload").write(characteristic, packet).queue(getDeviceSupport().getQueue()); } break; case UPLOADED: @@ -495,7 +495,7 @@ public class MisfitWatchAdapter extends WatchAdapter { } private void queueWrite(Request request) { - new TransactionBuilder(request.getClass().getSimpleName()).write(getDeviceSupport().getCharacteristic(request.getRequestUUID()), request.getRequestData()).queue(getDeviceSupport().getQueue()); + getDeviceSupport().createTransactionBuilder(request.getClass().getSimpleName()).write(getDeviceSupport().getCharacteristic(request.getRequestUUID()), request.getRequestData()).queue(getDeviceSupport().getQueue()); // if (request instanceof FileRequest) this.fileRequest = request; if (!request.expectsResponse()) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FilePutRawRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FilePutRawRequest.java index 4c3b83e6c5..43e5a136aa 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FilePutRawRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil/file/FilePutRawRequest.java @@ -83,7 +83,7 @@ public class FilePutRawRequest extends FossilRequest { } state = UploadState.UPLOADING; - TransactionBuilder transactionBuilder = new TransactionBuilder("file upload"); + TransactionBuilder transactionBuilder = adapter.getDeviceSupport().createTransactionBuilder("file upload"); BluetoothGattCharacteristic uploadCharacteristic = adapter.getDeviceSupport().getCharacteristic(UUID.fromString("3dda0004-957f-7d4a-34a6-74696673696d")); this.prepareFilePackets(this.file); @@ -124,7 +124,7 @@ public class FilePutRawRequest extends FossilRequest { buffer2.put((byte) 4); buffer2.putShort(this.handle); - new TransactionBuilder("file close") + adapter.getDeviceSupport().createTransactionBuilder("file close") .write( adapter.getDeviceSupport().getCharacteristic(UUID.fromString("3dda0003-957f-7d4a-34a6-74696673696d")), buffer2.array() diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/authentication/VerifyPrivateKeyRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/authentication/VerifyPrivateKeyRequest.java index 98984d5087..c91e18eb23 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/authentication/VerifyPrivateKeyRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/authentication/VerifyPrivateKeyRequest.java @@ -90,7 +90,7 @@ public class VerifyPrivateKeyRequest extends AuthenticationRequest { System.arraycopy(result, 0, payload, 3, 16); - new TransactionBuilder("send encrypted random numbers") + adapter.getDeviceSupport().createTransactionBuilder("send encrypted random numbers") .write(characteristic, payload) .queue(this.adapter.getDeviceSupport().getQueue()); } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | IllegalBlockSizeException | BadPaddingException | InvalidAlgorithmParameterException e) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/FileEncryptedPutRequest.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/FileEncryptedPutRequest.java index 7157f9e924..33ea6e26f2 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/FileEncryptedPutRequest.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/qhybrid/requests/fossil_hr/file/FileEncryptedPutRequest.java @@ -84,7 +84,7 @@ public class FileEncryptedPutRequest extends FossilRequest implements FileEncryp } state = UploadState.UPLOADING; - TransactionBuilder transactionBuilder = new TransactionBuilder("file upload"); + TransactionBuilder transactionBuilder = adapter.getDeviceSupport().createTransactionBuilder("file upload"); BluetoothGattCharacteristic uploadCharacteristic = adapter.getDeviceSupport().getCharacteristic(UUID.fromString("3dda0004-957f-7d4a-34a6-74696673696d")); this.prepareFilePackets(this.file); @@ -150,7 +150,7 @@ public class FileEncryptedPutRequest extends FossilRequest implements FileEncryp buffer2.put((byte) 4); buffer2.putShort(this.handle); - new TransactionBuilder("file close") + adapter.getDeviceSupport().createTransactionBuilder("file close") .write( adapter.getDeviceSupport().getCharacteristic(UUID.fromString("3dda0003-957f-7d4a-34a6-74696673696d")), buffer2.array() diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/supercars/SuperCarsSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/supercars/SuperCarsSupport.java index 1552152834..436e5e0179 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/supercars/SuperCarsSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/supercars/SuperCarsSupport.java @@ -156,7 +156,7 @@ public class SuperCarsSupport extends AbstractBTLESingleDeviceSupport { SuperCarsConstants.Direction direction) { byte[] command = craft_packet(speed, direction, movement, light); - TransactionBuilder builder = new TransactionBuilder("send data"); + TransactionBuilder builder = createTransactionBuilder("send data"); BluetoothGattCharacteristic writeCharacteristic = getCharacteristic(SuperCarsConstants.CHARACTERISTIC_UUID_FFF1); builder.write(writeCharacteristic, encryptData(command)); builder.queue(getQueue()); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/thermalprinter/GenericThermalPrinterSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/thermalprinter/GenericThermalPrinterSupport.java index f5d6c0088a..09df7dfa23 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/thermalprinter/GenericThermalPrinterSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/thermalprinter/GenericThermalPrinterSupport.java @@ -387,7 +387,7 @@ public class GenericThermalPrinterSupport extends AbstractBTLESingleDeviceSuppor } public void send(String taskname, byte[] command) { - TransactionBuilder builder = new TransactionBuilder(taskname); + TransactionBuilder builder = createTransactionBuilder(taskname); builder.writeChunkedData(getCharacteristic(writeCharUUID), command, 123); builder.queue(getQueue()); } 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 d0e7cf7cda..3b8984101d 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 @@ -91,7 +91,7 @@ public class UM25Support extends UM25BaseSupport { if(!ACTION_RESET_STATS.equals(intent.getAction())){ return; } - new TransactionBuilder("reset stats") + createTransactionBuilder("reset stats") .write(getCharacteristic(UUID.fromString(UUID_CHAR)), COMMAND_RESET_STATS) .queue(getQueue()); } @@ -162,7 +162,7 @@ public class UM25Support extends UM25BaseSupport { logger.debug("sending read command"); buffer.reset(); - new TransactionBuilder("send read command") + createTransactionBuilder("send read command") .write(getCharacteristic(UUID.fromString(UUID_CHAR)), COMMAND_UPDATE) .queue(getQueue()); logger.debug("sent command"); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/vesc/VescDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/vesc/VescDeviceSupport.java index c1b7de093a..fbf28ac934 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/vesc/VescDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/vesc/VescDeviceSupport.java @@ -288,7 +288,7 @@ public class VescDeviceSupport extends VescBaseDeviceSupport { } public void queryPacket(byte[] data) { - new TransactionBuilder("write serial packet") + createTransactionBuilder("write serial packet") .write(this.serialWriteCharacteristic, data) .queue(getQueue()); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/vibratissimo/VibratissimoSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/vibratissimo/VibratissimoSupport.java index 1bf471bb79..437d5a1d41 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/vibratissimo/VibratissimoSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/vibratissimo/VibratissimoSupport.java @@ -118,7 +118,7 @@ public class VibratissimoSupport extends AbstractBTLESingleDeviceSupport { BluetoothGattCharacteristic characteristic2 = getCharacteristic(UUID.fromString("00001526-1212-efde-1523-785feabcd123")); BluetoothGattCharacteristic characteristic1 = getCharacteristic(UUID.fromString("00001524-1212-efde-1523-785feabcd123")); - TransactionBuilder builder = new TransactionBuilder("vibration"); + TransactionBuilder builder = createTransactionBuilder("vibration"); builder.write(characteristic1, new byte[]{0x03, (byte) 0x80}); builder.write(characteristic2, new byte[]{(byte) intensity, 0x00}); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/yawell/ring/YawellRingDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/yawell/ring/YawellRingDeviceSupport.java index 2576eb6d77..70e24cf33d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/yawell/ring/YawellRingDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/yawell/ring/YawellRingDeviceSupport.java @@ -464,7 +464,7 @@ public class YawellRingDeviceSupport extends AbstractBTLESingleDeviceSupport { } private void sendWrite(String taskName, byte[] contents) { - TransactionBuilder builder = new TransactionBuilder(taskName); + TransactionBuilder builder = createTransactionBuilder(taskName); BluetoothGattCharacteristic characteristic = getCharacteristic(YawellRingConstants.CHARACTERISTIC_WRITE); if (characteristic != null) { builder.write(characteristic, contents); @@ -473,7 +473,7 @@ public class YawellRingDeviceSupport extends AbstractBTLESingleDeviceSupport { } private void sendCommand(String taskName, byte[] contents) { - TransactionBuilder builder = new TransactionBuilder(taskName); + TransactionBuilder builder = createTransactionBuilder(taskName); BluetoothGattCharacteristic characteristic = getCharacteristic(YawellRingConstants.CHARACTERISTIC_COMMAND); if (characteristic != null) { builder.write(characteristic, contents); 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 4a118da925..d196284087 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 @@ -1011,7 +1011,7 @@ public class ZeTimeDeviceSupport extends AbstractBTLESingleDeviceSupport { } evaluateGBDeviceEvent(versionCmd); - TransactionBuilder builder = new TransactionBuilder("setDeviceInitialized"); + TransactionBuilder builder = createTransactionBuilder("setDeviceInitialized"); builder.setUpdateState(getDevice(), GBDevice.State.INITIALIZED, getContext()); try { performConnected(builder.getTransaction()); diff --git a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupportTest.java b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupportTest.java index ec5fe44b45..4485a6e4ce 100644 --- a/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupportTest.java +++ b/app/src/test/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huami/HuamiSupportTest.java @@ -38,8 +38,8 @@ import nodomain.freeyourgadget.gadgetbridge.service.btle.actions.WriteAction; public class HuamiSupportTest { @Test public void testSetCurrentTime() { - final TransactionBuilder testTransactionBuilder = new TransactionBuilder("test"); final HuamiSupport huamiSupport = createSupport(); + final TransactionBuilder testTransactionBuilder = huamiSupport.createTransactionBuilder("test"); huamiSupport.setCurrentTime(testTransactionBuilder); final WriteAction action = (WriteAction) testTransactionBuilder.getTransaction().getActions().get(0);