From b6272cfea7039161caf770902309261c953fe994 Mon Sep 17 00:00:00 2001 From: jbr7rr <> Date: Sat, 12 Aug 2023 15:25:50 +0200 Subject: [PATCH] Improve retry activation --- .../pump/medtrum/ui/MedtrumActivity.kt | 12 +++- .../MedtrumRetryActivationConnectFragment.kt | 18 +++--- .../medtrum/ui/viewmodel/MedtrumViewModel.kt | 64 +++++++++++-------- 3 files changed, 59 insertions(+), 35 deletions(-) diff --git a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumActivity.kt b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumActivity.kt index 07f96164d8..a7fd32336f 100644 --- a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumActivity.kt +++ b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumActivity.kt @@ -43,14 +43,22 @@ class MedtrumActivity : MedtrumBaseActivity() { PatchStep.ATTACH_PATCH -> setupViewFragment(MedtrumAttachPatchFragment.newInstance()) PatchStep.ACTIVATE -> setupViewFragment(MedtrumActivateFragment.newInstance()) PatchStep.ACTIVATE_COMPLETE -> setupViewFragment(MedtrumActivateCompleteFragment.newInstance()) - PatchStep.CANCEL, - PatchStep.COMPLETE -> this@MedtrumActivity.finish() PatchStep.ERROR -> Unit // Do nothing, let activity handle this PatchStep.RETRY_ACTIVATION -> setupViewFragment(MedtrumRetryActivationFragment.newInstance()) PatchStep.RETRY_ACTIVATION_CONNECT -> setupViewFragment(MedtrumRetryActivationConnectFragment.newInstance()) PatchStep.START_DEACTIVATION -> setupViewFragment(MedtrumStartDeactivationFragment.newInstance()) PatchStep.DEACTIVATE -> setupViewFragment(MedtrumDeactivatePatchFragment.newInstance()) + PatchStep.CANCEL -> { + handleCancel() + this@MedtrumActivity.finish() + } + + PatchStep.COMPLETE -> { + handleComplete() + this@MedtrumActivity.finish() + } + PatchStep.FORCE_DEACTIVATION -> { medtrumPump.pumpState = MedtrumPumpState.STOPPED moveStep(PatchStep.DEACTIVATION_COMPLETE) diff --git a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumRetryActivationConnectFragment.kt b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumRetryActivationConnectFragment.kt index f1e3c5614a..466be92e7b 100644 --- a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumRetryActivationConnectFragment.kt +++ b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/MedtrumRetryActivationConnectFragment.kt @@ -34,15 +34,17 @@ class MedtrumRetryActivationConnectFragment : MedtrumBaseFragment Unit // Nothing to do here - MedtrumViewModel.SetupStep.FILLED -> forceMoveStep(PatchStep.PRIME) - MedtrumViewModel.SetupStep.PRIMING -> forceMoveStep(PatchStep.PRIMING) - MedtrumViewModel.SetupStep.PRIMED -> forceMoveStep(PatchStep.PRIME_COMPLETE) - MedtrumViewModel.SetupStep.ACTIVATED -> forceMoveStep(PatchStep.ACTIVATE_COMPLETE) + if (patchStep.value != PatchStep.CANCEL) { + when (it) { + MedtrumViewModel.SetupStep.INITIAL -> Unit // Nothing to do here + MedtrumViewModel.SetupStep.FILLED -> forceMoveStep(PatchStep.PRIME) + MedtrumViewModel.SetupStep.PRIMING -> forceMoveStep(PatchStep.PRIMING) + MedtrumViewModel.SetupStep.PRIMED -> forceMoveStep(PatchStep.PRIME_COMPLETE) + MedtrumViewModel.SetupStep.ACTIVATED -> forceMoveStep(PatchStep.ACTIVATE_COMPLETE) - else -> { - aapsLogger.error(LTag.PUMP, "Unexpected state: $it") + else -> { + aapsLogger.error(LTag.PUMP, "Unexpected state: $it") + } } } } diff --git a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/viewmodel/MedtrumViewModel.kt b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/viewmodel/MedtrumViewModel.kt index da2245ce21..688770f884 100644 --- a/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/viewmodel/MedtrumViewModel.kt +++ b/pump/medtrum/src/main/java/info/nightscout/pump/medtrum/ui/viewmodel/MedtrumViewModel.kt @@ -47,6 +47,7 @@ class MedtrumViewModel @Inject constructor( val eventHandler: LiveData> get() = _eventHandler + private var oldPatchStep: PatchStep? = null private var mInitPatchStep: PatchStep? = null private var connectRetryCounter = 0 @@ -135,52 +136,41 @@ class MedtrumViewModel @Inject constructor( } fun moveStep(newPatchStep: PatchStep) { - val oldPatchStep = patchStep.value + oldPatchStep = patchStep.value if (oldPatchStep != newPatchStep) { when (newPatchStep) { - PatchStep.CANCEL -> { - if (oldPatchStep !in listOf( - PatchStep.PREPARE_PATCH, - PatchStep.START_DEACTIVATION, - PatchStep.DEACTIVATE, - PatchStep.FORCE_DEACTIVATION, - PatchStep.DEACTIVATION_COMPLETE - ) - ) { - medtrumService?.disconnect("Cancel") - } - } - - PatchStep.COMPLETE -> { - medtrumService?.disconnect("Complete") - } - + PatchStep.CANCEL, + PatchStep.COMPLETE, + PatchStep.ACTIVATE_COMPLETE, + PatchStep.ERROR, PatchStep.START_DEACTIVATION, PatchStep.DEACTIVATE, PatchStep.FORCE_DEACTIVATION, PatchStep.DEACTIVATION_COMPLETE, PatchStep.PREPARE_PATCH, - PatchStep.RETRY_ACTIVATION, - PatchStep.RETRY_ACTIVATION_CONNECT -> { - // Do nothing, deactivation uses commandQueue to control connection + PatchStep.RETRY_ACTIVATION -> { + // Do nothing, these steps don't require a connection } - PatchStep.PREPARE_PATCH_CONNECT -> { + PatchStep.RETRY_ACTIVATION_CONNECT, + PatchStep.PREPARE_PATCH_CONNECT -> { // Make sure we are disconnected, else dont move step if (medtrumService?.isConnected == true) { aapsLogger.info(LTag.PUMP, "moveStep: connected, not moving step") return - } else { } } - else -> { + PatchStep.PRIME, + PatchStep.PRIMING, + PatchStep.PRIME_COMPLETE, + PatchStep.ATTACH_PATCH, + PatchStep.ACTIVATE -> { // Make sure we are connected, else dont move step if (medtrumService?.isConnected == false) { aapsLogger.info(LTag.PUMP, "moveStep: not connected, not moving step") return - } else { } } } @@ -198,6 +188,30 @@ class MedtrumViewModel @Inject constructor( aapsLogger.info(LTag.PUMP, "forceMoveStep: $oldPatchStep -> $newPatchStep") } + fun handleCancel() { + if (oldPatchStep !in listOf( + PatchStep.PREPARE_PATCH, + PatchStep.START_DEACTIVATION, + PatchStep.DEACTIVATE, + PatchStep.FORCE_DEACTIVATION, + PatchStep.DEACTIVATION_COMPLETE + ) + ) { + medtrumService?.disconnect("Cancel") + } + if (oldPatchStep == PatchStep.RETRY_ACTIVATION_CONNECT) { + while (medtrumService?.isConnecting == true || medtrumService?.isConnected == true) { + SystemClock.sleep(100) + } + // Set pump state to FILLED, so user will be able to retry activation again + medtrumPump.pumpState = MedtrumPumpState.FILLED + } + } + + fun handleComplete() { + medtrumService?.disconnect("Complete") + } + fun initializePatchStep(step: PatchStep) { mInitPatchStep = prepareStep(step) }