From 45ef41d1a3f13314028e48e89557ffb7e26507d8 Mon Sep 17 00:00:00 2001 From: Bart Sopers Date: Mon, 27 Apr 2020 22:51:44 +0200 Subject: [PATCH] Accept packets with a packet address of 0xFFFFFFFF to match PDM & Pod --- .../pump/omnipod/comm/OmnipodCommunicationService.java | 8 +++++--- ...on.java => IllegalMessageSequenceNumberException.java} | 6 +++--- .../pump/omnipod/driver/comm/AapsOmnipodManager.java | 6 +++--- app/src/main/res/values/strings.xml | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) rename app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/exception/{IllegalSequenceNumberException.java => IllegalMessageSequenceNumberException.java} (61%) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/OmnipodCommunicationService.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/OmnipodCommunicationService.java index 7fdf504db2..139a3e8dc3 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/OmnipodCommunicationService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/OmnipodCommunicationService.java @@ -18,7 +18,7 @@ import info.nightscout.androidaps.plugins.pump.omnipod.comm.action.OmnipodAction import info.nightscout.androidaps.plugins.pump.omnipod.comm.exception.CommunicationException; import info.nightscout.androidaps.plugins.pump.omnipod.comm.exception.IllegalPacketTypeException; import info.nightscout.androidaps.plugins.pump.omnipod.comm.exception.IllegalResponseException; -import info.nightscout.androidaps.plugins.pump.omnipod.comm.exception.IllegalSequenceNumberException; +import info.nightscout.androidaps.plugins.pump.omnipod.comm.exception.IllegalMessageSequenceNumberException; import info.nightscout.androidaps.plugins.pump.omnipod.comm.exception.NonceOutOfSyncException; import info.nightscout.androidaps.plugins.pump.omnipod.comm.exception.NonceResyncException; import info.nightscout.androidaps.plugins.pump.omnipod.comm.exception.NotEnoughDataException; @@ -37,6 +37,7 @@ import info.nightscout.androidaps.plugins.pump.omnipod.defs.PacketType; import info.nightscout.androidaps.plugins.pump.omnipod.defs.PodInfoType; import info.nightscout.androidaps.plugins.pump.omnipod.defs.state.PodState; import info.nightscout.androidaps.plugins.pump.omnipod.exception.OmnipodException; +import info.nightscout.androidaps.plugins.pump.omnipod.util.OmnipodConst; /** * Created by andy on 6/29/18. @@ -218,7 +219,7 @@ public class OmnipodCommunicationService extends RileyLinkCommunicationManager { try { receivedMessage = OmnipodMessage.decodeMessage(receivedMessageData); if (receivedMessage.getSequenceNumber() != podState.getMessageNumber()) { - throw new IllegalSequenceNumberException(podState.getMessageNumber(), receivedMessage.getSequenceNumber()); + throw new IllegalMessageSequenceNumberException(podState.getMessageNumber(), receivedMessage.getSequenceNumber()); } } catch (NotEnoughDataException ex) { // Message is (probably) not complete yet @@ -332,7 +333,8 @@ public class OmnipodCommunicationService extends RileyLinkCommunicationManager { } continue; } - if (response.getAddress() != packet.getAddress()) { + if (response.getAddress() != packet.getAddress() && + response.getAddress() != OmnipodConst.DEFAULT_ADDRESS) { // In some (strange) cases, the Pod remains a packet address of 0xffffffff during it's lifetime if (isLoggingEnabled()) { LOG.debug("Packet address " + response.getAddress() + " doesn't match " + packet.getAddress()); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/exception/IllegalSequenceNumberException.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/exception/IllegalMessageSequenceNumberException.java similarity index 61% rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/exception/IllegalSequenceNumberException.java rename to app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/exception/IllegalMessageSequenceNumberException.java index d47b1e8d0b..b26d2b6ff8 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/exception/IllegalSequenceNumberException.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/comm/exception/IllegalMessageSequenceNumberException.java @@ -2,12 +2,12 @@ package info.nightscout.androidaps.plugins.pump.omnipod.comm.exception; import info.nightscout.androidaps.plugins.pump.omnipod.exception.OmnipodException; -public class IllegalSequenceNumberException extends OmnipodException { +public class IllegalMessageSequenceNumberException extends OmnipodException { private final int expected; private final int actual; - public IllegalSequenceNumberException(int expected, int actual) { - super("Invalid sequence number. Expected="+ expected +", actual="+ actual, false); + public IllegalMessageSequenceNumberException(int expected, int actual) { + super("Invalid message sequence number. Expected="+ expected +", actual="+ actual, false); this.expected = expected; this.actual = actual; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/comm/AapsOmnipodManager.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/comm/AapsOmnipodManager.java index b1da16fca3..40b3454f71 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/comm/AapsOmnipodManager.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/driver/comm/AapsOmnipodManager.java @@ -37,7 +37,7 @@ import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil; import info.nightscout.androidaps.plugins.pump.omnipod.comm.OmnipodCommunicationService; import info.nightscout.androidaps.plugins.pump.omnipod.comm.OmnipodManager; import info.nightscout.androidaps.plugins.pump.omnipod.comm.SetupActionResult; -import info.nightscout.androidaps.plugins.pump.omnipod.comm.exception.IllegalSequenceNumberException; +import info.nightscout.androidaps.plugins.pump.omnipod.comm.exception.IllegalMessageSequenceNumberException; import info.nightscout.androidaps.plugins.pump.omnipod.comm.message.response.StatusResponse; import info.nightscout.androidaps.plugins.pump.omnipod.comm.message.response.podinfo.PodInfoRecentPulseLog; import info.nightscout.androidaps.plugins.pump.omnipod.comm.message.response.podinfo.PodInfoResponse; @@ -613,8 +613,8 @@ public class AapsOmnipodManager implements OmnipodCommunicationManagerInterface comment = getStringResource(R.string.omnipod_driver_error_invalid_progress_state); } else if (ex instanceof IllegalResponseException) { comment = getStringResource(R.string.omnipod_driver_error_invalid_response); - } else if (ex instanceof IllegalSequenceNumberException) { - comment = getStringResource(R.string.omnipod_driver_error_invalid_sequence_number); + } else if (ex instanceof IllegalMessageSequenceNumberException) { + comment = getStringResource(R.string.omnipod_driver_error_invalid_message_sequence_number); } else if (ex instanceof MessageDecodingException) { comment = getStringResource(R.string.omnipod_driver_error_message_decoding_failed); } else if (ex instanceof NonceOutOfSyncException) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index be040f4ac8..a97887f5f8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1756,7 +1756,7 @@ Communication failed: received an invalid packet from the Pod. Communication failed: the Pod is in a wrong state. Communication failed: received an invalid response from the Pod. - Communication failed: received a message with an invalid sequence number from the Pod. + Communication failed: received a message with an invalid sequence number from the Pod. Communication failed: failed to decode message from the Pod. Communication failed: nonce resync failed. Communication failed: nonce out of sync.