Index: firmware/App/Modes/ModeFlush.c =================================================================== diff -u -r264e096770a7f93a93ffbe37c1fe84343230d13c -r006227ac3cde98b6a2f9659b7f764547262f373b --- firmware/App/Modes/ModeFlush.c (.../ModeFlush.c) (revision 264e096770a7f93a93ffbe37c1fe84343230d13c) +++ firmware/App/Modes/ModeFlush.c (.../ModeFlush.c) (revision 006227ac3cde98b6a2f9659b7f764547262f373b) @@ -87,6 +87,8 @@ static U32 rsrvrFillStableTimeCounter[ NUM_OF_DG_RESERVOIRS ]; ///< Reservoirs fill stable time counter. static U32 overallFlushElapsedTimeStart; ///< Overall flush mode elapsed time start. static U32 stateTimerStart; ///< State timer start. +static U32 rsrvrTimer[ NUM_OF_DG_RESERVOIRS ]; ///< Reservoir fill timers +static U32 drainTimer; ///< Drain timer static ALARM_ID_T alarmDetectedPendingTrigger; ///< Alarm ID that is detected and is pending to be triggered. static DG_RESERVOIR_STATUS_T rsrvr1Status; ///< Reservoir 1 status. static DG_RESERVOIR_STATUS_T rsrvr2Status; ///< Reservoir 2 status. @@ -317,6 +319,7 @@ setDrainPumpTargetRPM( DRAIN_PUMP_TARGET_RPM ); flushUIState = FLUSH_UI_STATE_DRAIN_DEVICE; + drainTimer = stateTimerStart = getMSTimerCount(); rsrvr1Status = DG_RESERVOIR_ABOVE_TARGET; state = DG_FLUSH_STATE_DRAIN_R1; @@ -358,6 +361,7 @@ // Set VPO setValveState( VPO, VALVE_STATE_FILL_C_TO_NC); + drainTimer = stateTimerStart = getMSTimerCount(); rsrvr2Status = DG_RESERVOIR_ABOVE_TARGET; state = DG_FLUSH_STATE_DRAIN_R2; @@ -516,7 +520,9 @@ setValveState( VPO, VALVE_STATE_FILL_C_TO_NC ); setValveState( VRF, VALVE_STATE_R1_C_TO_NC ); setValveState( VRI, VALVE_STATE_R2_C_TO_NC ); - stateTimerStart = getMSTimerCount(); + stateTimerStart = + rsrvrTimer[ DG_RESERVOIR_1 ] = + rsrvrTimer[ DG_RESERVOIR_2 ] = getMSTimerCount(); rsrvr1Status = DG_RESERVOIR_BELOW_TARGET; rsrvr2Status = DG_RESERVOIR_BELOW_TARGET; @@ -575,7 +581,10 @@ setValveState( VRD1, VALVE_STATE_OPEN ); setDrainPumpTargetRPM( DRAIN_PUMP_TARGET_RPM ); - stateTimerStart = getMSTimerCount(); + stateTimerStart = + drainTimer = + rsrvrTimer[ DG_RESERVOIR_1 ] = + rsrvrTimer[ DG_RESERVOIR_2 ] = getMSTimerCount(); // Set both reservoirs' status rsrvr1Status = DG_RESERVOIR_ABOVE_TARGET; @@ -675,6 +684,7 @@ // Set VPO setValveState( VPO, VALVE_STATE_FILL_C_TO_NC); + drainTimer = stateTimerStart = getMSTimerCount(); isThisInitialDrain = FALSE; rsrvr1Status = DG_RESERVOIR_ABOVE_TARGET; @@ -965,12 +975,14 @@ status = DG_RESERVOIR_REACHED_TARGET; rsrvrFillStableTimeCounter[ r ] = 0; // Set the state timer in case it needs to be used for another timeout check + rsrvrTimer [ r ] = getMSTimerCount(); if (resetStateTimer) { stateTimerStart = getMSTimerCount(); } } } +// else if ( TRUE == didTimeout( rsrvrTimer [ r [, timeout ) ) else if ( TRUE == didTimeout( stateTimerStart, timeout ) ) { // Failed to fill on time @@ -1013,6 +1025,7 @@ if ( TRUE == isDrainComplete ) { // Set the state timer in case it needs to be used for another timeout check + drainTimer = getMSTimerCount(); if (resetStateTimer) { stateTimerStart = getMSTimerCount(); @@ -1021,6 +1034,7 @@ haveDrainParamsBeenInit[ r ] = FALSE; status = DG_RESERVOIR_REACHED_TARGET; } +// else if ( TRUE == didTimeout( drainTimer, timeout ) ) else if ( TRUE == didTimeout( stateTimerStart, timeout ) ) { // Failed to drain on time