diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/OmnipodDashPumpPlugin.kt b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/OmnipodDashPumpPlugin.kt index 2dd84d4097..8778a0151c 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/OmnipodDashPumpPlugin.kt +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/OmnipodDashPumpPlugin.kt @@ -328,6 +328,15 @@ class OmnipodDashPumpPlugin @Inject constructor( Notification.URGENT, R.raw.boluserror ) + if (!podStateManager.alarmSynced) { + pumpSync.insertAnnouncement( + error = podStateManager.alarmType?.toString() ?: "Unknown pod failure", + pumpId = Random.Default.nextLong(), + pumpType = PumpType.OMNIPOD_DASH, + pumpSerial = serialNumber() + ) + podStateManager.alarmSynced = true + } } Completable.complete() } @@ -1068,7 +1077,8 @@ class OmnipodDashPumpPlugin @Inject constructor( private fun deactivatePod(): PumpEnactResult { val ret = executeProgrammingCommand( historyEntry = history.createRecord(OmnipodCommandType.DEACTIVATE_POD), - command = omnipodManager.deactivatePod().ignoreElements() + command = omnipodManager.deactivatePod().ignoreElements(), + checkNoActiveCommand = false, ).doOnComplete { rxBus.send(EventDismissNotification(Notification.OMNIPOD_POD_FAULT)) }.toPumpEnactResult() diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/state/OmnipodDashPodStateManager.kt b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/state/OmnipodDashPodStateManager.kt index 2e862b81b1..d27a3b28c4 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/state/OmnipodDashPodStateManager.kt +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/state/OmnipodDashPodStateManager.kt @@ -41,6 +41,7 @@ interface OmnipodDashPodStateManager { val time: ZonedDateTime? val timeDrift: java.time.Duration? val expiry: ZonedDateTime? + var alarmSynced: Boolean val messageSequenceNumber: Short val sequenceNumberOfLastProgrammingCommand: Short? diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/state/OmnipodDashPodStateManagerImpl.kt b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/state/OmnipodDashPodStateManagerImpl.kt index 7f72f54cb5..b7173fc01c 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/state/OmnipodDashPodStateManagerImpl.kt +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/driver/pod/state/OmnipodDashPodStateManagerImpl.kt @@ -233,6 +233,13 @@ class OmnipodDashPodStateManagerImpl @Inject constructor( return null } + override var alarmSynced: Boolean + get() = podState.alarmSynced + set(value) { + podState.alarmSynced = value + store() + } + override var bluetoothConnectionState: OmnipodDashPodStateManager.BluetoothConnectionState @Synchronized get() = podState.bluetoothConnectionState @@ -498,8 +505,10 @@ class OmnipodDashPodStateManagerImpl @Inject constructor( podState.lastStatusResponseReceived = 0 } - CommandSendingFailure, NoActiveCommand -> + CommandSendingFailure, NoActiveCommand -> { podState.activeCommand = null + podState.lastStatusResponseReceived = 0 + } } } @@ -660,6 +669,7 @@ class OmnipodDashPodStateManagerImpl @Inject constructor( var eapAkaSequenceNumber: Long = 1 var bolusPulsesRemaining: Short = 0 var timeZone: String = "" // TimeZone ID (e.g. "Europe/Amsterdam") + var alarmSynced: Boolean = false var bleVersion: SoftwareVersion? = null var firmwareVersion: SoftwareVersion? = null