Index: firmware/App/Controllers/DGInterface.c =================================================================== diff -u -r6d500da57b7590f105f7b39261af4321998d2175 -rf2cecb1dae0cfccc768b321f1d0cdec9a73c5824 --- firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 6d500da57b7590f105f7b39261af4321998d2175) +++ firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision f2cecb1dae0cfccc768b321f1d0cdec9a73c5824) @@ -256,7 +256,7 @@ { if ( DG_GEN_IDLE_MODE_STATE_FLUSH_WATER == dgSubMode ) { - cmdStartDGDrain( DRAIN_RESERVOIR_TO_VOLUME_ML, TRUE ); + cmdStartDGDrain( DRAIN_RESERVOIR_TO_VOLUME_ML, TRUE, FALSE ); } } else if ( DG_MODE_DRAI == dgOpMode ) @@ -928,13 +928,14 @@ * @param tareLoadCell flag to tell DG tare load cell or not * @return none *************************************************************************/ -void cmdStartDGDrain( U32 drainToVolMl, BOOL tareLoadCell ) +void cmdStartDGDrain( U32 drainToVolMl, BOOL tareLoadCell, BOOL rinse ) { DRAIN_RESERVOIR_CMD_PAYLOAD_T payload; dgCmdResp[ DG_CMD_START_DRAIN ].commandID = DG_CMD_NONE; payload.drainToVolumeML = drainToVolMl; - payload.tareLoadCells = tareLoadCell; + payload.tareLoadCells = tareLoadCell; + payload.rinseConcentrateLines = rinse; dgReservoirDrainVolumeTargetSet = drainToVolMl; sendDGDrainCommand( &payload ); Index: firmware/App/Controllers/DGInterface.h =================================================================== diff -u -r3f2b9de757500da37e0ed8881e4e906d94f3076c -rf2cecb1dae0cfccc768b321f1d0cdec9a73c5824 --- firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision 3f2b9de757500da37e0ed8881e4e906d94f3076c) +++ firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision f2cecb1dae0cfccc768b321f1d0cdec9a73c5824) @@ -113,6 +113,7 @@ { U32 drainToVolumeML; ///< Drain to target volume in ml BOOL tareLoadCells; ///< Flag indicates to tare load cells or not + BOOL rinseConcentrateLines; ///< Flag indicates to rinse concentrate lines or not } DRAIN_RESERVOIR_CMD_PAYLOAD_T; /// DG command response data record structure. @@ -172,8 +173,8 @@ void cmdSetDGActiveReservoir( DG_RESERVOIR_ID_T resID ); void cmdChangeDGValveSetting( DG_VALVE_SETTING_ID_T valveSettingID ); void cmdStartDGFill( U32 fillToVolMl ); -void cmdStopDGFill( void ); -void cmdStartDGDrain( U32 drainToVolMl, BOOL tareLoadCell ); +void cmdStopDGFill( void ); +void cmdStartDGDrain( U32 drainToVolMl, BOOL tareLoadCell, BOOL rinse ); void cmdStartDGTrimmerHeater( void ); void cmdStopDGTrimmerHeater( void ); void cmdDGSampleWater( SAMPLE_WATER_CMD_T cmd ); Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -rf5e2cabefb2f3d4757c150e9de136d5249b1e019 -rf2cecb1dae0cfccc768b321f1d0cdec9a73c5824 --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision f5e2cabefb2f3d4757c150e9de136d5249b1e019) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision f2cecb1dae0cfccc768b321f1d0cdec9a73c5824) @@ -63,7 +63,8 @@ static BOOL disposableRemovalConfirmed = FALSE; ///< Flag indicates user confirms disposable removal. static BOOL isDrainStarted = FALSE; ///< Flag indicates a drain operation has been started. -static BOOL isDrainCompleted = FALSE; +static BOOL isDrainCompleted = FALSE; ///< Flag indicates drain has completed. +static BOOL rinseConcentrateLines = FALSE; ///< FLag indicates to rinse concentrate lines. static HD_POST_TREATMENT_STATE_T currentPostTreatmentState; ///< Current state of post-treatment mode state machine. static DRAIN_STATE_T currentDrainReservoirState; ///< Current drain reservoir state. @@ -100,6 +101,7 @@ disposableRemovalConfirmed = FALSE; isDrainStarted = FALSE; isDrainCompleted = FALSE; + rinseConcentrateLines = FALSE; currentPostTreatmentState = HD_POST_TREATMENT_PATIENT_DISCONNECTION_STATE; currentDrainReservoirState = DRAIN_FIRST_RESERVOIR_START_STATE; postTreatmentPublishTimerCounter = 0; @@ -510,7 +512,7 @@ } else { - cmdStartDGDrain( DRAIN_RESERVOIR_TO_VOLUME_ML, TRUE ); + cmdStartDGDrain( DRAIN_RESERVOIR_TO_VOLUME_ML, TRUE, rinseConcentrateLines ); } } @@ -536,7 +538,8 @@ if ( TRUE == hasDGCompletedReservoirSwitch() ) { state = DRAIN_FIRST_RESERVOIR_STATE; - cmdStartDGDrain( DRAIN_RESERVOIR_TO_VOLUME_ML, TRUE ); + rinseConcentrateLines = FALSE; + cmdStartDGDrain( DRAIN_RESERVOIR_TO_VOLUME_ML, TRUE, rinseConcentrateLines ); } } @@ -595,7 +598,8 @@ if ( TRUE == hasDGCompletedReservoirSwitch() ) { state = DRAIN_SECOND_RESERVOIR_STATE; - cmdStartDGDrain( DRAIN_RESERVOIR_TO_VOLUME_ML, TRUE ); + rinseConcentrateLines = TRUE; + cmdStartDGDrain( DRAIN_RESERVOIR_TO_VOLUME_ML, TRUE, rinseConcentrateLines ); } return state; @@ -618,7 +622,7 @@ isDrainStarted = TRUE; } - // Drain has started and DG goes to re-circ mode flush lines state means drain completed + // Drain has started and DG goes to generation idle mode flush lines state means drain completed if ( ( TRUE == isDrainStarted ) && ( DG_GEN_IDLE_MODE_STATE_FLUSH_LINES == getDGSubMode() ) ) { isDrainCompleted = TRUE; @@ -630,6 +634,7 @@ { isDrainStarted = FALSE; isDrainCompleted = FALSE; + rinseConcentrateLines = FALSE; state = DRAIN_COMPLETE_STATE; } } Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r6d500da57b7590f105f7b39261af4321998d2175 -rf2cecb1dae0cfccc768b321f1d0cdec9a73c5824 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 6d500da57b7590f105f7b39261af4321998d2175) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision f2cecb1dae0cfccc768b321f1d0cdec9a73c5824) @@ -868,7 +868,7 @@ if ( ( DG_MODE_GENE == dgOpMode ) && ( DG_GEN_IDLE_MODE_STATE_FLUSH_WATER == dgSubMode ) ) { state = PRE_TREATMENT_RESERVOIR_MGMT_DRAIN_CMD_RESP_STATE; - cmdStartDGDrain( DRAIN_RESERVOIR_TO_VOLUME_ML, TRUE ); + cmdStartDGDrain( DRAIN_RESERVOIR_TO_VOLUME_ML, TRUE, FALSE ); } }