From 4d1af4d7f4e2b0073f3984010ae68d906fc90f66 Mon Sep 17 00:00:00 2001
From: Volker Richert <v.richert@addmore.de>
Date: Sat, 10 Dec 2016 18:14:01 +0100
Subject: [PATCH] refactoring

---
 .../android/medtronic/MedtronicCnlReader.java | 50 +++++++------------
 .../message/ContourNextLinkBinaryMessage.java |  8 +--
 .../ContourNextLinkCommandMessage.java        |  4 ++
 3 files changed, 26 insertions(+), 36 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 7e1e44b..7acee74 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/MedtronicCnlReader.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/MedtronicCnlReader.java
@@ -187,13 +187,13 @@ public class MedtronicCnlReader implements ContourNextLinkMessageHandler {
         do {
             doRetry = false;
             try {
-                new ContourNextLinkCommandMessage(ASCII.NAK.value)
-                        .send(mDevice).checkControlMessage(ASCII.EOT.value);
-                new ContourNextLinkCommandMessage(ASCII.ENQ.value)
-                        .send(mDevice).checkControlMessage(ASCII.ACK.value);
+                new ContourNextLinkCommandMessage(ContourNextLinkCommandMessage.ASCII.NAK)
+                        .send(mDevice).checkControlMessage(ContourNextLinkCommandMessage.ASCII.EOT);
+                new ContourNextLinkCommandMessage(ContourNextLinkCommandMessage.ASCII.ENQ)
+                        .send(mDevice).checkControlMessage(ContourNextLinkCommandMessage.ASCII.ACK);
             } catch (UnexpectedMessageException e2) {
                 try {
-                    new ContourNextLinkCommandMessage(ASCII.EOT.value).send(this);
+                    new ContourNextLinkCommandMessage(ContourNextLinkCommandMessage.ASCII.EOT).send(this);
                 } catch (IOException e) {}
                 finally {
                     doRetry = true;
@@ -205,11 +205,11 @@ public class MedtronicCnlReader implements ContourNextLinkMessageHandler {
     public void enterPassthroughMode() throws IOException, TimeoutException, UnexpectedMessageException, ChecksumException, EncryptionException {
         Log.d(TAG, "Begin enterPasshtroughMode");
         new ContourNextLinkCommandMessage("W|")
-                .send(mDevice).checkControlMessage(ASCII.ACK.value);
+                .send(mDevice).checkControlMessage(ContourNextLinkCommandMessage.ASCII.ACK);
         new ContourNextLinkCommandMessage("Q|")
-                .send(mDevice).checkControlMessage(ASCII.ACK.value);
+                .send(mDevice).checkControlMessage(ContourNextLinkCommandMessage.ASCII.ACK);
         new ContourNextLinkCommandMessage("1|")
-                .send(mDevice).checkControlMessage(ASCII.ACK.value);
+                .send(mDevice).checkControlMessage(ContourNextLinkCommandMessage.ASCII.ACK);
         Log.d(TAG, "Finished enterPasshtroughMode");
     }
 
@@ -466,35 +466,21 @@ public class MedtronicCnlReader implements ContourNextLinkMessageHandler {
         Log.d(TAG, "Finished closeConnection");
     }
 
-    public void endPassthroughMode() throws IOException, TimeoutException, UnexpectedMessageException {
+    public void endPassthroughMode() throws IOException, TimeoutException, UnexpectedMessageException, ChecksumException, EncryptionException {
         Log.d(TAG, "Begin endPassthroughMode");
-        new ContourNextLinkCommandMessage("W|").send(this);
-        checkControlMessage(readMessage(), ASCII.ACK.value);
-        new ContourNextLinkCommandMessage("Q|").send(this);
-        checkControlMessage(readMessage(), ASCII.ACK.value);
-        new ContourNextLinkCommandMessage("0|").send(this);
-        checkControlMessage(readMessage(), ASCII.ACK.value);
+        new ContourNextLinkCommandMessage("W|")
+                .send(mDevice).checkControlMessage(ContourNextLinkCommandMessage.ASCII.ACK);
+        new ContourNextLinkCommandMessage("Q|")
+                .send(mDevice).checkControlMessage(ContourNextLinkCommandMessage.ASCII.ACK);
+        new ContourNextLinkCommandMessage("0|")
+                .send(mDevice).checkControlMessage(ContourNextLinkCommandMessage.ASCII.ACK);
         Log.d(TAG, "Finished endPassthroughMode");
     }
 
-    public void endControlMode() throws IOException, TimeoutException, UnexpectedMessageException {
+    public void endControlMode() throws IOException, TimeoutException, UnexpectedMessageException, ChecksumException, EncryptionException {
         Log.d(TAG, "Begin endControlMode");
-        new ContourNextLinkCommandMessage(ASCII.EOT.value).send(this);
-        checkControlMessage(readMessage(), ASCII.ENQ.value);
+        new ContourNextLinkCommandMessage(ContourNextLinkCommandMessage.ASCII.EOT)
+                .send(mDevice).checkControlMessage(ContourNextLinkCommandMessage.ASCII.ENQ);
         Log.d(TAG, "Finished endControlMode");
     }
-
-    public enum ASCII {
-        STX(0x02),
-        EOT(0x04),
-        ENQ(0x05),
-        ACK(0x06),
-        NAK(0x15);
-
-        private byte value;
-
-        ASCII(int code) {
-            this.value = (byte) code;
-        }
-    }
 }
diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkBinaryMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkBinaryMessage.java
index c93aa7f..51ff599 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkBinaryMessage.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkBinaryMessage.java
@@ -64,7 +64,7 @@ public class ContourNextLinkBinaryMessage extends ContourNextLinkMessage {
     }
 
 
-    public void checkControlMessage(byte controlCharacter) throws IOException, TimeoutException, UnexpectedMessageException {
+    public void checkControlMessage(ASCII controlCharacter) throws IOException, TimeoutException, UnexpectedMessageException {
         checkControlMessage(mPayload.array(), controlCharacter);
     }
 
@@ -119,10 +119,10 @@ public class ContourNextLinkBinaryMessage extends ContourNextLinkMessage {
         }
     }
 
-    protected void checkControlMessage(byte[] msg, byte controlCharacter) throws IOException, TimeoutException, UnexpectedMessageException {
-        if (msg.length != 1 || msg[0] != controlCharacter) {
+    protected void checkControlMessage(byte[] msg, ASCII controlCharacter) throws IOException, TimeoutException, UnexpectedMessageException {
+        if (msg.length != 1 || msg[0] != controlCharacter.value) {
             throw new UnexpectedMessageException(String.format(Locale.getDefault(), "Expected to get control character '%d' Got '%d'.",
-                    (int) controlCharacter, (int) msg[0]));
+                    (int) controlCharacter.value, (int) msg[0]));
         }
     }
 
diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkCommandMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkCommandMessage.java
index c7dc1ab..151fe48 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkCommandMessage.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/message/ContourNextLinkCommandMessage.java
@@ -9,6 +9,10 @@ import info.nightscout.android.USB.UsbHidDriver;
  * Created by lgoedhart on 26/03/2016.
  */
 public class ContourNextLinkCommandMessage extends ContourNextLinkMessage {
+    public ContourNextLinkCommandMessage(ASCII command) {
+        super(new byte[]{command.value});
+    }
+
     public ContourNextLinkCommandMessage(byte command) {
         super(new byte[]{command});
     }
-- 
GitLab