Index: firmware/App/Controllers/BalancingChamber.c =================================================================== diff -u -ree311636fcfb7db1913edef2d9fea22153465a87 -rb4e65bc0026ff22f0bb77e4e066724368ef1cfd5 --- firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision ee311636fcfb7db1913edef2d9fea22153465a87) +++ firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision b4e65bc0026ff22f0bb77e4e066724368ef1cfd5) @@ -110,7 +110,7 @@ //TODO: remove later once level sensor working static U32 bicarbChamberPeriodicFillCounter; // Balancing chamber state change tracker -static BAL_CHAMBER_EXEC_STATE_T prevState; ///< Balancing chamber Previous State tracking variable +static BAL_CHAMBER_EXEC_STATE_T prevBalChamberState; ///< Balancing chamber Previous State tracking variable // ********** private function prototypes ********** @@ -187,7 +187,7 @@ pendingTdDialysateFlowrate = 0.0F; isBalChamberSwitchingPeriodUpdatePending = FALSE; bcSwitchingBasedOnClosedPeriodCounter = 0; - prevState = BAL_CHAMBER_STATE_IDLE; + prevBalChamberState = BAL_CHAMBER_STATE_IDLE; //TODO:remove once level sensor working bicarbChamberPeriodicFillCounter = 0; } @@ -418,26 +418,16 @@ break; } - if ( prevState != balChamberExecState ) + if ( prevBalChamberState != balChamberExecState ) { - if ( BAL_CHAMBER_STATE_IDLE == balChamberExecState ) + if ( ( BAL_CHAMBER_STATE_IDLE == balChamberExecState ) || + ( BAL_CHAMBER_STATE1_FILL_START == balChamberExecState ) || + ( BAL_CHAMBER_STATE2_FILL_START == balChamberExecState ) ) { - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_BC_STATE_CHANGE, prevState, balChamberExecState ); + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_BC_STATE_CHANGE, prevBalChamberState, balChamberExecState ); } - else if ( BAL_CHAMBER_STATE1_FILL_END == prevState && BAL_CHAMBER_STATE2_FILL_START == balChamberExecState ) - { - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_BC_STATE_CHANGE, prevState, balChamberExecState ); - } - else if ( BAL_CHAMBER_STATE2_FILL_END == prevState && BAL_CHAMBER_STATE1_FILL_START == balChamberExecState ) - { - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_BC_STATE_CHANGE, prevState, balChamberExecState ); - } - else if ( BAL_CHAMBER_STATE_IDLE == prevState && BAL_CHAMBER_STATE1_FILL_START == balChamberExecState ) - { - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_BC_STATE_CHANGE, prevState, balChamberExecState ); - } } - prevState = balChamberExecState; + prevBalChamberState = balChamberExecState; //Publish balancing chamber data publishBalChamberData(); @@ -1497,8 +1487,8 @@ *************************************************************************/ void setBalChamberSwitchingOnlyStatus( BOOL OnOff ) { - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_BC_SWITCH_ONLY_MODE_CHANGE, balanceChamberSwitchingOnly,isBalChamberSwitchingActive ); balanceChamberSwitchingOnly = OnOff; + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_BC_SWITCH_ONLY_MODE_CHANGE, balanceChamberSwitchingOnly,isBalChamberSwitchingActive ); } /*********************************************************************//** Index: firmware/App/Controllers/DryBiCart.c =================================================================== diff -u -ree311636fcfb7db1913edef2d9fea22153465a87 -rb4e65bc0026ff22f0bb77e4e066724368ef1cfd5 --- firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision ee311636fcfb7db1913edef2d9fea22153465a87) +++ firmware/App/Controllers/DryBiCart.c (.../DryBiCart.c) (revision b4e65bc0026ff22f0bb77e4e066724368ef1cfd5) @@ -220,7 +220,7 @@ static PI_CONTROLLER_SIGNALS_DATA bicarbControlSignals; ///< Bicarb closed loop control signal data static PI_CONTROLLER_SIGNALS_DATA acidControlSignals; ///< Acid closed loop control signal data -static DRY_BICART_OPERATION_T prevState; ///< Last dry bicart operation prior to current state. +static DRY_BICART_OPERATION_T prevDryBicartState; ///< Last dry bicart operation prior to current state. // ********** private function prototypes ********** @@ -402,7 +402,7 @@ dryBiCartDrainCondStableCount = 0; dryBiCartDrainTimePeriod = 0; dryBiCartPersistanceStartTime = 0; - prevState = DRY_BICART_IDLE; + prevDryBicartState = DRY_BICART_IDLE; initializePIController( PI_CONTROLLER_ID_BICARB_VOL, 0.0F,\ getBicarbKpGainCoefficient(), getBicarbKiGainCoefficient(),\ @@ -519,10 +519,10 @@ break; } - if ( prevState != dryBicartStartRequest ) + if ( prevDryBicartState != dryBicartStartRequest ) { - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_DRY_BICART_STATE_CHANGE, prevState, dryBicartStartRequest ); - prevState = dryBicartStartRequest; + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_DRY_BICART_STATE_CHANGE, prevDryBicartState, dryBicartStartRequest ); + prevDryBicartState = dryBicartStartRequest; } // Publish dry bicart data 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; Index: firmware/App/Controllers/Ultrafiltration.c =================================================================== diff -u -ree311636fcfb7db1913edef2d9fea22153465a87 -rb4e65bc0026ff22f0bb77e4e066724368ef1cfd5 --- firmware/App/Controllers/Ultrafiltration.c (.../Ultrafiltration.c) (revision ee311636fcfb7db1913edef2d9fea22153465a87) +++ firmware/App/Controllers/Ultrafiltration.c (.../Ultrafiltration.c) (revision b4e65bc0026ff22f0bb77e4e066724368ef1cfd5) @@ -204,9 +204,9 @@ *************************************************************************/ static void updateUFRequest( void ) { - F32 qd = getTDDialysateFlowrate(); - BOOL bypass = getTDDialyzerBypass(); - BOOL prevState = isUltrafiltrationRequested; + F32 qd = getTDDialysateFlowrate(); + BOOL bypass = getTDDialyzerBypass(); + BOOL prevUFState = isUltrafiltrationRequested; // update latest UF run/pause request // if qd is zero or dialyzer is bypassed, UF pump should be turn off @@ -220,9 +220,9 @@ } // event update on state switch - if( prevState != isUltrafiltrationRequested ) + if( prevUFState != isUltrafiltrationRequested ) { - SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_UF_STATE_CHANGE, prevState, isUltrafiltrationRequested ); + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_UF_PUMP_ON_OFF, prevUFState, isUltrafiltrationRequested ); } }