Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r6f02ff4686ec9dfc60247e9ed3fc9c5cc7771543 -rc01e4ef09394caa74227509f70e2f0444171ae0b --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 6f02ff4686ec9dfc60247e9ed3fc9c5cc7771543) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision c01e4ef09394caa74227509f70e2f0444171ae0b) @@ -28,9 +28,13 @@ // ********** 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 U32 submodeCompleteTransitionTimeCounter; ///< Sub-mode completed transition wait time counter. // ********** private function prototypes ********** @@ -105,7 +109,7 @@ break; case TD_PRE_TREATMENT_SELF_TEST_DRY_STATE: - // currentPreTreatmentState = handleSelfTestDryState(); + currentPreTreatmentState = handleSelfTestDryState(); break; case TD_PRE_TREATMENT_PRIME_STATE: @@ -135,6 +139,38 @@ /*********************************************************************//** * @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 handleSelfTestDryState( void ) +{ + TD_PRE_TREATMENT_MODE_STATE_T state = TD_PRE_TREATMENT_SELF_TEST_DRY_STATE; + + if ( TRUE == alarmActionResumeReceived ) + { + alarmActionResumeReceived = FALSE; + signalResumeSelfTests(); + } + + execDrySelfTests(); + + if ( DRY_SELF_TESTS_COMPLETE_STATE == getDrySelfTestsState() ) + { + if ( submodeCompleteTransitionTimeCounter++ >= SUBMODE_COMPLETE_UI_TRANSITION_TIME_COUNT ) + { + submodeCompleteTransitionTimeCounter = 0; + state = TD_PRE_TREATMENT_PRIME_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 Index: firmware/App/Modes/ModePreTreat.h =================================================================== diff -u -r395522dffef1348e176564925656012f529c1910 -rc01e4ef09394caa74227509f70e2f0444171ae0b --- firmware/App/Modes/ModePreTreat.h (.../ModePreTreat.h) (revision 395522dffef1348e176564925656012f529c1910) +++ firmware/App/Modes/ModePreTreat.h (.../ModePreTreat.h) (revision c01e4ef09394caa74227509f70e2f0444171ae0b) @@ -36,6 +36,8 @@ U32 transitionToPreTreatmentMode( void ); // Prepares for transition to pre-treatment mode U32 execPreTreatmentMode( void ); // Execute the pre-treatment mode state machine (call from OperationModes) +TD_PRE_TREATMENT_MODE_STATE_T getPreTreatmentSubState( void ); // Get the current pre-treatment sub mode. + /**@}*/ #endif Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -r811e3dbd4a5c9d393d470ff602b72b1d82dc9949 -rc01e4ef09394caa74227509f70e2f0444171ae0b --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 811e3dbd4a5c9d393d470ff602b72b1d82dc9949) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision c01e4ef09394caa74227509f70e2f0444171ae0b) @@ -184,6 +184,7 @@ SW_FAULT_ID_BLOOD_PRIME_INVALID_STATE = 153, SW_FAULT_ID_MODE_PRE_TREATMENT_INVALID_STATE = 148, SW_FAULT_ID_TD_AIR_PUMP_DUTY_CYCLE_OUT_OF_RANGE = 149, + SW_FAULT_ID_TD_INVALID_NO_CARTRIDGE_SELF_TEST_STATE = 150, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T;