Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r80542b5bd4c20d5898290dfcaf30a4cdb151f3e7 -r62082a4ebc015764b20b1a9b4304c357ec6fea7f --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 80542b5bd4c20d5898290dfcaf30a4cdb151f3e7) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 62082a4ebc015764b20b1a9b4304c357ec6fea7f) @@ -39,20 +39,22 @@ // ********** private definitions ********** /// Interval (ms/task time) at which the pre-treatment state data is published on the CAN bus. -#define PRE_TREATMENT_DATA_PUB_INTERVAL ( 250 / TASK_GENERAL_INTERVAL ) +#define PRE_TREATMENT_DATA_PUB_INTERVAL ( 250 / TASK_GENERAL_INTERVAL ) /// Wait time for ui to transition on completion of a sub-mode (ms/task time). -#define SUBMODE_COMPLETE_UI_TRANSITION_TIME_COUNT ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) -#define DIP_PATIENT_CONNECTION_FLOW_RATE_ML_MIN 250 ///< Patient connection sub-mode dialysate inlet pump flow rate in mL/min. -#define PRE_TREATMENT_HEATING_DIA_FLOW_ML_PER_MIN 600 ///< Pre treatment heating parameters dialysate flow in mL/min. +#define SUBMODE_COMPLETE_UI_TRANSITION_TIME_COUNT ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) +#define DIP_PATIENT_CONNECTION_FLOW_RATE_ML_MIN 250 ///< Patient connection sub-mode dialysate inlet pump flow rate in mL/min. +#define PRE_TREATMENT_HEATING_DIA_FLOW_ML_PER_MIN 600 ///< Pre treatment heating parameters dialysate flow in mL/min. +#define PRE_TREATMENT_FLUSH_FILL_TARGET_TEMP_C 45.0F ///< Pre treatment flush fill target temperature in C. +#define PRE_TREATMENT_NORMAL_FILL_TARGET_TEMP_C ( 37.0F + 2.0F ) ///< Pre treatment normal fill target temperature in C. -#define PRE_TREATMENT_MIN_FILL_RESERVOIR_VOLUME_ML 125 ///< Fill reservoir to this volume minimum to prep volume during development. -#define PRE_TREATMENT_FLUSH_RESERVOIR_VOLUME_ML 500 ///< Fill reservoir to this volume (in mL) to flush filter and lines. -#define PRE_TREATMENT_FILL_RESERVOIR_ONE_VOLUME_ML 1300 ///< Fill reservoir one to this volume (in mL) during pre-treatment mode. -#define PRE_TREATMENT_FILL_RESERVOIR_TWO_VOLUME_ML 750 ///< Fill reservoir two to this volume (in mL) during pre-treatment mode. -#define PRE_TREATMENT_FULL_RESERVOIR_VOLUME_ML 1500 ///< Fill reservoir to this volume minimum to prep volume during development. +#define PRE_TREATMENT_MIN_FILL_RESERVOIR_VOLUME_ML 125 ///< Fill reservoir to this volume minimum to prep volume during development. +#define PRE_TREATMENT_FLUSH_RESERVOIR_VOLUME_ML 500 ///< Fill reservoir to this volume (in mL) to flush filter and lines. +#define PRE_TREATMENT_FILL_RESERVOIR_ONE_VOLUME_ML 1300 ///< Fill reservoir one to this volume (in mL) during pre-treatment mode. +#define PRE_TREATMENT_FILL_RESERVOIR_TWO_VOLUME_ML 750 ///< Fill reservoir two to this volume (in mL) during pre-treatment mode. +#define PRE_TREATMENT_FULL_RESERVOIR_VOLUME_ML 1500 ///< Fill reservoir to this volume minimum to prep volume during development. -#define PRE_TREATMENT_FLUSH_COUNT 2 ///< Number of flush cycles for each reservoir. +#define PRE_TREATMENT_FLUSH_COUNT 2 ///< Number of flush cycles for each reservoir. typedef struct { @@ -130,7 +132,7 @@ static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtRequestReservoirSwitchState( void ); static PRE_TREATMENT_RESERVOIR_MGMT_STATE_T handlePreTreatmentReservoirMgmtWaitReservoirSwitchState( void ); static U32 getPreTreatmentFillVolume( DG_RESERVOIR_ID_T inactiveRes ); -static void setPreTreatmentHeatingParams( U32 targetVolML, F32 targetFillFlowLPM, U32 dialysateFlowMLPM ); +static void setPreTreatmentHeatingParams( F32 targetTempC, U32 targetVolML, F32 targetFillFlowLPM, U32 dialysateFlowMLPM ); /*********************************************************************//** * @brief @@ -194,6 +196,10 @@ initPreTreatmentMode(); + // Set the heating parameters to start the heaters + setPreTreatmentHeatingParams( PRE_TREATMENT_FLUSH_FILL_TARGET_TEMP_C, PRE_TREATMENT_FLUSH_RESERVOIR_VOLUME_ML, + DEFAULT_TARGET_FILL_FLOW_RATE_LPM, PRE_TREATMENT_HEATING_DIA_FLOW_ML_PER_MIN ); + cmdStopDGTrimmerHeater(); // Pumps should be off @@ -1128,14 +1134,14 @@ ( TRUE == reservoirStatus[ inactiveReservoir ].startFlushFill ) ) { cmdStartDGFill( volume, DEFAULT_TARGET_FILL_FLOW_RATE_LPM ); - setPreTreatmentHeatingParams( volume, DEFAULT_TARGET_FILL_FLOW_RATE_LPM, dialysateFlowMLPM ); + setPreTreatmentHeatingParams( PRE_TREATMENT_FLUSH_FILL_TARGET_TEMP_C, volume, DEFAULT_TARGET_FILL_FLOW_RATE_LPM, dialysateFlowMLPM ); 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 ); - setPreTreatmentHeatingParams( volume, DEFAULT_TARGET_FILL_FLOW_RATE_LPM, dialysateFlowMLPM ); + setPreTreatmentHeatingParams( PRE_TREATMENT_NORMAL_FILL_TARGET_TEMP_C, volume, DEFAULT_TARGET_FILL_FLOW_RATE_LPM, dialysateFlowMLPM ); state = PRE_TREATMENT_RESERVOIR_MGMT_FILL_CMD_RESP_STATE; } } @@ -1373,22 +1379,23 @@ * parameters to be sent to DG. * @details Inputs: none * @details Outputs: none + * @param targetTempC target temperature in C * @param targetVolML target fill volume in milliliters * @param targetFillFlowLPM target fill flow rate in L/min * @param dialysateFlowMLPM dialysate flow in mL/min * @return none *************************************************************************/ -static void setPreTreatmentHeatingParams( U32 targetVolML, F32 targetFillFlowLPM, U32 dialysateFlowMLPM ) +static void setPreTreatmentHeatingParams( F32 targetTempC, U32 targetVolML, F32 targetFillFlowLPM, U32 dialysateFlowMLPM ) { DG_CMD_DIALYSATE_HEATING_PARAMS_T params; F32 fillTimeMS = ( (F32)targetVolML / ( targetFillFlowLPM * ML_PER_LITER ) ) * SEC_PER_MIN * MS_PER_SECOND; - params.trimmerTargetTemperature = getTreatmentParameterF32( TREATMENT_PARAM_DIALYSATE_TEMPERATURE ); + params.trimmerTargetTemperature = targetTempC; params.timeReservoirWait2SwitchMS = 0; params.timeReservoirFillMS = fillTimeMS; params.timeReservoirCycleMS = (U32)fillTimeMS; params.dialysateFlowLPM = ( (F32)dialysateFlowMLPM ) / ML_PER_LITER; - + params.usePriTargetTempEquation = FALSE; cmdSetDGDialysateHeatingParams( params ); }