Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r6f02ff4686ec9dfc60247e9ed3fc9c5cc7771543 -r253979e460b82c6d038e0a566f3be8c6df0a28c9 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 6f02ff4686ec9dfc60247e9ed3fc9c5cc7771543) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 253979e460b82c6d038e0a566f3be8c6df0a28c9) @@ -19,50 +19,60 @@ #include "ModePreTreat.h" #include "OperationModes.h" #include "Timers.h" +#include "TubeSetInstall.h" #include "TxParams.h" /** * @addtogroup TDPreTreatmentMode * @{ */ -// ********** private definitions ********** - // ********** private data ********** static TD_PRE_TREATMENT_MODE_STATE_T currentPreTreatmentState; ///< Current Pre-Treatment sub-state +static BOOL goToInstallStateRequested; ///< Flag indicating a request to transition to Install state. // ********** private function prototypes ********** +static TD_PRE_TREATMENT_MODE_STATE_T handleWaterSampleState( void ); ///< Handle Water Sample state during Pre-Treatment +static TD_PRE_TREATMENT_MODE_STATE_T handleSelfTestConsumableState( void ); ///< Handle Self Test Consumable state during Pre-Treatment +static TD_PRE_TREATMENT_MODE_STATE_T handleSelfTestNoCartState( void ); ///< Handle Self Test No Cart state during Pre-Treatment +static TD_PRE_TREATMENT_MODE_STATE_T handleInstallState( void ); ///< Handle Install state during Pre-Treatment +static TD_PRE_TREATMENT_MODE_STATE_T handleSelfTestDryState( void ); ///< Handle Self Test Dry state during Pre-Treatment +static TD_PRE_TREATMENT_MODE_STATE_T handlePrimeState( void ); ///< Handle Prime state during Pre-Treatment +static TD_PRE_TREATMENT_MODE_STATE_T handleRecirculateState( void ); ///< Handle Recirculate state during Pre-Treatment static TD_PRE_TREATMENT_MODE_STATE_T handleRxState( void ); ///< Handle Confirm Rx state during Pre-Treatment +static TD_PRE_TREATMENT_MODE_STATE_T handlePatientConnectionState( void ); ///< Handle Patient Connection state during Pre-Treatment /*********************************************************************//** * @brief * The initPreTreatmentMode function initializes the Pre-Treatment mode. -* @details Inputs: none -* @details Outputs: Resets the Treatment Parameters session and sets the initial +* @details \b Inputs: none +* @details \b Outputs: Resets the Treatment Parameters session and sets the initial * Pre-Treatment sub-state. * @return none **************************************************************************/ void initPreTreatmentMode( void ) { // Start a fresh Treatment Parameters session for this run. resetTreatmentParameters(); - currentPreTreatmentState = TD_PRE_TREATMENT_CONFIRM_RX_STATE; + currentPreTreatmentState = TD_PRE_TREATMENT_TUBING_SET_INSTALL_STATE; + goToInstallStateRequested = FALSE; } /*********************************************************************//** * @brief * The transitionToPreTreatmentMode function prepares the system for * entry into Pre-Treatment mode. -* @details Inputs: none -* @details Outputs: Initializes mode specific state and returns the starting +* @details \b Inputs: none +* @details \b Outputs: Initializes mode specific state and returns the starting * Pre-Treatment sub-state. * @return Initial Pre-Treatment sub-state **************************************************************************/ U32 transitionToPreTreatmentMode( void ) { initPreTreatmentMode(); + initTubeSetInstall(); return (U32)currentPreTreatmentState; } @@ -71,8 +81,8 @@ * @brief * The execPreTreatmentMode function executes the Pre-Treatment * mode state machine. - * @details Inputs: stop button status and system conditions via helpers. - * @details Outputs: Advances the Pre-Treatment sub-state and + * @details \b Inputs: stop button status and system conditions via helpers. + * @details \b Outputs: Advances the Pre-Treatment sub-state and * previously received user confirmations. * @return current Pre-Treatment sub-state. *************************************************************************/ @@ -100,8 +110,8 @@ // currentPreTreatmentState = handleSelfTestNoCartState(); break; - case TD_PRE_TREATMENT_CART_INSTALL_STATE: - // currentPreTreatmentState = handleInstallState(); + case TD_PRE_TREATMENT_TUBING_SET_INSTALL_STATE: + currentPreTreatmentState = handleInstallState(); break; case TD_PRE_TREATMENT_SELF_TEST_DRY_STATE: @@ -135,11 +145,150 @@ /*********************************************************************//** * @brief + * The handleWaterSampleState function executes the Water Sample state of + * pre-treatment mode. + * @details \b Inputs: TODO fill up if any + * @details \b Outputs: TODO fill up if any + * @return next Pre-Treatment mode state. + *************************************************************************/ +static TD_PRE_TREATMENT_MODE_STATE_T handleWaterSampleState( void ) +{ + TD_PRE_TREATMENT_MODE_STATE_T state = TD_PRE_TREATMENT_WATER_SAMPLE_STATE; + + // TODO: Transition to Self test consumable state on completion when implemented + // state = TD_PRE_TREATMENT_SELF_TEST_CONSUMABLE_STATE; + + return state; +} + +/*********************************************************************//** + * @brief + * The handleSelfTestConsumableState function executes the Self Test + * Consumable state of pre-treatment mode. + * @details \b Inputs: TODO fill up if any + * @details \b Outputs: TODO fill up if any + * @return next Pre-Treatment mode state. + *************************************************************************/ +static TD_PRE_TREATMENT_MODE_STATE_T handleSelfTestConsumableState( void ) +{ + TD_PRE_TREATMENT_MODE_STATE_T state = TD_PRE_TREATMENT_SELF_TEST_CONSUMABLE_STATE; + + // TODO: Transition to Self test no cart state on completion when implemented + // state = TD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE; + + return state; +} + +/*********************************************************************//** + * @brief + * The handleSelfTestNoCartState function executes the Self Test No Cart + * state of pre-treatment mode. + * @details \b Inputs: TODO fill up if any + * @details \b Outputs: TODO fill up if any + * @return next Pre-Treatment mode state. + *************************************************************************/ +static TD_PRE_TREATMENT_MODE_STATE_T handleSelfTestNoCartState( void ) +{ + TD_PRE_TREATMENT_MODE_STATE_T state = TD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE; + + // TODO: Transition to Tubing set install state on completion when implemented + // state = TD_PRE_TREATMENT_TUBING_SET_INSTALL_STATE; + + return state; +} + +/*********************************************************************//** + * @brief + * The handleInstallState function calls Tube Set Install Service and + * advances to Self Test Dry state once the service signals + * completion. + * @details \b Inputs: none + * @details \b Outputs: Advances Pre-Treatment state when install is complete. + * @return next Pre-Treatment mode state + *************************************************************************/ +static TD_PRE_TREATMENT_MODE_STATE_T handleInstallState( void ) +{ + TD_PRE_TREATMENT_MODE_STATE_T state = TD_PRE_TREATMENT_TUBING_SET_INSTALL_STATE; + + // call tube set install service to auto-load tube set + execTubeSetInstall(); + + if ( TRUE == isTubeSetInstallComplete() ) + { + state = TD_PRE_TREATMENT_SELF_TEST_DRY_STATE; + } + + return state; +} + +/*********************************************************************//** + * @brief + * The handleSelfTestDryState function executes the Self Test Dry state + * of pre-treatment mode. + * @details \b Inputs: TODO fill up if any + * @details \b Outputs: TODO fill up if any + * @return next Pre-Treatment mode state. + *************************************************************************/ +static TD_PRE_TREATMENT_MODE_STATE_T handleSelfTestDryState( void ) +{ + TD_PRE_TREATMENT_MODE_STATE_T state = TD_PRE_TREATMENT_SELF_TEST_DRY_STATE; + + if ( TRUE == goToInstallStateRequested ) + { + goToInstallStateRequested = FALSE; + initTubeSetInstall(); + state = TD_PRE_TREATMENT_TUBING_SET_INSTALL_STATE; + } + + // TODO: Transition to Prime state on completion when implemented + // state = TD_PRE_TREATMENT_PRIME_STATE; + + return state; +} + +/*********************************************************************//** + * @brief + * The handlePrimeState function executes the Prime state of + * pre-treatment mode. + * @details \b Inputs: TODO fill up if any + * @details \b Outputs: TODO fill up if any + * @return next Pre-Treatment mode state. + *************************************************************************/ +static TD_PRE_TREATMENT_MODE_STATE_T handlePrimeState( void ) +{ + TD_PRE_TREATMENT_MODE_STATE_T state = TD_PRE_TREATMENT_PRIME_STATE; + + // TODO: Transition to Recirculate state on completion when implemented + // state = TD_PRE_TREATMENT_RECIRCULATE_STATE; + + return state; +} + +/*********************************************************************//** + * @brief + * The handleRecirculateState function executes the Recirculate state of + * pre-treatment mode. + * @details \b Inputs: TODO fill up if any + * @details \b Outputs: TODO fill up if any + * @return next Pre-Treatment mode state. + *************************************************************************/ +static TD_PRE_TREATMENT_MODE_STATE_T handleRecirculateState( void ) +{ + TD_PRE_TREATMENT_MODE_STATE_T state = TD_PRE_TREATMENT_RECIRCULATE_STATE; + + // TODO: Transition to Confirm RX state on completion when implemented + // state = TD_PRE_TREATMENT_CONFIRM_RX_STATE; + + 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 + * @details \b Inputs: none + * @details \b Outputs: Requests transition to Treatment mode when the prescription * is valid and confirmed otherwise remains in Confirm Rx. - * @return next Pre-Treatment mode sub-state. + * @return next Pre-Treatment mode state. *************************************************************************/ static TD_PRE_TREATMENT_MODE_STATE_T handleRxState( void ) { @@ -150,12 +299,42 @@ // Valid + confirmed – move to next state: Patient Connection if ( ( TRUE == paramsValid ) && ( TRUE == paramsConfirmed ) ) { - // TODO: when additional Pre-Treatment states are implemented, change to TD_PRE_TREATMENT_PATIENT_CONNECTION_STATE. - // state = TD_PRE_TREATMENT_PATIENT_CONNECTION_STATE; - requestNewOperationMode( MODE_TREA ); + state = TD_PRE_TREATMENT_PATIENT_CONNECTION_STATE; } return state; } +/*********************************************************************//** + * @brief + * The handlePatientConnectionState function executes the Patient + * Connection state of pre-treatment mode. + * @details \b Inputs: TODO fill up if any + * @details \b Outputs: TODO fill up if any + * @return next Pre-Treatment mode state. + *************************************************************************/ +static TD_PRE_TREATMENT_MODE_STATE_T handlePatientConnectionState( void ) +{ + TD_PRE_TREATMENT_MODE_STATE_T state = TD_PRE_TREATMENT_PATIENT_CONNECTION_STATE; + + // TODO : after implementing this state, place the transition in the right place + + requestNewOperationMode( MODE_TREA ); + + return state; +} + +/*********************************************************************//** + * @brief + * The requestTubeSetInstall function signals a request to transition + * the Pre-Treatment mode state machine to Install state. + * @details \b Inputs: none + * @details \b Outputs: goToInstallStateRequested + * @return none + *************************************************************************/ +void requestTubeSetInstall( void ) +{ + goToInstallStateRequested = TRUE; +} + /**@}*/