Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r6f02ff4686ec9dfc60247e9ed3fc9c5cc7771543 -rc8ea1e90f2ecdaffb0a8f6c909babc89e06f3cab --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 6f02ff4686ec9dfc60247e9ed3fc9c5cc7771543) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision c8ea1e90f2ecdaffb0a8f6c909babc89e06f3cab) @@ -15,9 +15,11 @@ * ***************************************************************************/ +#include #include "Buttons.h" #include "ModePreTreat.h" #include "OperationModes.h" +#include "TaskGeneral.h" #include "Timers.h" #include "TxParams.h" @@ -28,12 +30,18 @@ // ********** private definitions ********** +#define SUBMODE_COMPLETE_UI_TRANSITION_TIME_COUNT ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) + // ********** private data ********** static TD_PRE_TREATMENT_MODE_STATE_T currentPreTreatmentState; ///< Current Pre-Treatment sub-state +static BOOL alarmActionResumeReceived; ///< Flag indicates alarm action resume received. +static BOOL tubeSetInstallRequested; ///< Request to re-enter install flow (mid-treatment / failure) +static U32 submodeCompleteTransitionTimeCounter; ///< Sub-mode completed transition wait time counter. // ********** private function prototypes ********** +static TD_PRE_TREATMENT_MODE_STATE_T handleDrySelfTestState( void ); ///< Handle dry self tests state during Pre-Treatment static TD_PRE_TREATMENT_MODE_STATE_T handleRxState( void ); ///< Handle Confirm Rx state during Pre-Treatment /*********************************************************************//** @@ -48,7 +56,7 @@ { // Start a fresh Treatment Parameters session for this run. resetTreatmentParameters(); - currentPreTreatmentState = TD_PRE_TREATMENT_CONFIRM_RX_STATE; + currentPreTreatmentState = TD_PRE_TREATMENT_CART_INSTALL_STATE; } /*********************************************************************//** @@ -105,7 +113,7 @@ break; case TD_PRE_TREATMENT_SELF_TEST_DRY_STATE: - // currentPreTreatmentState = handleSelfTestDryState(); + currentPreTreatmentState = handleDrySelfTestState(); break; case TD_PRE_TREATMENT_PRIME_STATE: @@ -135,6 +143,71 @@ /*********************************************************************//** * @brief + * The getPreTreatmentSubState function gets the current + * pre-treatment mode state. + * @details Inputs: currentPreTreatmentState + * @details Outputs: none + * @return currentPreTreatmentState + *************************************************************************/ +TD_PRE_TREATMENT_MODE_STATE_T getPreTreatmentSubState( void ) +{ + return currentPreTreatmentState; +} + +/*********************************************************************//** +* @brief +* The signalPreTreatmentTubeSetInstall function signals Pre-Treatment +* to transition to the Tube Set Install flow. +* @details \b Inputs: none +* @details \b Outputs: tubeSetInstallRequested flag set to TRUE +* @return none +*************************************************************************/ +void signalPreTreatmentTubeSetInstall( void ) +{ + tubeSetInstallRequested = TRUE; +} + +/*********************************************************************//** + * @brief + * The handleSelfTestDryState function performs dry self-test. + * @details Inputs: none + * @details Outputs: transition to prime state on user request + * @return current state (sub-mode) + *************************************************************************/ +static TD_PRE_TREATMENT_MODE_STATE_T handleDrySelfTestState( void ) +{ + TD_PRE_TREATMENT_MODE_STATE_T state = TD_PRE_TREATMENT_SELF_TEST_DRY_STATE; + + if ( TRUE == alarmActionResumeReceived ) + { + alarmActionResumeReceived = FALSE; + signalResumeSelfTests(); + } + + execDrySelfTests(); + + // Handle install request to failure path + if ( TRUE == tubeSetInstallRequested ) + { + tubeSetInstallRequested = FALSE; + signalPreTreatmentTubeSetInstall(); + } + + if ( DRY_SELF_TESTS_COMPLETE_STATE == getDrySelfTestsState() ) + { + if ( submodeCompleteTransitionTimeCounter++ >= SUBMODE_COMPLETE_UI_TRANSITION_TIME_COUNT ) + { + submodeCompleteTransitionTimeCounter = 0; + state = TD_PRE_TREATMENT_CONFIRM_RX_STATE; +// transitionToPrime(); + } + } + + return state; +} + +/*********************************************************************//** + * @brief * The handleRxState function executes the Confirm Rx pre-treatment step. * @details Inputs: none * @details Outputs: Requests transition to Treatment mode when the prescription