/************************************************************************** * * Copyright (c) 2024-2024 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file ValvesDD.h * * @author (last) Vinayakam Mani * @date (last) 14-Aug-2024 * * @author (original) Vinayakam Mani * @date (original) 14-Aug-2024 * ***************************************************************************/ #ifndef __VALVES_DD_H__ #define __VALVES_DD_H__ #include "DDCommon.h" /** * @defgroup Valves Valves * @brief Valves driver unit. Controls all hydraulics valves, balancing chamber and * ultrafiltration valves through FPGA Interface. * * @addtogroup Valves * @{ */ /// Enumeration of valves. typedef enum Valves { FIRST_HYD_VALVE = 0, ///< Start of Hydraulics valve group VDR = FIRST_HYD_VALVE, ///< Valve Drain (D53) VTD, ///< Valve Thermal Disinfect (D52) VHB, ///< Valve Hydraulics Bypass (D8) VRP, ///< Valve Rinse Port (D54) VHO, ///< Valve Hydraulics Outlet (D14) VDB1, ///< Valve DryBcarb Inlet (D65) VP1, ///< Valve Purge 1 (D64) VPT, ///< Valve Pressure Test (D31) VDB2, ///< Valve Dialyzer Bypass (D34) VDI, ///< Valve Dialyzer Inlet (D35) VDO, ///< Valve Dialyzer Outlet (D40) VP2, ///< Valve Dialysate Out Purge 2 (D47) VHI, ///< Valve Hydraulics Inlet (D3) VWI, ///< Valve Water Inlet (M4) LAST_HYD_VALVE = VWI, ///< End of Hydraulics valve of group RSRVD_SPACE1, ///< This space has been reserved RSRVD_SPACE2, ///< This space has been reserved FIRST_BC_VALVE, ///< Start of Balancing Chamber valve group BCV1 = FIRST_BC_VALVE, ///< Balancing chamber Valve 1 (D23) BCV2, ///< Balancing chamber Valve 2 (D19) BCV3, ///< Balancing chamber Valve 3 (D25) BCV4, ///< Balancing chamber Valve 4 (D21) BCV5, ///< Balancing chamber Valve 5 (D24) BCV6, ///< Balancing chamber Valve 6 (D20) BCV7, ///< Balancing chamber Valve 7 (D26) BCV8, ///< Balancing chamber Valve 8 (D22) LAST_BC_VALVE = BCV8, ///< End of Balancing Chamber valve group FIRST_UF_VALVE, ///< Start of Ultrafiltration valve group UFI1 = FIRST_UF_VALVE, ///< Ultrafiltration Valve 1 Inlet (D69) UFI2, ///< Ultrafiltration Valve 2 Inlet (D71) UFO1, ///< Ultrafiltration Valve 1 Outlet (D70) UFO2, ///< Ultrafiltration Valve 2 Outlet (D72) LAST_UF_VALVE = UFO2, ///< End of Ultrafiltration valve group NUM_OF_VALVES ///< Number of valves } VALVES_T; /// Enumeration of available valve state names per valve type (from SA and DD SRS documents). typedef enum ValveStateNames { VALVE_STATE_OPEN = 0, ///< Open valve state, VALVE_STATE_CLOSED, ///< Closed valve state, NUM_OF_VALVE_STATES ///< number of valve states } VALVE_STATE_NAMES_T; #pragma pack(push, 1) /// Valves publish structure typedef struct { U16 valvesStatus; ///< 2 way valves status. U08 valvesBCStatus; ///< Balancing chamber valves status. U08 valvesUFStatus; ///< Ultrafiltration valves status. U08 valvesSensedState[ NUM_OF_VALVES ]; ///< DD valves sensed states. } DD_VALVES_DATA_T; #pragma pack(pop) // ********** public function prototypes ********** void initValves( void ); void execValves( void ); BOOL setValveState( VALVES_T valve, VALVE_STATE_NAMES_T valveState ); BOOL setValveStateDelayed( VALVES_T valve, VALVE_STATE_NAMES_T valveState, U32 delayMs ); VALVE_STATE_NAMES_T getValveStateName( VALVES_T valveID ); void setHydValvesStatetoClosedState( void ); void setUFValvesStatetoClosedState( void ); BOOL testValvesStatesPublishIntervalOverride( MESSAGE_T *message ); BOOL testValveStateOverride( MESSAGE_T *message ); BOOL testValveSensedStateOverride( MESSAGE_T *message ); BOOL testValveOpenCloseStateOverride( MESSAGE_T *message ); /**@}*/ #endif