Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r50086215a9c8977c977f836dcd4c454dd4d7d712 -ra657feb0cc008fa976753323207327ddd02d4f2b --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 50086215a9c8977c977f836dcd4c454dd4d7d712) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision a657feb0cc008fa976753323207327ddd02d4f2b) @@ -8,7 +8,7 @@ * @file ModePreTreat.c * * @author (last) Sean Nash -* @date (last) 31-Jan-2023 +* @date (last) 08-Feb-2023 * * @author (original) Dara Navaei * @date (original) 05-Nov-2019 @@ -1206,8 +1206,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 ) { @@ -1217,10 +1215,6 @@ reservoirStatus[ inactiveReservoir ].flushComplete = TRUE; } } - - rsrvrCmd.reservoirID = (U32)activeReservoir; - rsrvrCmd.useLastTrimmerHeaterDC = FALSE; - cmdSetDGActiveReservoir( &rsrvrCmd ); } } @@ -1240,17 +1234,38 @@ 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 ) && + ( getPrimeState() < HD_PRIME_PAUSE ) ) ) + { + 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;