Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -rc0e1f5f4c4657c156a87cc8be6c3db38bb14db33 -r05ab87b4de779f06243fa1e87a0402b659a6fa3e --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision c0e1f5f4c4657c156a87cc8be6c3db38bb14db33) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 05ab87b4de779f06243fa1e87a0402b659a6fa3e) @@ -207,6 +207,7 @@ static U32 startTimeToInitiateOuterloopTimeout; ///< Time to wait for temperature uptrend to seen,else initiate the outer loop control static U32 startTimeToCheckUpTrendTemperature; ///< Time to wait for measured dialyzer temperature uptrend check. static U32 startTimeToUndoOffsetFromHeatlossEstimation; ///< Time to remove the offset that is added to heatloss model for Low Qds. +static BOOL previousHeaterState[ NUM_OF_DD_HEATERS ]; ///< Previous State of Heater. //For testing #ifdef __HEATERS_DEBUG__ @@ -276,6 +277,10 @@ d5OuterLoopControlInterval = D5_TARGET_TEMP_ADJUST_HIGH_QD_INTERVAL; tempRiseMonitoringInterval = TEMP_RISE_MONITORING_LOW_QD_INTERVAL; + //Initialize Previous Heater State + previousHeaterState[ D5_HEAT ] = FALSE; + previousHeaterState[ D45_HEAT ] = FALSE; + // Assign counter close to the target period heatersStatus[ D5_HEAT ].controlIntervalCounter = D5_HEAT_CONTROL_INTERVAL_START_COUNT; heatersStatus[ D45_HEAT ].controlIntervalCounter = 0; @@ -797,8 +802,8 @@ /*********************************************************************//** * @brief * The execHeatersControl function executes the heaters state machine. - * @details \b Inputs: heaterStatus - * @details \b Outputs: heaterStatus + * @details \b Inputs: heaterStatus, previousHeaterState + * @details \b Outputs: heaterStatus, previousHeaterState * @details \b Alarms: ALARM_ID_DD_SOFTWARE_FAULT when invalid heater * executive state found. * @return none @@ -839,6 +844,13 @@ // stop the heater stopHeater( heater ); } + + if ( heatersStatus[ heater ].heaterOnState != previousHeaterState[ heater ] ) + { + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_HEATER_STATE_CHANGE, heater, + heatersStatus[ heater ].heaterOnState ); + previousHeaterState[ heater ] = heatersStatus[ heater ].heaterOnState; + } } }