Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -rffaf9f13166d7a9beb4252fad804c488f870aaaa -r4d0c621f5994e1de8bf7d3337678f7835292ce73 --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision ffaf9f13166d7a9beb4252fad804c488f870aaaa) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 4d0c621f5994e1de8bf7d3337678f7835292ce73) @@ -8,7 +8,7 @@ * @file ModePostTreat.c * * @author (last) Sean Nash -* @date (last) 05-Jul-2023 +* @date (last) 11-Aug-2023 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -312,6 +312,32 @@ /*********************************************************************//** * @brief + * The requestPostTxNext requests to go to next screen after treatment record + * review screen in post-treatment mode + * @details Inputs: currentPostTreatmentState + * @details Outputs: none + * @return none + *************************************************************************/ +void requestPostTxNext( void ) +{ + BOOL accepted = FALSE; + REQUEST_REJECT_REASON_CODE_T rejReason = REQUEST_REJECT_REASON_NONE; + + if ( currentPostTreatmentState >= HD_POST_TREATMENT_DISPOSABLE_REMOVAL_STATE ) + { + accepted = TRUE; + } + else + { + rejReason = REQUEST_REJECT_REASON_DRAIN_NOT_COMPLETE; + } + + // Respond to user request to move to next screen + sendPostTxNextCmdResponse( accepted, (U32)rejReason ); +} + +/*********************************************************************//** + * @brief * The signalUserConfirmDisposableRemoval signals post-treatment mode * user has confirmed disposable removal. * @details Inputs: none @@ -392,7 +418,7 @@ *************************************************************************/ static HD_POST_TREATMENT_STATE_T handlePostTreatmentDrainReservoirsState( void ) { - HD_POST_TREATMENT_STATE_T state = HD_POST_TREATMENT_DRAIN_RESERVOIRS_STATE; + HD_POST_TREATMENT_STATE_T state = HD_POST_TREATMENT_DRAIN_RESERVOIRS_STATE; execDrainReservoirs(); @@ -531,7 +557,19 @@ static void execDrainReservoirs( void ) { DRAIN_STATE_T priorSubState = currentDrainReservoirState; + DG_OP_MODE_T dgMode = getDGOpMode(); + if ( DG_MODE_STAN == dgMode ) + { // In case DG was reset/power cycled, re-start DG so we can drain the reservoirs + cmdStartDG(); + currentDrainReservoirState = DRAIN_RESERVOIR_SWITCH_STATE; + } + else if ( DG_MODE_FAUL == dgMode ) + { // In case DG faulted, skip DG drain states and move on + currentDrainReservoirState = DRAIN_RESERVOIR_COMPLETE_STATE; + } + + // Execute post-tx drain state machine switch ( currentDrainReservoirState ) { case DRAIN_RESERVOIR_SWITCH_STATE: @@ -574,7 +612,7 @@ static DRAIN_STATE_T handleDrainReservoirSwitchState( void ) { DRAIN_STATE_T state = DRAIN_RESERVOIR_SWITCH_STATE; - DG_OP_MODE_T dgMode = getDGOpMode(); + DG_OP_MODE_T dgMode = getDGOpMode(); if ( ( DG_MODE_GENE == dgMode ) && ( DG_GEN_IDLE_MODE_STATE_FLUSH_WATER == getDGSubMode() ) ) { @@ -610,14 +648,6 @@ } } } - else if ( DG_MODE_STAN == dgMode ) - { // In case DG was reset/power cycled, re-start DG so we can drain the reservoirs - cmdStartDG(); - } - else if ( DG_MODE_FAUL == dgMode ) - { // In case DG faulted, skip DG drain states and move on - state = DRAIN_RESERVOIR_COMPLETE_STATE; - } return state; }