Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -raed14ca8e1c47f2a821ae279103bfe0bbd346bee -r6a0c331c66cfd77b7c6052a10934e1ee3a0e4b97 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision aed14ca8e1c47f2a821ae279103bfe0bbd346bee) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 6a0c331c66cfd77b7c6052a10934e1ee3a0e4b97) @@ -1119,69 +1119,57 @@ { case PRE_TREATMENT_RESERVOIR_MGMT_START_STATE: { + DG_SWITCH_RSRVRS_CMD_T rsrvrCmd; F32 reservoir1Level = getReservoirWeight( DG_RESERVOIR_1 ); F32 reservoir2Level = getReservoirWeight( DG_RESERVOIR_2 ); + rsrvrCmd.useLastTrimmerHeaterDC = FALSE; + if ( ( reservoir1Level >= PRE_TREATMENT_TEST_CONFIG_MIN_RSRVR_VOL_ML ) && ( reservoir1Level < PRE_TREATMENT_FULL_RESERVOIR_VOLUME_ML ) ) { + // 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() ) { - DG_SWITCH_RSRVRS_CMD_T rsrvrCmd; - - rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_1; - rsrvrCmd.useLastTrimmerHeaterDC = FALSE; - - cmdSetDGActiveReservoir( &rsrvrCmd ); - + // 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; } } else if ( reservoir1Level >= PRE_TREATMENT_FULL_RESERVOIR_VOLUME_ML ) { + // Reservoir 1 needs a partial drain so set it to be inactive so DG can drain it if ( DG_RESERVOIR_1 == getDGActiveReservoir() ) { - DG_SWITCH_RSRVRS_CMD_T rsrvrCmd; - - rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_2; - rsrvrCmd.useLastTrimmerHeaterDC = FALSE; - - cmdSetDGActiveReservoir( &rsrvrCmd ); + rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_2; } currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; } else if ( ( reservoir2Level >= PRE_TREATMENT_TEST_CONFIG_MIN_RSRVR_VOL_ML ) && ( reservoir2Level < PRE_TREATMENT_FULL_RESERVOIR_VOLUME_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() ) { - DG_SWITCH_RSRVRS_CMD_T rsrvrCmd; - - rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_2; - rsrvrCmd.useLastTrimmerHeaterDC = FALSE; - - cmdSetDGActiveReservoir( &rsrvrCmd ); - + rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_2; currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_WAIT_FOR_RESERVOIR_SWITCH_STATE; } } else if ( reservoir2Level >= PRE_TREATMENT_FULL_RESERVOIR_VOLUME_ML ) { if ( DG_RESERVOIR_2 == getDGActiveReservoir() ) { - DG_SWITCH_RSRVRS_CMD_T rsrvrCmd; - - rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_1; - rsrvrCmd.useLastTrimmerHeaterDC = FALSE; - - cmdSetDGActiveReservoir( &rsrvrCmd ); + rsrvrCmd.reservoirID = (U32)DG_RESERVOIR_1; } currentReservoirMgmtState = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_STATE; } + + cmdSetDGActiveReservoir( &rsrvrCmd ); } break;