Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -re5d6674fbf4b6ddd8057385babac0a085ce18f42 -r05b346d3ce9a787d845a6358a9a0ac338e6d1a82 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision e5d6674fbf4b6ddd8057385babac0a085ce18f42) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 05b346d3ce9a787d845a6358a9a0ac338e6d1a82) @@ -1207,8 +1207,6 @@ } else { - DG_SWITCH_RSRVRS_CMD_T rsrvrCmd; - // Start tracking flush cycles, flushComplete => don't drain again, this completes the final fill. if ( FALSE == reservoirStatus[ inactiveReservoir ].flushComplete ) { @@ -1218,10 +1216,6 @@ reservoirStatus[ inactiveReservoir ].flushComplete = TRUE; } } - - rsrvrCmd.reservoirID = (U32)activeReservoir; - rsrvrCmd.useLastTrimmerHeaterDC = FALSE; - cmdSetDGActiveReservoir( &rsrvrCmd ); } } @@ -1241,17 +1235,37 @@ PRE_TREATMENT_RESERVOIR_MGMT_STATE_T state = PRE_TREATMENT_RESERVOIR_MGMT_REQUEST_RESERVOIR_SWITCH_STATE; DG_OP_MODE_T dgOpMode = getDGOpMode(); U32 dgSubMode = getDGSubMode(); - DG_RESERVOIR_ID_T inactiveReservoir = getDGInactiveReservoir(); //wait after drain or fill if ( ( DG_MODE_GENE == dgOpMode ) && ( DG_GEN_IDLE_MODE_STATE_FLUSH_WATER == dgSubMode ) ) { - DG_SWITCH_RSRVRS_CMD_T rsrvrCmd; + BOOL waitBeforeSwitch = TRUE; - rsrvrCmd.reservoirID = (U32)inactiveReservoir; - rsrvrCmd.useLastTrimmerHeaterDC = TRUE; - state = PRE_TREATMENT_RESERVOIR_MGMT_WAIT_FOR_RESERVOIR_SWITCH_STATE; - cmdSetDGActiveReservoir( &rsrvrCmd ); + // We do not want to switch over to res 2 final fill until prime is ready for it. + if ( TRUE == reservoirStatus[ DG_RESERVOIR_2 ].fillComplete ) + { + if ( ( getPreTreatmentSubState() > HD_PRE_TREATMENT_PRIME_STATE ) || + ( ( HD_PRE_TREATMENT_PRIME_STATE == getPreTreatmentSubState() ) && + ( getPrimeState() >= HD_PRIME_RESERVOIR_TWO_FILL_COMPLETE_STATE ) ) ) + { + waitBeforeSwitch = FALSE; + } + } + else + { + waitBeforeSwitch = FALSE; + } + + if ( waitBeforeSwitch != TRUE ) + { + DG_RESERVOIR_ID_T inactiveReservoir = getDGInactiveReservoir(); + DG_SWITCH_RSRVRS_CMD_T rsrvrCmd; + + rsrvrCmd.reservoirID = (U32)inactiveReservoir; + rsrvrCmd.useLastTrimmerHeaterDC = TRUE; + state = PRE_TREATMENT_RESERVOIR_MGMT_WAIT_FOR_RESERVOIR_SWITCH_STATE; + cmdSetDGActiveReservoir( &rsrvrCmd ); + } } return state;