Index: firmware/App/Controllers/BalancingChamber.c =================================================================== diff -u -re79eb4fbdacbc729b0f611f7d27b03ef004dc3da -re4713cc2340511b387f2c756f68dd9a06b4f9dea --- firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision e79eb4fbdacbc729b0f611f7d27b03ef004dc3da) +++ firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision e4713cc2340511b387f2c756f68dd9a06b4f9dea) @@ -51,6 +51,13 @@ F32 flowrate; ///< Dialysate flowrate in ml/min } BC_SWITCHING_ONLY_START_CMD_PAYLOAD_T; +/// Enumerations for balancing chamber switching +typedef enum bc_switching_action +{ + BC_SWITCHING_OFF = 0, ///< Deactivate Balancing Chamber Switching + BC_SWITCHING_ON = 1, ///< Activate Balancing Chamber Switching +} BC_SWITCHING_ACTION; + // ********** private data ********** static BAL_CHAMBER_EXEC_STATE_T balChamberExecState; ///< Current balancing chamber executive state. @@ -73,9 +80,9 @@ static F32 lastTdDialysateFlowrate; ///< Previous TD dialysate flow rate static F32 freshDialPressure; ///< Fresh side dialysate pressure static F32 spentDialPressure; ///< Spent side dialysate pressure -static BOOL isBalChamberSwitchingActive; ///< Flag indicating balancing chamber switching is active or not. -static BOOL isBalChamberSwitchingRequest; ///< Flag indicating if there is a request to either activate or deactivate the balancing chamber switching -static BOOL balChamberSwitchingRequestAction; ///< Flag indicating balancing chamber request action. If TRUE then activate the switching, else stay in IDLE state. +static BC_SWITCHING_ACTION isBalChamberSwitchingActive; ///< Flag indicating balancing chamber switching is active or not. +static BOOL isBalChamberSwitchingRequested; ///< Flag indicating if there is a request to either activate or deactivate the balancing chamber switching +static BC_SWITCHING_ACTION balChamberSwitchingRequestAction; ///< Flag indicating balancing chamber request action. If TRUE then activate the switching, else stay in IDLE state. //TODO: remove later once level sensor working static U32 bicarbChamberPeriodicFillCounter; ///< Counter for checking the timeout for drybicart chamber fill request. @@ -103,7 +110,7 @@ *************************************************************************/ void initBalanceChamber( void ) { - balChamberExecState = BAL_CHAMBER_STATE_START; + balChamberExecState = BAL_CHAMBER_STATE_IDLE; balChamberSWState = BAL_CHAMBER_SW_STATE1; balChamberSwitchingFreq.data = 0.0F; balChamberSwitchingFreq.ovData = 0.0F; @@ -135,9 +142,13 @@ isPressureDroppedDuringFill = FALSE; freshDialPressure = 0.0F; spentDialPressure = 0.0F; + isBalChamberSwitchingActive = BC_SWITCHING_OFF; + isBalChamberSwitchingRequested = FALSE; + balChamberSwitchingRequestAction = BC_SWITCHING_OFF; //TODO:remove once level sensor working - bicarbChamberPeriodicFillCounter = 0; + bicarbChamberPeriodicFillCounter = FALSE; + } /*********************************************************************//** @@ -224,8 +235,8 @@ switch ( balChamberExecState ) { - case BAL_CHAMBER_STATE_START: - balChamberExecState = BAL_CHAMBER_STATE1_FILL_START; + case BAL_CHAMBER_STATE_IDLE: + balChamberExecState = handleBalChamberStateIdle(); break; case BAL_CHAMBER_STATE1_FILL_START: @@ -260,13 +271,9 @@ balChamberExecState = handleBalChamberState2FillEnd(); break; - case BAL_CHAMBER_STATE_IDLE: - balChamberExecState = handleBalChamberStateIdle(); - break; - default: SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_BAL_CHAMBER_INVALID_EXEC_STATE, balChamberExecState ) - balChamberExecState = BAL_CHAMBER_STATE_START; + balChamberExecState = BAL_CHAMBER_STATE_IDLE; break; } @@ -282,34 +289,34 @@ * The balancing chamber state moves from start to end and keeps switching between * state1 and state2 until deactivated. * @details \b Inputs: none - * @details \b Outputs: isBalChamberSwitchingRequest, balChamberSwitchingRequestAction + * @details \b Outputs: isBalChamberSwitchingRequested, balChamberSwitchingRequestAction * @return none. *************************************************************************/ void activateBalChamberSwitching( void ) { // Set flag to indicate that a request was made for balancing chamber - isBalChamberSwitchingRequest = TRUE; + isBalChamberSwitchingRequested = TRUE; // Set flag to indicate that the request made was to activate the balancing chamber switching - balChamberSwitchingRequestAction = TRUE; + balChamberSwitchingRequestAction = BC_SWITCHING_ON; } /*********************************************************************//** * @brief * The deactivateBalChamberSwitching function deactivates the balancing chamber switching. * The balancing chamber state remains in the idle state until activated again. * @details \b Inputs: - * @details \b Outputs: isBalChamberSwitchingRequest, balChamberSwitchingRequestAction + * @details \b Outputs: isBalChamberSwitchingRequested, balChamberSwitchingRequestAction * @return none. *************************************************************************/ void deactivateBalChamberSwitching( void ) { // Set flag to indicate that a request was made for balancing chamber - isBalChamberSwitchingRequest = TRUE; + isBalChamberSwitchingRequested = TRUE; // Set flag to indicate that the request made was to deactivate the balancing chamber switching // and stay in the idle state - balChamberSwitchingRequestAction = FALSE; + balChamberSwitchingRequestAction = BC_SWITCHING_OFF; } /*********************************************************************//** @@ -941,7 +948,7 @@ * @brief * The handleBalChamberStateIdle function check for balancing chamber switching * activation or deactivation request and then change state - * @details \b Inputs: isBalChamberSwitchingRequest, balChamberSwitchingRequestAction + * @details \b Inputs: isBalChamberSwitchingRequested, balChamberSwitchingRequestAction * @details \b Outputs: isBalChamberSwitchingActive * @return next balancing chamber state. *************************************************************************/ @@ -955,7 +962,7 @@ * @brief * The processBalChamberSwitchingRequest function processes requests for * activating or deactivating balancing chamber switching and then change state - * @details \b Inputs: isBalChamberSwitchingRequest, balChamberSwitchingRequestAction + * @details \b Inputs: isBalChamberSwitchingRequested, balChamberSwitchingRequestAction * @details \b Outputs: isBalChamberSwitchingActive * @return next balancing chamber state. *************************************************************************/ @@ -964,25 +971,25 @@ BAL_CHAMBER_EXEC_STATE_T state = balChamberExecState; // Check if there was a request made to the balancing chamber - if ( TRUE == isBalChamberSwitchingRequest ) + if ( TRUE == isBalChamberSwitchingRequested ) { // Clear the request flag - isBalChamberSwitchingRequest = FALSE; + isBalChamberSwitchingRequested = FALSE; // Check if the request made was to activate the switching and it is currently inactive - if ( ( TRUE == balChamberSwitchingRequestAction ) && ( FALSE == isBalChamberSwitchingActive ) ) + if ( ( BC_SWITCHING_ON == balChamberSwitchingRequestAction ) && ( BC_SWITCHING_OFF == isBalChamberSwitchingActive ) ) { // Set flag to indicate that balancing chamber switching is active - isBalChamberSwitchingActive = TRUE; + isBalChamberSwitchingActive = BC_SWITCHING_ON; - // Move to the start state - state = BAL_CHAMBER_STATE_START; + // Move to the start state1 + state = BAL_CHAMBER_STATE1_FILL_START; } // Check if the request made was to deactivate the switching and it is currently active - else if ( ( FALSE == balChamberSwitchingRequestAction ) && ( TRUE == isBalChamberSwitchingActive ) ) + else if ( ( BC_SWITCHING_OFF == balChamberSwitchingRequestAction ) && ( BC_SWITCHING_ON == isBalChamberSwitchingActive ) ) { // Set flag to indicate that balancing chamber switching is inactive - isBalChamberSwitchingActive = FALSE; + isBalChamberSwitchingActive = BC_SWITCHING_OFF; // Move to the idle state state = BAL_CHAMBER_STATE_IDLE; @@ -1040,7 +1047,7 @@ data.currentBalChamberSwitchingCounter = currentBalChamberSwitchingCounter; data.isPressureStabilizedDuringFill = isPressureStabilizedDuringFill; data.balChamberSWOnlyState = balanceChamberSwitchingOnly; - data.isBalChamberSwitchingActive = isBalChamberSwitchingActive; + data.isBalChamberSwitchingActive = (U08)isBalChamberSwitchingActive; broadcastData( MSG_ID_DD_BAL_CHAMBER_DATA, COMM_BUFFER_OUT_CAN_DD_BROADCAST, (U08*)&data, sizeof( BAL_CHAMBER_DATA_T ) );