Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -r1a300e3a8f0eb834010f72777aa30e61e329125b -re283a8f2f25dea73d84f87ac346c23e7b3059531 --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 1a300e3a8f0eb834010f72777aa30e61e329125b) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision e283a8f2f25dea73d84f87ac346c23e7b3059531) @@ -573,9 +573,10 @@ *************************************************************************/ static DRAIN_STATE_T handleDrainReservoirSwitchState( void ) { - DRAIN_STATE_T state = DRAIN_RESERVOIR_SWITCH_STATE; + DRAIN_STATE_T state = DRAIN_RESERVOIR_SWITCH_STATE; + DG_OP_MODE_T dgMode = getDGOpMode(); - if ( ( DG_MODE_GENE == getDGOpMode() ) && ( DG_GEN_IDLE_MODE_STATE_FLUSH_WATER == getDGSubMode() ) ) + if ( ( DG_MODE_GENE == dgMode ) && ( DG_GEN_IDLE_MODE_STATE_FLUSH_WATER == getDGSubMode() ) ) { DG_CMD_RESPONSE_T dgCmdResp; @@ -609,8 +610,12 @@ } } } - else if ( DG_MODE_FAUL == getDGOpMode() ) - { + 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; }