Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r526e890e4e35fac0a622af538bf611ea15a30609 -r33a76369e208bb906634f096f6ba8050f0500d50 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 526e890e4e35fac0a622af538bf611ea15a30609) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 33a76369e208bb906634f096f6ba8050f0500d50) @@ -141,6 +141,7 @@ static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtFillCompleteState( void ); static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtRequestReservoirSwitchState( void ); static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtWaitReservoirSwitchState( void ); +static void handlePreTreatmentReservoirMgmtCompleteState( void ); static U32 getPreTreatmentFillVolume( DG_RESERVOIR_ID_T inactiveRes ); static void setPreTreatmentHeatingParams( F32 targetTempC, U32 targetVolML, F32 targetFillFlowLPM, U32 dialysateFlowMLPM ); @@ -1205,6 +1206,8 @@ break; case PRE_TREATMENT_RESERVOIR_MGMT_COMPLETE_STATE: + // retry the DG park concentrate pump request command if previous request was failed. + handlePreTreatmentReservoirMgmtCompleteState(); break; default: @@ -1527,6 +1530,9 @@ // Set the heating parameters setPreTreatmentHeatingParams( targetTempC, FILL_RESERVOIR_TO_VOLUME_ML, DEFAULT_TARGET_FILL_FLOW_RATE_LPM, dialysateFlowMLPM ); + // after reservoir fill at end of the pre-treatment, do park the concentrate pumps to maintain conductivity + // when treatment begins + cmdDGParkConcentratePumps(); state = PRE_TREATMENT_RESERVOIR_MGMT_COMPLETE_STATE; } else @@ -1541,6 +1547,30 @@ /*********************************************************************//** * @brief + * The handlePreTreatmentReservoirMgmtCompleteState function checks + * Park DG concentrate pump command request sent was successfully handled or not. + * on failure, retry the DG Concentrate pumps park command request. + * @details Inputs: DG park concentrate pump request command response + * @details Outputs: retry park command on failure + * @return none + *************************************************************************/ +static void handlePreTreatmentReservoirMgmtCompleteState( void ) +{ + DG_CMD_RESPONSE_T dgCmdResp; + + // Check DG response to park concentrate pumps command + if ( TRUE == getDGCommandResponse( DG_CMD_PARK_CONCENTRATE_PUMPS, &dgCmdResp ) ) + { + if ( DG_CMD_REQUEST_REJECT_REASON_NONE != dgCmdResp.rejectCode ) + { + // retry park concentrate pumps command request to DG + cmdDGParkConcentratePumps(); + } + } +} + +/*********************************************************************//** + * @brief * The getPreTreatmentFillVolume function determines which volume to fill * the inactive reservoir. * @details Inputs: reservoirStatus[]