Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -r778c16d5c83e4af29aa9c0e8eb46386c16f60778 -r361b15bf5153656eace8665812ac2a6d2b2fc424 --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 778c16d5c83e4af29aa9c0e8eb46386c16f60778) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 361b15bf5153656eace8665812ac2a6d2b2fc424) @@ -234,18 +234,20 @@ U32 transitionToFillMode( void ) { F32 targetFlowLPM = getTargetFillFlowRateLPM(); + DG_FILL_MODE_STATE_T restoreFillState = fillState; ///< Last active fill state. + initFillMode(); // Reset the state machine if ( ( getTestConfigStatus( TEST_CONFIG_RECOVER_TREATMENT ) != TRUE ) || ( getPreviousOperationMode() != DG_MODE_FAUL ) ) { - initFillMode(); setCurrentSubState( NO_SUB_STATE ); - // Set initial actuator states setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); } else - { + { // Restore the prior fillstate to a valid, running fill state, with timer state reset. + fillState = restoreFillState; + setValveState( VPI, VALVE_STATE_OPEN ); setValveState( VPD, VALVE_STATE_OPEN_C_TO_NC );