Index: firmware/App/Controllers/BalancingChamber.c =================================================================== diff -u -ra631e128cd6be44aa232e23b58a229bfb8fe9043 -r788a0b1a638d815df1e83af80cba7be03af2020c --- firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision a631e128cd6be44aa232e23b58a229bfb8fe9043) +++ firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision 788a0b1a638d815df1e83af80cba7be03af2020c) @@ -23,10 +23,11 @@ #include "FpgaDD.h" #include "Heaters.h" #include "Level.h" +#include "MessageSupport.h" +#include "Messaging.h" #include "MixingControl.h" #include "ModeGenDialysate.h" #include "ModeStandby.h" -#include "Messaging.h" #include "OperationModes.h" #include "Pressure.h" #include "TaskGeneral.h" @@ -109,6 +110,8 @@ //TODO: remove later once level sensor working static U32 bicarbChamberPeriodicFillCounter; +// Balancing chamber state change tracker +static BAL_CHAMBER_EXEC_STATE_T prevBalChamberState; ///< Balancing chamber Previous State tracking variable // ********** private function prototypes ********** @@ -185,6 +188,7 @@ pendingTdDialysateFlowrate = 0.0F; isBalChamberSwitchingPeriodUpdatePending = FALSE; bcSwitchingBasedOnClosedPeriodCounter = 0; + prevBalChamberState = BAL_CHAMBER_STATE_IDLE; //TODO:remove once level sensor working bicarbChamberPeriodicFillCounter = 0; } @@ -357,8 +361,8 @@ /*********************************************************************//** * @brief * The execBalancingChamberControl function executes the balancing chamber state machine. - * @details \b Inputs: balChamberExecState - * @details \b Outputs: balChamberExecState + * @details \b Inputs: balChamberExecState, prevBalChamberState + * @details \b Outputs: balChamberExecState prevBalChamberState * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT when wrong balancing chamber state invoked. * @return current state. *************************************************************************/ @@ -443,6 +447,17 @@ break; } + if ( prevBalChamberState != 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, prevBalChamberState, balChamberExecState ); + } + } + prevBalChamberState = balChamberExecState; + //Publish balancing chamber data publishBalChamberData(); @@ -1494,14 +1509,15 @@ * @brief * The setBalChamberSwitchingOnlyStatus function sets the balancing chamber * switching only On/Off status. - * @details \b Inputs: balanceChamberSwitchingOnly + * @details \b Inputs: balanceChamberSwitchingOnly, isBalChamberSwitchingActive * @details \b Outputs: none * @param OnOff to set the BC switch status * @return none *************************************************************************/ void setBalChamberSwitchingOnlyStatus( BOOL OnOff ) { balanceChamberSwitchingOnly = OnOff; + SEND_EVENT_WITH_2_U32_DATA( DD_EVENT_BC_SWITCH_ONLY_MODE_CHANGE, balanceChamberSwitchingOnly, isBalChamberSwitchingActive ); } /*********************************************************************//**