Index: firmware/App/Controllers/DGInterface.c =================================================================== diff -u -r19f13e67288117e7f81c1245a75cc6b5f8aaf899 -r8036381b5c41ab87146c929eeeb9ba073efd4541 --- firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 19f13e67288117e7f81c1245a75cc6b5f8aaf899) +++ firmware/App/Controllers/DGInterface.c (.../DGInterface.c) (revision 8036381b5c41ab87146c929eeeb9ba073efd4541) @@ -50,7 +50,9 @@ #define DIALYSATE_TEMP_LOW_SAFETY_LIMIT_C 42.0F ///< Dialysate low safety temperature limit in C. #define DIALYSATE_TEMP_LOW_SAFETY_TIMEOUT_MS ( 10 * MS_PER_SECOND ) ///< Dialysate temperature low safety timeout in milliseconds. #define DG_DATA_FRESHNESS_TIMEOUT_MS ( 3 * MS_PER_SECOND ) ///< DG data freshness timeout (in ms). +#define DG_TRIMMER_HTR_CHECK_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL + 2 ) ///< DG trimmer heater check interval in general task execution time counts. + // ********** private data ********** // DG status @@ -66,6 +68,8 @@ static F32 dgHeatDisinfectTemp; ///< Heat disinfect temperature reported by the DG. static F32 dgTrimmerTempSet; ///< Trimmer heater target temperature commanded. +static U32 dgTrimmerTempCheckTimerCtr; ///< Trimmer heater temp check interval timer counter. + /// Measured weight from load cells. static OVERRIDE_F32_T loadCellWeightInGrams[ NUM_OF_LOAD_CELLS ]; @@ -124,7 +128,8 @@ dgStarted = FALSE; dgTrimmerHeaterOn = FALSE; - dgTrimmerTempSet = 0.0F; + dgTrimmerTempSet = 0.0F; + dgTrimmerTempCheckTimerCtr = 0; dgActiveReservoirSet = DG_RESERVOIR_2; dgActiveReservoir = DG_RESERVOIR_2; dgReservoirFillVolumeTargetSet = 0; @@ -244,7 +249,11 @@ checkDGRestart(); // Check the status of the trimmer heater - checkDGTrimmerHeaterStatus(); + if ( ++dgTrimmerTempCheckTimerCtr >= DG_TRIMMER_HTR_CHECK_INTERVAL ) + { + dgTrimmerTempCheckTimerCtr = 0; + checkDGTrimmerHeaterStatus(); + } } } @@ -474,6 +483,19 @@ /*********************************************************************//** * @brief + * The getTrimmerHeaterCommandedOn function gets the latest on/off commanded + * status of the trimmer heater. + * @details Inputs: dgTrimmerHeaterOn + * @details Outputs: none + * @return dgTrimmerHeaterOn + *************************************************************************/ +BOOL getTrimmerHeaterCommandedOn( void ) +{ + return dgTrimmerHeaterOn; +} + +/*********************************************************************//** + * @brief * The getDGDisinfectsStates function returns the DG disinfects readings. * @details Inputs: none * @details Outputs: none Index: firmware/App/Controllers/DGInterface.h =================================================================== diff -u -r19f13e67288117e7f81c1245a75cc6b5f8aaf899 -r8036381b5c41ab87146c929eeeb9ba073efd4541 --- firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision 19f13e67288117e7f81c1245a75cc6b5f8aaf899) +++ firmware/App/Controllers/DGInterface.h (.../DGInterface.h) (revision 8036381b5c41ab87146c929eeeb9ba073efd4541) @@ -119,6 +119,7 @@ F32 getReservoirBackupWeightLargeFilter( DG_RESERVOIR_ID_T resID ); F32 getDialysateTemperature( void ); F32 getHeatDisinfectTemperatureSensorValue( void ); +BOOL getTrimmerHeaterCommandedOn( void ); DG_DISINFECT_UI_STATES_T getDGDisinfectsStates( void ); DG_MIXING_RATIOS_T getDGMixingRatios( void ); void getHDVersionDGServiceAndUsageData( DG_SERVICE_AND_USAGE_DATA_T* data ); Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r9d924ec76ce770eb2a94088bfe37bfb0e30981a8 -r8036381b5c41ab87146c929eeeb9ba073efd4541 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 9d924ec76ce770eb2a94088bfe37bfb0e30981a8) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 8036381b5c41ab87146c929eeeb9ba073efd4541) @@ -937,13 +937,15 @@ if ( TRUE == doesAlarmStatusIndicateStop() ) { signalDialInPumpHardStop(); - cmdStopDGTrimmerHeater(); + if ( TRUE == getTrimmerHeaterCommandedOn() ) + { + cmdStopDGTrimmerHeater(); + } } else if ( TRUE == alarmActionResumeReceived ) { alarmActionResumeReceived = FALSE; - //setDialInPumpTargetFlowRate( DIP_PATIENT_CONNECTION_FLOW_RATE_ML_MIN, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); - setDialInPumpTargetFlowRate( 250, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); // TODO remove this line once the new flow control is implemented + setDialInPumpTargetFlowRate( DIP_PATIENT_CONNECTION_FLOW_RATE_ML_MIN, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); cmdStartDGTrimmerHeater(); }