Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -rd608769332d4ffe19f39a18caca14d6155f13e0a -reb42b9044be93465ac85bad69883ceabf2dd65fb --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision d608769332d4ffe19f39a18caca14d6155f13e0a) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision eb42b9044be93465ac85bad69883ceabf2dd65fb) @@ -1640,67 +1640,71 @@ DG_OP_MODE_T dgOpMode = getDGOpMode(); U32 dgSubMode = getDGSubMode(); + // If DG has not started yet, start DG + if ( DG_MODE_STAN == dgOpMode ) + { + cmdStartDG(); + } + switch( currentReservoirMgmtState ) { case PRE_TREATMENT_RESERVOIR_MGMT_START_STATE: - rsrvrCmd.useLastTrimmerHeaterDC = FALSE; - if ( ( reservoir1Level >= PRE_TREATMENT_TEST_CONFIG_MIN_RSRVR_VOL_ML ) && ( reservoir1Level < PRE_TREATMENT_TEST_CONFIG_MAX_RSRVR_VOL_ML ) ) + if ( DG_MODE_GENE == dgOpMode ) { - // Assume a reservoir switch is not needed and transition to the complete state because we are done - currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_COMPLETE_STATE; + rsrvrCmd.useLastTrimmerHeaterDC = FALSE; - if ( DG_RESERVOIR_2 == getDGActiveReservoir() ) + if ( ( reservoir1Level >= PRE_TREATMENT_TEST_CONFIG_MIN_RSRVR_VOL_ML ) && ( reservoir1Level < PRE_TREATMENT_TEST_CONFIG_MAX_RSRVR_VOL_ML ) ) { - // Reservoir 1 has the right volume, set it to active reservoir and wait for it to be done - rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_1; - currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_WAIT_FOR_RESERVOIR_SWITCH_STATE; - cmdSetDGActiveReservoir( &rsrvrCmd ); + // Assume a reservoir switch is not needed and transition to the complete state because we are done + currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_COMPLETE_STATE; + + if ( DG_RESERVOIR_2 == getDGActiveReservoir() ) + { + // Reservoir 1 has the right volume, set it to active reservoir and wait for it to be done + rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_1; + currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_WAIT_FOR_RESERVOIR_SWITCH_STATE; + cmdSetDGActiveReservoir( &rsrvrCmd ); + } } - } - else if ( reservoir1Level >= PRE_TREATMENT_TEST_CONFIG_MAX_RSRVR_VOL_ML ) - { - // Reservoir 1 needs a partial drain so set it to be inactive so DG can drain it - if ( DG_RESERVOIR_1 == getDGActiveReservoir() ) + else if ( reservoir1Level >= PRE_TREATMENT_TEST_CONFIG_MAX_RSRVR_VOL_ML ) { - rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_2; - cmdSetDGActiveReservoir( &rsrvrCmd ); - } + // Reservoir 1 needs a partial drain so set it to be inactive so DG can drain it + if ( DG_RESERVOIR_1 == getDGActiveReservoir() ) + { + rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_2; + cmdSetDGActiveReservoir( &rsrvrCmd ); + } - currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; - } - else if ( ( reservoir2Level >= PRE_TREATMENT_TEST_CONFIG_MIN_RSRVR_VOL_ML ) && ( reservoir2Level < PRE_TREATMENT_TEST_CONFIG_MAX_RSRVR_VOL_ML ) ) - { - // Reservoir 2 is in the right level, just make sure it is the active reservoir - // Assume a reservoir switch is not needed and transition to the complete state because we are done - currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_COMPLETE_STATE; - - if ( DG_RESERVOIR_1 == getDGActiveReservoir() ) - { - rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_2; - currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_WAIT_FOR_RESERVOIR_SWITCH_STATE; - cmdSetDGActiveReservoir( &rsrvrCmd ); + currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; } - } - else if ( reservoir2Level >= PRE_TREATMENT_TEST_CONFIG_MAX_RSRVR_VOL_ML ) - { - if ( DG_RESERVOIR_2 == getDGActiveReservoir() ) + else if ( ( reservoir2Level >= PRE_TREATMENT_TEST_CONFIG_MIN_RSRVR_VOL_ML ) && ( reservoir2Level < PRE_TREATMENT_TEST_CONFIG_MAX_RSRVR_VOL_ML ) ) { - rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_1; - cmdSetDGActiveReservoir( &rsrvrCmd ); + // Reservoir 2 is in the right level, just make sure it is the active reservoir + // Assume a reservoir switch is not needed and transition to the complete state because we are done + currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_COMPLETE_STATE; + + if ( DG_RESERVOIR_1 == getDGActiveReservoir() ) + { + rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_2; + currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_WAIT_FOR_RESERVOIR_SWITCH_STATE; + cmdSetDGActiveReservoir( &rsrvrCmd ); + } } + else if ( reservoir2Level >= PRE_TREATMENT_TEST_CONFIG_MAX_RSRVR_VOL_ML ) + { + if ( DG_RESERVOIR_2 == getDGActiveReservoir() ) + { + rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_1; + cmdSetDGActiveReservoir( &rsrvrCmd ); + } - currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; + currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; + } } break; case PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE: - // If DG has not started yet, start DG - if ( DG_MODE_STAN == dgOpMode ) - { - cmdStartDG(); - } - // Ensure any pending reservoir switches are completed before sending drain command if ( TRUE == hasDGCompletedReservoirSwitch() ) {