diff --git a/com.zsmartsystems.zigbee/src/main/java/com/zsmartsystems/zigbee/transaction/ZigBeeTransaction.java b/com.zsmartsystems.zigbee/src/main/java/com/zsmartsystems/zigbee/transaction/ZigBeeTransaction.java index 17dbb4885..0e6e80621 100644 --- a/com.zsmartsystems.zigbee/src/main/java/com/zsmartsystems/zigbee/transaction/ZigBeeTransaction.java +++ b/com.zsmartsystems.zigbee/src/main/java/com/zsmartsystems/zigbee/transaction/ZigBeeTransaction.java @@ -132,6 +132,8 @@ public enum TransactionState { * the command that completed the transaction. */ private ZigBeeCommand completionCommand; + + private boolean sleepy; /** * The amount of time (in milliseconds) from when the command is sent to the transport, until when the transport @@ -512,7 +514,15 @@ public void transactionStatusReceived(ZigBeeTransportProgressState progress, int String.format("%04X", command.getDestinationAddress().getAddress()), String.format("%02X", transactionId), progress, state); } + + public boolean isSleepy() { + return sleepy; + } + public void setSleepy() { + this.sleepy = true; + } + @Override public String toString() { String queuedTime = queueTime == null ? "-" : Long.toString(System.currentTimeMillis() - queueTime); diff --git a/com.zsmartsystems.zigbee/src/main/java/com/zsmartsystems/zigbee/transaction/ZigBeeTransactionManager.java b/com.zsmartsystems.zigbee/src/main/java/com/zsmartsystems/zigbee/transaction/ZigBeeTransactionManager.java index cc9e4f3f9..e60e4a4f8 100644 --- a/com.zsmartsystems.zigbee/src/main/java/com/zsmartsystems/zigbee/transaction/ZigBeeTransactionManager.java +++ b/com.zsmartsystems.zigbee/src/main/java/com/zsmartsystems/zigbee/transaction/ZigBeeTransactionManager.java @@ -534,7 +534,7 @@ protected void transactionComplete(ZigBeeTransaction transaction, TransactionSta } else { queue.transactionComplete(transaction, state); - if (queue.isSleepy() && sleepyTransactions > 0) { + if (transaction.isSleepy() && sleepyTransactions > 0) { sleepyTransactions--; } @@ -687,6 +687,7 @@ private void sendNextTransaction() { transaction = queue.getTransaction(); if (transaction != null) { if (queue.isSleepy()) { + transaction.setSleepy(); sleepyTransactions++; }