From cddf7a3f68e642cae77d1b6a24a5e773b2113527 Mon Sep 17 00:00:00 2001 From: Andrei Vereha Date: Mon, 26 Apr 2021 21:56:54 +0200 Subject: [PATCH] add check for onError whent the command was sent --- .../plugins/pump/omnipod/dash/OmnipodDashPumpPlugin.kt | 9 ++++++++- .../driver/pod/state/OmnipodDashPodStateManager.kt | 2 +- .../driver/pod/state/OmnipodDashPodStateManagerImpl.kt | 10 ++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) 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 36a32c95d0..af763cd1f5 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 @@ -236,6 +236,12 @@ class OmnipodDashPumpPlugin @Inject constructor( ): PumpEnactResult { // TODO update Treatments // TODO check for existing basal + // check existing basal(locally and maybe? get status) + // if enforceNew -> cancel it() + // else -> return error that existing basal is running + // set new temp basal + // update treatments + // profit return executeProgrammingCommand( history.createRecord( commandType = OmnipodCommandType.SET_TEMPORARY_BASAL, @@ -468,7 +474,8 @@ class OmnipodDashPumpPlugin @Inject constructor( // Here we assume that onError will be called only BEFORE we manage to send a command // If it gets called later, we will have the command as "not sent" in history and will not try to // get it's final status, even if it was send - podStateManager.resetActiveCommand() + + podStateManager.markActiveCommandFailed() source.onSuccess( PumpEnactResult(injector).success(false).enacted(false).comment(throwable.message) ) 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 e34c508657..d01fd1f5c4 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 @@ -68,7 +68,7 @@ interface OmnipodDashPodStateManager { fun createActiveCommand(historyId: String): Completable fun updateActiveCommand(): Maybe - fun resetActiveCommand() + fun markActiveCommandFailed() 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 ccd6931e11..b5134dd817 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 @@ -201,8 +201,13 @@ class OmnipodDashPodStateManagerImpl @Inject constructor( } @Synchronized - override fun resetActiveCommand() { - podState.activeCommand = null + override fun markActiveCommandFailed() { + podState.activeCommand?.run { + if (sentRealtime < createdRealtime) { + // command was not sent + podState.activeCommand = null + } + } } @Synchronized @@ -214,6 +219,7 @@ class OmnipodDashPodStateManagerImpl @Inject constructor( "$sequenceNumberOfLastProgrammingCommand $historyId" ) if (createdRealtime >= lastStatusResponseReceived) + // we did not receive a valid response yet source.onComplete() else { podState.activeCommand = null