From 2eaf6c7fae8664e134c7727155bbc931ed4aee80 Mon Sep 17 00:00:00 2001 From: Volker Richert <v.richert@addmore.de> Date: Fri, 16 Dec 2016 14:36:56 +0100 Subject: [PATCH] refactor fixes I --- .../android/medtronic/MedtronicCnlReader.java | 2 +- .../message/CloseConnectionRequestMessage.java | 4 ++-- .../medtronic/message/ContourNextLinkMessage.java | 7 ------- .../message/DeviceInfoRequestCommandMessage.java | 10 +++++----- .../message/DeviceInfoResponseCommandMessage.java | 6 +++--- .../medtronic/message/MedtronicResponseMessage.java | 4 ++++ 6 files changed, 15 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/info/nightscout/android/medtronic/MedtronicCnlReader.java b/app/src/main/java/info/nightscout/android/medtronic/MedtronicCnlReader.java index ca2629e..77d57c0 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/MedtronicCnlReader.java +++ b/app/src/main/java/info/nightscout/android/medtronic/MedtronicCnlReader.java @@ -67,7 +67,7 @@ public class MedtronicCnlReader { public void requestDeviceInfo() throws IOException, TimeoutException, UnexpectedMessageException, ChecksumException, EncryptionException { - DeviceInfoResponseCommandMessage response = new DeviceInfoRequestCommandMessage(mPumpSession).send(mDevice); + DeviceInfoResponseCommandMessage response = new DeviceInfoRequestCommandMessage().send(mDevice); //TODO - extract more details form the device info. mStickSerial = response.getSerial(); diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/CloseConnectionRequestMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/CloseConnectionRequestMessage.java index a822ce7..6a4e5f5 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/message/CloseConnectionRequestMessage.java +++ b/app/src/main/java/info/nightscout/android/medtronic/message/CloseConnectionRequestMessage.java @@ -15,10 +15,10 @@ public class CloseConnectionRequestMessage extends ContourNextLinkBinaryRequestM super(CommandType.CLOSE_CONNECTION, pumpSession, payload); } - public OpenConnectionResponseMessage send(UsbHidDriver mDevice) throws IOException, TimeoutException, EncryptionException, ChecksumException { + public CloseConnectionResponseMessage send(UsbHidDriver mDevice) throws IOException, TimeoutException, EncryptionException, ChecksumException { sendMessage(mDevice); - OpenConnectionResponseMessage response = new OpenConnectionResponseMessage(mPumpSession, readMessage(mDevice)); + CloseConnectionResponseMessage response = new CloseConnectionResponseMessage(mPumpSession, readMessage(mDevice)); // 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/ContourNextLinkMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkMessage.java index 1c8d92a..f548900 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkMessage.java +++ b/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkMessage.java @@ -43,7 +43,6 @@ public class ContourNextLinkMessage { } } - public enum CommandType { NO_TYPE(0x0), OPEN_CONNECTION(0x10), @@ -79,12 +78,6 @@ public class ContourNextLinkMessage { return mPayload.array(); } - // TODO refactor - public void send(ContourNextLinkMessageHandler handler) throws IOException { - handler.sendMessage(this); - } - - // FIXME - get rid of this - make a Builder instead protected void setPayload(byte[] payload) { if (payload != null) { 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 3dc9eb0..df7dfa4 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 @@ -10,9 +10,9 @@ import info.nightscout.android.medtronic.MedtronicCnlSession; * Created by volker on 10.12.2016. */ -public class DeviceInfoRequestCommandMessage extends ContourNextLinkMessage { - public DeviceInfoRequestCommandMessage(MedtronicCnlSession pumpSession) { - super(pumpSession, "X".getBytes()); +public class DeviceInfoRequestCommandMessage extends ContourNextLinkRequestMessage { + public DeviceInfoRequestCommandMessage() { + super("X".getBytes()); } public DeviceInfoResponseCommandMessage send(UsbHidDriver mDevice) throws IOException, TimeoutException, EncryptionException, ChecksumException, UnexpectedMessageException { @@ -28,12 +28,12 @@ public class DeviceInfoRequestCommandMessage extends ContourNextLinkMessage { try { if (ASCII.EOT.equals(response1[0])) { // response 1 is the ASTM message - response = new DeviceInfoResponseCommandMessage(mPumpSession, response1); + response = new DeviceInfoResponseCommandMessage(response1); // ugly.... response.checkControlMessage(response2, ASCII.ENQ); } else { // response 2 is the ASTM message - response = new DeviceInfoResponseCommandMessage(mPumpSession, response1); + response = new DeviceInfoResponseCommandMessage(response1); // ugly, too.... response.checkControlMessage(response1, ASCII.ENQ); } diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/DeviceInfoResponseCommandMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/DeviceInfoResponseCommandMessage.java index fec7c00..03a2be4 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/message/DeviceInfoResponseCommandMessage.java +++ b/app/src/main/java/info/nightscout/android/medtronic/message/DeviceInfoResponseCommandMessage.java @@ -10,13 +10,13 @@ import info.nightscout.android.medtronic.MedtronicCnlSession; /** * Created by lgoedhart on 10/05/2016. */ -public class DeviceInfoResponseCommandMessage extends MedtronicResponseMessage { +public class DeviceInfoResponseCommandMessage extends ContourNextLinkResponseMessage { private String serial = ""; private final Pattern pattern = Pattern.compile(".*?\\^(\\d{4}-\\d{7})\\^.*"); - protected DeviceInfoResponseCommandMessage(MedtronicCnlSession pumpSession, byte[] payload) + protected DeviceInfoResponseCommandMessage(byte[] payload) throws ChecksumException, EncryptionException, TimeoutException, UnexpectedMessageException, IOException { - super(pumpSession, payload); + super(payload); extractStickSerial(new String(payload)); } diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/MedtronicResponseMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/MedtronicResponseMessage.java index dcc926c..780358d 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/message/MedtronicResponseMessage.java +++ b/app/src/main/java/info/nightscout/android/medtronic/message/MedtronicResponseMessage.java @@ -16,9 +16,13 @@ public class MedtronicResponseMessage extends ContourNextLinkResponseMessage { static int ENCRYPTED_ENVELOPE_SIZE = 3; static int CRC_SIZE = 2; + protected MedtronicCnlSession mPumpSession; + protected MedtronicResponseMessage(MedtronicCnlSession pumpSession, byte[] payload) throws EncryptionException, ChecksumException { super(payload); + mPumpSession = pumpSession; + // TODO - Validate the message, inner CCITT, serial numbers, etc // If there's not 57 bytes, then we got back a bad message. Not sure how to process these yet. // Also, READ_INFO and REQUEST_LINK_KEY are not encrypted -- GitLab