From 3c222f0500b8cf2acfd24284d12470b6bb4f81c8 Mon Sep 17 00:00:00 2001 From: Andrei Vereha Date: Thu, 24 Jun 2021 21:57:34 +0200 Subject: [PATCH] recover active commands on start. Display deaction button after SET_UNIQUE_ID --- .../omnipod/dash/OmnipodDashPumpPlugin.kt | 5 ++++ .../pod/state/OmnipodDashPodStateManager.kt | 1 + .../state/OmnipodDashPodStateManagerImpl.kt | 25 +++++++++++++++++++ .../dash/ui/DashPodManagementActivity.kt | 2 +- 4 files changed, 32 insertions(+), 1 deletion(-) 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 b2cffc2d99..cfd2b28061 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 @@ -274,6 +274,11 @@ class OmnipodDashPumpPlugin @Inject constructor( */ + override fun onStart() { + super.onStart() + podStateManager.onStart() + } + private fun observeDeliverySuspended(): Completable = Completable.defer { if (podStateManager.deliveryStatus == DeliveryStatus.SUSPENDED) Completable.complete() 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 b649aaf7ff..15fcd4f84e 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 @@ -95,6 +95,7 @@ interface OmnipodDashPodStateManager { fun createLastBolus(requestedUnits: Double, historyId: String, bolusType: DetailedBolusInfo.BolusType) fun markLastBolusComplete(): LastBolus? + fun onStart() data class ActiveCommand( val sequence: 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 2028e236b1..2da1889ba9 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 @@ -391,6 +391,31 @@ class OmnipodDashPodStateManagerImpl @Inject constructor( store() } + override fun onStart() { + when (getCommandConfirmationFromState()) { + CommandConfirmationSuccess, CommandConfirmationDenied -> { + val now = System.currentTimeMillis() + val newCommand = podState.activeCommand?.copy( + createdRealtime = now, + sentRealtime = now + 1 + ) + podState.lastStatusResponseReceived = now + 2 + podState.activeCommand = newCommand + } + CommandSendingNotConfirmed -> { + val now = System.currentTimeMillis() + val newCommand = podState.activeCommand?.copy( + createdRealtime = now, + sentRealtime = now + 1 + ) + podState.lastStatusResponseReceived = 0 + } + CommandSendingFailure, NoActiveCommand -> + podState.activeCommand = null + } + + } + override fun updateFromDefaultStatusResponse(response: DefaultStatusResponse) { logger.debug(LTag.PUMPCOMM, "Default status response :$response") podState.deliveryStatus = response.deliveryStatus diff --git a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/ui/DashPodManagementActivity.kt b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/ui/DashPodManagementActivity.kt index b06587020c..e3f6f97138 100644 --- a/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/ui/DashPodManagementActivity.kt +++ b/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/ui/DashPodManagementActivity.kt @@ -125,7 +125,7 @@ class DashPodManagementActivity : NoSplashAppCompatActivity() { binding.buttonActivatePod.isEnabled = podStateManager.activationProgress.isBefore(ActivationProgress.COMPLETED) binding.buttonDeactivatePod.isEnabled = - podStateManager.activationProgress.isAtLeast(ActivationProgress.PHASE_1_COMPLETED) || + podStateManager.activationProgress.isAtLeast(ActivationProgress.SET_UNIQUE_ID) || podStateManager.podStatus == PodStatus.ALARM if (podStateManager.activationProgress.isAtLeast(ActivationProgress.PHASE_1_COMPLETED)) {