Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r9eae2f683887bededd2240f51ddfc667d8c1d566 -r788a0b1a638d815df1e83af80cba7be03af2020c --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 9eae2f683887bededd2240f51ddfc667d8c1d566) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 788a0b1a638d815df1e83af80cba7be03af2020c) @@ -206,6 +206,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__ @@ -275,6 +276,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; @@ -798,8 +803,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 @@ -840,6 +845,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; + } } }