Index: firmware/App/Modes/ModeFill.c =================================================================== diff -u -r482a7419b20845a9544d2c79b96b27300a3f00d6 -r9aacc7bb8138bd2b2485bf628592e845ddf6d400 --- firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 482a7419b20845a9544d2c79b96b27300a3f00d6) +++ firmware/App/Modes/ModeFill.c (.../ModeFill.c) (revision 9aacc7bb8138bd2b2485bf628592e845ddf6d400) @@ -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 );