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 ca2629e4dba044519a7e4fba2bcbe1c2be007b2d..77d57c09c9df726e2b70b4d6b9834bc6dd6e092d 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 a822ce73d09ea7eeac055c90b1da3af798d118be..6a4e5f51f432ee982057195fbb23214e4669e9f8 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 1c8d92aea954fc08f072d89d3f2111e7310a2f4e..f5489004508db2784ea18ba94c04bb17a1526598 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 3dc9eb0265fb936f2f293445e15826167b985723..df7dfa46168adc867cb905bf0adf7f31eead5b33 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 fec7c00038cfa9368ee6340ecff94ce5e5bf7311..03a2be4512af2e8a1c97de0154cad91c029b8c55 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 dcc926cc16b7166eb54f4a3b0ab30538d9591675..780358d470fe4bc22d92b3b932d8185cbb75527f 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