Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -ree311636fcfb7db1913edef2d9fea22153465a87 -rb4e65bc0026ff22f0bb77e4e066724368ef1cfd5 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision ee311636fcfb7db1913edef2d9fea22153465a87) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision b4e65bc0026ff22f0bb77e4e066724368ef1cfd5) @@ -205,8 +205,11 @@ static F32 prevDialyzerTemperature; ///< Previous dialyzer temp collected to check temperature rise 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 U32 startTimeToUndoOffsetFromHeatlossEstimation; +static BOOL previousHeaterState[ NUM_OF_DD_HEATERS ]; +///< Time to remove the offset that is added to heatloss model for Low Qds. + //For testing #ifdef __HEATERS_DEBUG__ static F32 pIControlSignal[ NUM_OF_CONTROLLER_SIGNAL ]; @@ -275,6 +278,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; @@ -788,7 +795,6 @@ // update duty cycle setHeaterControl( heater ); - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_HEATER_STATE_CHANGE, heater, 0); } else { @@ -841,6 +847,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; + } } } @@ -920,7 +933,6 @@ // proceed to setup state state = HEATER_EXEC_STATE_RAMP_TO_TARGET; - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_HEATER_STATE_CHANGE, heater, 1 ); } return state;