From 7aba34b228318290800475e6890ed5f02f6ed925 Mon Sep 17 00:00:00 2001 From: Volker Richert <v.richert@addmore.de> Date: Thu, 22 Dec 2016 22:18:50 +0100 Subject: [PATCH] fixing handling of waits after communicating to CNL --- .../medtronic/message/BeginEHSMMessage.java | 10 +----- .../ContourNextLinkRequestMessage.java | 21 ++++++------ .../DeviceInfoRequestCommandMessage.java | 14 +++++++- .../medtronic/message/EHSMMessage.java | 33 +++++++++++++++++++ .../medtronic/message/EndEHSMMessage.java | 11 +------ .../message/PumpStatusRequestMessage.java | 16 +++++++-- .../message/PumpTimeRequestMessage.java | 16 +++++++-- 7 files changed, 84 insertions(+), 37 deletions(-) create mode 100644 app/src/main/java/info/nightscout/android/medtronic/message/EHSMMessage.java diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/BeginEHSMMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/BeginEHSMMessage.java index 6a5bcda..3902beb 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/message/BeginEHSMMessage.java +++ b/app/src/main/java/info/nightscout/android/medtronic/message/BeginEHSMMessage.java @@ -11,7 +11,7 @@ import info.nightscout.android.medtronic.exception.EncryptionException; /** * Created by lgoedhart on 26/03/2016. */ -public class BeginEHSMMessage extends MedtronicSendMessageRequestMessage<ContourNextLinkResponseMessage> { +public class BeginEHSMMessage extends EHSMMessage { public BeginEHSMMessage(MedtronicCnlSession pumpSession) throws EncryptionException, ChecksumException { super(SendMessageType.BEGIN_EHSM_SESSION, pumpSession, buildPayload()); } @@ -20,12 +20,4 @@ public class BeginEHSMMessage extends MedtronicSendMessageRequestMessage<Contour // Not sure what the payload of a null byte means, but it's the same every time. return new byte[] { 0x00 }; } - - public ContourNextLinkResponseMessage send(UsbHidDriver mDevice) throws IOException, TimeoutException { - sendMessage(mDevice); - - // The Begin EHSM Session only has an 0x81 response - readMessage(mDevice); - return null; - } } diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkRequestMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkRequestMessage.java index 590f400..782c174 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkRequestMessage.java +++ b/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkRequestMessage.java @@ -19,22 +19,21 @@ public abstract class ContourNextLinkRequestMessage<T> extends ContourNextLinkMe } public T send(UsbHidDriver mDevice) throws IOException, TimeoutException, EncryptionException, ChecksumException, UnexpectedMessageException { - sendMessage(mDevice); - - T response = this.getResponse(readMessage(mDevice)); //new ContourNextLinkCommandResponse(); - - // FIXME - We need to care what the response message is - wrong MAC and all that - return response; + return send(mDevice, 0); } public T send(UsbHidDriver mDevice, int millis) throws UnexpectedMessageException, EncryptionException, TimeoutException, ChecksumException, IOException { - T response = send(mDevice); - - try { - Thread.sleep(millis); - } catch (InterruptedException e) { + sendMessage(mDevice); + if (millis > 0) { + try { + Thread.sleep(millis); + } catch (InterruptedException e) { + } } + T response = this.getResponse(readMessage(mDevice)); //new ContourNextLinkCommandResponse(); + + // FIXME - We need to care what the response message is - wrong MAC and all that return response; } diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/DeviceInfoRequestCommandMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/DeviceInfoRequestCommandMessage.java index 88ee523..5c2f7d6 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/message/DeviceInfoRequestCommandMessage.java +++ b/app/src/main/java/info/nightscout/android/medtronic/message/DeviceInfoRequestCommandMessage.java @@ -18,10 +18,22 @@ public class DeviceInfoRequestCommandMessage extends ContourNextLinkRequestMessa } @Override - public DeviceInfoResponseCommandMessage send(UsbHidDriver mDevice) throws IOException, TimeoutException, EncryptionException, ChecksumException, UnexpectedMessageException { + public DeviceInfoResponseCommandMessage send(UsbHidDriver mDevice, int millis) throws IOException, TimeoutException, EncryptionException, ChecksumException, UnexpectedMessageException { sendMessage(mDevice); + if (millis > 0) { + try { + Thread.sleep(millis); + } catch (InterruptedException e) { + } + } byte[] response1 = readMessage(mDevice); + if (millis > 0) { + try { + Thread.sleep(millis); + } catch (InterruptedException e) { + } + } byte[] response2 = readMessage(mDevice); boolean doRetry = false; diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/EHSMMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/EHSMMessage.java new file mode 100644 index 0000000..1242361 --- /dev/null +++ b/app/src/main/java/info/nightscout/android/medtronic/message/EHSMMessage.java @@ -0,0 +1,33 @@ +package info.nightscout.android.medtronic.message; + +import java.io.IOException; +import java.util.concurrent.TimeoutException; + +import info.nightscout.android.USB.UsbHidDriver; +import info.nightscout.android.medtronic.MedtronicCnlSession; +import info.nightscout.android.medtronic.exception.ChecksumException; +import info.nightscout.android.medtronic.exception.EncryptionException; + +/** + * Created by volker on 22.12.2016. + */ + +public class EHSMMessage extends MedtronicSendMessageRequestMessage<ContourNextLinkResponseMessage>{ + protected EHSMMessage(SendMessageType sendMessageType, MedtronicCnlSession pumpSession, byte[] payload) throws EncryptionException, ChecksumException { + super(sendMessageType, pumpSession, payload); + } + + @Override + public ContourNextLinkResponseMessage send(UsbHidDriver mDevice, int millis) throws IOException, TimeoutException { + sendMessage(mDevice); + if (millis > 0) { + try { + Thread.sleep(millis); + } catch (InterruptedException e) { + } + } + // The End EHSM Session only has an 0x81 response + readMessage(mDevice); + return null; + } +} diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/EndEHSMMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/EndEHSMMessage.java index f1a1bbd..5335d4c 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/message/EndEHSMMessage.java +++ b/app/src/main/java/info/nightscout/android/medtronic/message/EndEHSMMessage.java @@ -12,7 +12,7 @@ import info.nightscout.android.medtronic.exception.UnexpectedMessageException; /** * Created by lgoedhart on 26/03/2016. */ -public class EndEHSMMessage extends MedtronicSendMessageRequestMessage<ContourNextLinkResponseMessage> { +public class EndEHSMMessage extends EHSMMessage { public EndEHSMMessage(MedtronicCnlSession pumpSession) throws EncryptionException, ChecksumException { super(SendMessageType.END_EHSM_SESSION, pumpSession, buildPayload()); } @@ -22,13 +22,4 @@ public class EndEHSMMessage extends MedtronicSendMessageRequestMessage<ContourNe return new byte[] { 0x01 }; } - @Override - public ContourNextLinkResponseMessage send(UsbHidDriver mDevice) throws IOException, TimeoutException { - sendMessage(mDevice); - - // The End EHSM Session only has an 0x81 response - readMessage(mDevice); - return null; - } - } diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/PumpStatusRequestMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/PumpStatusRequestMessage.java index 7e9f26e..30067b4 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/message/PumpStatusRequestMessage.java +++ b/app/src/main/java/info/nightscout/android/medtronic/message/PumpStatusRequestMessage.java @@ -17,12 +17,22 @@ public class PumpStatusRequestMessage extends MedtronicSendMessageRequestMessage super(SendMessageType.READ_PUMP_STATUS_REQUEST, pumpSession, null); } - public PumpStatusResponseMessage send(UsbHidDriver mDevice) throws IOException, TimeoutException, ChecksumException, EncryptionException, UnexpectedMessageException { + public PumpStatusResponseMessage send(UsbHidDriver mDevice, int millis) throws IOException, TimeoutException, ChecksumException, EncryptionException, UnexpectedMessageException { sendMessage(mDevice); - + if (millis > 0) { + try { + Thread.sleep(millis); + } catch (InterruptedException e) { + } + } // Read the 0x81 readMessage(mDevice); - + if (millis > 0) { + try { + Thread.sleep(millis); + } catch (InterruptedException e) { + } + } PumpStatusResponseMessage response = this.getResponse(readMessage(mDevice)); return response; diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/PumpTimeRequestMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/PumpTimeRequestMessage.java index 72ba8be..24cbb14 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/message/PumpTimeRequestMessage.java +++ b/app/src/main/java/info/nightscout/android/medtronic/message/PumpTimeRequestMessage.java @@ -18,12 +18,22 @@ public class PumpTimeRequestMessage extends MedtronicSendMessageRequestMessage<P } @Override - public PumpTimeResponseMessage send(UsbHidDriver mDevice) throws IOException, TimeoutException, ChecksumException, EncryptionException, UnexpectedMessageException { + public PumpTimeResponseMessage send(UsbHidDriver mDevice, int millis) throws IOException, TimeoutException, ChecksumException, EncryptionException, UnexpectedMessageException { sendMessage(mDevice); - + if (millis > 0) { + try { + Thread.sleep(millis); + } catch (InterruptedException e) { + } + } // Read the 0x81 readMessage(mDevice); - + if (millis > 0) { + try { + Thread.sleep(millis); + } catch (InterruptedException e) { + } + } // Read the 0x80 PumpTimeResponseMessage response = this.getResponse(readMessage(mDevice)); -- GitLab