From c5f918334822418f07e2a4c34dce2cbd4df4ce47 Mon Sep 17 00:00:00 2001 From: Volker Richert <v.richert@addmore.de> Date: Mon, 16 Jan 2017 15:32:58 +0100 Subject: [PATCH] add logging for decrypted messages & payload --- .../medtronic/message/MedtronicResponseMessage.java | 11 +++++++++++ .../medtronic/message/PumpStatusResponseMessage.java | 10 +++++++--- .../medtronic/message/PumpTimeResponseMessage.java | 8 ++++++++ .../message/ReadHistoryInfoResponseMessage.java | 5 +++++ .../java/info/nightscout/android/utils/HexDump.java | 5 +++++ 5 files changed, 36 insertions(+), 3 deletions(-) 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 07727c4..47c33dc 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 @@ -1,19 +1,25 @@ package info.nightscout.android.medtronic.message; +import android.util.Log; + import java.nio.ByteBuffer; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; +import info.nightscout.android.BuildConfig; import info.nightscout.android.medtronic.MedtronicCnlSession; import info.nightscout.android.medtronic.exception.ChecksumException; import info.nightscout.android.medtronic.exception.EncryptionException; +import info.nightscout.android.utils.HexDump; /** * Created by lgoedhart on 26/03/2016. */ public class MedtronicResponseMessage extends ContourNextLinkResponseMessage { + private static final String TAG = MedtronicResponseMessage.class.getSimpleName(); + static int ENVELOPE_SIZE = 22; static int ENCRYPTED_ENVELOPE_SIZE = 3; static int CRC_SIZE = 2; @@ -43,6 +49,11 @@ public class MedtronicResponseMessage extends ContourNextLinkResponseMessage { // Should be fine provided we check the CCITT first... this.mPayload.position(57); this.mPayload.put(decryptedPayload); + + if (BuildConfig.DEBUG) { + String outputString = HexDump.dumpHexString(this.mPayload.array()); + Log.d(TAG, "DECRYPTED: " + outputString); + } } } diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/PumpStatusResponseMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/PumpStatusResponseMessage.java index 4ef072d..7afec50 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/message/PumpStatusResponseMessage.java +++ b/app/src/main/java/info/nightscout/android/medtronic/message/PumpStatusResponseMessage.java @@ -8,11 +8,13 @@ import java.nio.ByteOrder; import java.util.Date; import java.util.Locale; +import info.nightscout.android.BuildConfig; import info.nightscout.android.medtronic.MedtronicCnlSession; import info.nightscout.android.medtronic.exception.ChecksumException; import info.nightscout.android.medtronic.exception.EncryptionException; import info.nightscout.android.medtronic.exception.UnexpectedMessageException; import info.nightscout.android.model.medtronicNg.PumpStatusEvent; +import info.nightscout.android.utils.HexDump; /** * Created by lgoedhart on 27/03/2016. @@ -61,6 +63,10 @@ public class PumpStatusResponseMessage extends MedtronicSendMessageResponseMessa statusBuffer.order(ByteOrder.BIG_ENDIAN); statusBuffer.put(this.encode(), 0x39, 96); + if (BuildConfig.DEBUG) { + String outputString = HexDump.dumpHexString(statusBuffer.array()); + Log.d(TAG, "PAYLOAD: " + outputString); + } // Status Flags suspended = ((statusBuffer.get(0x03) & 0x01) != 0x00); bolusing = ((statusBuffer.get(0x03) & 0x02) != 0x00); @@ -108,9 +114,6 @@ public class PumpStatusResponseMessage extends MedtronicSendMessageResponseMessa // CGM SGV sgv = (statusBuffer.getShort(0x35) & 0x0000ffff); // In mg/DL. 0 means no CGM reading - - // SGV Date - if ((sgv & 0x200) == 0x200) { // Sensor error. Let's reset. FIXME - solve this more elegantly later sgv = 0; @@ -123,6 +126,7 @@ public class PumpStatusResponseMessage extends MedtronicSendMessageResponseMessa cgmTrend = (PumpStatusEvent.CGM_TREND.fromMessageByte(statusBuffer.get(0x40))); } + // SGV Date // TODO - this should go in the sgvDate, and eventDate should be the time of this poll. sgvDate = MessageUtils.decodeDateTime(rtc, offset); Log.d(TAG, "original sgv date: " + sgvDate); diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/PumpTimeResponseMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/PumpTimeResponseMessage.java index 2e73205..06d88ce 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/message/PumpTimeResponseMessage.java +++ b/app/src/main/java/info/nightscout/android/medtronic/message/PumpTimeResponseMessage.java @@ -6,9 +6,11 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.Date; +import info.nightscout.android.BuildConfig; import info.nightscout.android.medtronic.MedtronicCnlSession; import info.nightscout.android.medtronic.exception.ChecksumException; import info.nightscout.android.medtronic.exception.EncryptionException; +import info.nightscout.android.utils.HexDump; /** * Created by lgoedhart on 27/03/2016. @@ -30,6 +32,12 @@ public class PumpTimeResponseMessage extends MedtronicSendMessageResponseMessage ByteBuffer dateBuffer = ByteBuffer.allocate(8); dateBuffer.order(ByteOrder.BIG_ENDIAN); dateBuffer.put(this.encode(), 0x3d, 8); + + if (BuildConfig.DEBUG) { + String outputString = HexDump.dumpHexString(dateBuffer.array()); + Log.d(TAG, "PAYLOAD: " + outputString); + } + long rtc = dateBuffer.getInt(0) & 0x00000000ffffffffL; long offset = dateBuffer.getInt(4); pumpTime = MessageUtils.decodeDateTime(rtc, offset); diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/ReadHistoryInfoResponseMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/ReadHistoryInfoResponseMessage.java index 3780502..f77fc57 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/message/ReadHistoryInfoResponseMessage.java +++ b/app/src/main/java/info/nightscout/android/medtronic/message/ReadHistoryInfoResponseMessage.java @@ -5,6 +5,7 @@ import android.util.Log; import java.nio.ByteBuffer; import java.nio.ByteOrder; +import info.nightscout.android.BuildConfig; import info.nightscout.android.medtronic.MedtronicCnlSession; import info.nightscout.android.medtronic.exception.ChecksumException; import info.nightscout.android.medtronic.exception.EncryptionException; @@ -32,6 +33,10 @@ public class ReadHistoryInfoResponseMessage extends MedtronicSendMessageResponse basalRatesBuffer.order(ByteOrder.BIG_ENDIAN); basalRatesBuffer.put(this.encode()); + if (BuildConfig.DEBUG) { + String outputString = HexDump.dumpHexString(basalRatesBuffer.array()); + Log.d(TAG, "PAYLOAD: " + outputString); + } String responseString = HexDump.dumpHexString(basalRatesBuffer.array()); Log.d(TAG, "ReadHistoryInfo: " + responseString); Log.d(TAG, "ReadHistoryInfo-length: " + basalRatesBuffer.getLong(28)); diff --git a/app/src/main/java/info/nightscout/android/utils/HexDump.java b/app/src/main/java/info/nightscout/android/utils/HexDump.java index 0f7ccab..ff441ce 100644 --- a/app/src/main/java/info/nightscout/android/utils/HexDump.java +++ b/app/src/main/java/info/nightscout/android/utils/HexDump.java @@ -35,7 +35,12 @@ public class HexDump { byte[] line = new byte[16]; int lineIndex = 0; + result.append("\n "); + for (int i = 0; i < Math.min(16, array.length); i++) { + result.append(" ?" + HEX_DIGITS[i]); + } result.append("\n0x"); + result.append(toHexString(offset)); for (int i = offset; i < offset + length; i++) { -- GitLab