From 580b86f41bc30375693e7721a443efa797d31b28 Mon Sep 17 00:00:00 2001 From: cpfeiffer Date: Fri, 3 Jul 2015 21:58:13 +0200 Subject: [PATCH] Add creation timestamps to BtLEActions and transactions in debug output (I think I still sometimes get "old" notifications) --- .../freeyourgadget/gadgetbridge/btle/BtLEAction.java | 11 ++++++++++- .../freeyourgadget/gadgetbridge/btle/BtLEQueue.java | 3 +++ .../gadgetbridge/btle/SetDeviceBusyAction.java | 2 +- .../freeyourgadget/gadgetbridge/btle/Transaction.java | 9 ++++++++- 4 files changed, 22 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/btle/BtLEAction.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/btle/BtLEAction.java index 6985aa5a4..5b4d2ceeb 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/btle/BtLEAction.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/btle/BtLEAction.java @@ -3,6 +3,9 @@ package nodomain.freeyourgadget.gadgetbridge.btle; import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGattCharacteristic; +import java.text.DateFormat; +import java.util.Date; + /** * The Bluedroid implementation only allows performing one GATT request at a time. * As they are asynchronous anyway, we encapsulate every GATT request (read and write) @@ -13,9 +16,11 @@ import android.bluetooth.BluetoothGattCharacteristic; */ public abstract class BtLEAction { private final BluetoothGattCharacteristic characteristic; + private final long creationTimestamp; public BtLEAction(BluetoothGattCharacteristic characteristic) { this.characteristic = characteristic; + creationTimestamp = System.currentTimeMillis(); } /** @@ -44,9 +49,13 @@ public abstract class BtLEAction { return characteristic; } + protected String getCreationTime() { + return DateFormat.getTimeInstance(DateFormat.MEDIUM).format(new Date(creationTimestamp)); + } + public String toString() { BluetoothGattCharacteristic characteristic = getCharacteristic(); String uuid = characteristic == null ? "(null)" : characteristic.getUuid().toString(); - return getClass().getSimpleName() + " on characteristic: " + uuid; + return getCreationTime() + ": " + getClass().getSimpleName() + " on characteristic: " + uuid; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/btle/BtLEQueue.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/btle/BtLEQueue.java index fd7e521d9..5ff241a64 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/btle/BtLEQueue.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/btle/BtLEQueue.java @@ -71,6 +71,9 @@ public final class BtLEQueue { for (BtLEAction action : transaction.getActions()) { mWaitCharacteristic = action.getCharacteristic(); mWaitForActionResultLatch = new CountDownLatch(1); + if (LOG.isDebugEnabled()) { + LOG.debug("About to run action: " + action); + } if (action.run(mBluetoothGatt)) { // check again, maybe due to some condition, action did not need to write, so we can't wait boolean waitForResult = action.expectsResult(); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/btle/SetDeviceBusyAction.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/btle/SetDeviceBusyAction.java index 27f66c6f7..f34aa8fc3 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/btle/SetDeviceBusyAction.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/btle/SetDeviceBusyAction.java @@ -32,6 +32,6 @@ public class SetDeviceBusyAction extends PlainAction { @Override public String toString() { - return getClass().getName() + ": " + busyTask; + return getCreationTime() + ": " + getClass().getName() + ": " + busyTask; } } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/btle/Transaction.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/btle/Transaction.java index 562c3fe14..9a042c42a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/btle/Transaction.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/btle/Transaction.java @@ -1,7 +1,9 @@ package nodomain.freeyourgadget.gadgetbridge.btle; +import java.text.DateFormat; import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.Locale; @@ -14,6 +16,7 @@ import java.util.Locale; public class Transaction { private String mName; private List mActions = new ArrayList<>(4); + private long creationTimestamp = System.currentTimeMillis(); public Transaction(String taskName) { this.mName = taskName; @@ -35,8 +38,12 @@ public class Transaction { return mActions.isEmpty(); } + protected String getCreationTime() { + return DateFormat.getTimeInstance(DateFormat.MEDIUM).format(new Date(creationTimestamp)); + } + @Override public String toString() { - return String.format(Locale.US, "Transaction task: %s with %d actions", getTaskName(), mActions.size()); + return String.format(Locale.US, "%s: Transaction task: %s with %d actions", getCreationTime(), getTaskName(), mActions.size()); } }