Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r152aacee2eb078fb519724e1305630f5b5b4cb91 -r8afe61f9833d9184c3ac0a430186dcb9aed7d468 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 152aacee2eb078fb519724e1305630f5b5b4cb91) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 8afe61f9833d9184c3ac0a430186dcb9aed7d468) @@ -511,17 +511,41 @@ /*********************************************************************//** * @brief - * The signalActionToResumeFill function sets the remaining reservior fill - * flags to resume filling while in PreTreatment Mode. + * The signalAllowDGFlushFills function sets the reservoir flush flags + * to allow reservoir flush fills to proceed when ready. * @details Inputs: none * @details Outputs: reservoirFlags * @return none *************************************************************************/ -void signalActionToResumeFill( void ) +void signalAllowDGFlushFills( void ) { reservoirStatus[ DG_RESERVOIR_1 ].startFlushFill = TRUE; - reservoirStatus[ DG_RESERVOIR_1 ].startNormalFill = TRUE; reservoirStatus[ DG_RESERVOIR_2 ].startFlushFill = TRUE; +} + +/*********************************************************************//** + * @brief + * The signalAllowDGFillRes1 function sets the reservoir 1 fill flag + * to allow reservoir 1 fill to proceed when ready. + * @details Inputs: none + * @details Outputs: reservoirFlags + * @return none + *************************************************************************/ +void signalAllowDGFillRes1( void ) +{ + reservoirStatus[ DG_RESERVOIR_1 ].startNormalFill = TRUE; +} + +/*********************************************************************//** + * @brief + * The signalAllowDGFillRes2 function sets the reservoir 2 fill flag + * to allow reservoir 2 fill to proceed when ready. + * @details Inputs: none + * @details Outputs: reservoirFlags + * @return none + *************************************************************************/ +void signalAllowDGFillRes2( void ) +{ reservoirStatus[ DG_RESERVOIR_2 ].startNormalFill = TRUE; } @@ -723,7 +747,12 @@ fillReservoirOneStartRequested = TRUE; transitionToNoCartSelfTests(); } - signalActionToResumeFill(); +#ifndef _RELEASE_ + if ( SW_CONFIG_DISABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_AIR_PUMP ) ) // Allow reservoir flushes now if air pump not disabled +#endif + { + signalAllowDGFlushFills(); + } } return state; @@ -1073,33 +1102,37 @@ static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtFillCmdState( void ) { PRE_TREATMENT_RESERVOIR_MGMT_STATE_T state = PRE_TREATMENT_RESERVOIR_MGMT_START_FILL_STATE; + DG_RESERVOIR_ID_T inactiveReservoir = getDGInactiveReservoir(); DG_OP_MODE_T dgOpMode = getDGOpMode(); U32 dgSubMode = getDGSubMode(); - U32 volume = 0; - DG_RESERVOIR_ID_T inactiveReservoir = getDGInactiveReservoir(); if ( ( DG_MODE_GENE == dgOpMode ) && ( DG_GEN_IDLE_MODE_STATE_FLUSH_WATER == dgSubMode ) ) { + U32 volume = 0; + // Drain both reservoirs and return to active res 2 before initial fills if ( reservoirStatus[ inactiveReservoir ].initialDrain != TRUE ) { reservoirStatus[ inactiveReservoir ].initialDrain = TRUE; state = PRE_TREATMENT_RESERVOIR_MGMT_REQUEST_RESERVOIR_SWITCH_STATE; } - // Once both reservoirs drained and returned to active res 2, wait for pre-tx workflow - // to get to point where fills are allowed, before starting fill - // not flushed and need to fill -OR- - // flushed and need to fill after entering dry self test state - else if ( ( TRUE == reservoirStatus[ inactiveReservoir ].startFlushFill ) || - ( ( TRUE == reservoirStatus[ inactiveReservoir ].startNormalFill ) && - ( currentPreTreatmentState >= HD_PRE_TREATMENT_SELF_TEST_DRY_STATE ) ) ) - { - volume = getPreTreatmentFillVolume( inactiveReservoir ); + // Determine target fill volume for next fill + volume = getPreTreatmentFillVolume( inactiveReservoir ); + // Determine whether we can start next fill yet + if ( ( FALSE == reservoirStatus[ inactiveReservoir ].flushComplete ) && + ( TRUE == reservoirStatus[ inactiveReservoir ].startFlushFill ) ) + { cmdStartDGFill( volume, DEFAULT_TARGET_FILL_FLOW_RATE_LPM ); state = PRE_TREATMENT_RESERVOIR_MGMT_FILL_CMD_RESP_STATE; } + else if ( ( TRUE == reservoirStatus[ inactiveReservoir ].flushComplete ) && + ( TRUE == reservoirStatus[ inactiveReservoir ].startNormalFill ) ) + { + cmdStartDGFill( volume, DEFAULT_TARGET_FILL_FLOW_RATE_LPM ); + state = PRE_TREATMENT_RESERVOIR_MGMT_FILL_CMD_RESP_STATE; + } } return state;