/************************************************************************** * * 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 module. Controls valves. * * @addtogroup Valves * @{ */ /// Enumeration of valves. typedef enum Valves { VRF = 0, ///< Valve Reservoir Fill VRI, ///< Valve Reservoir Inlet RSRVD_SPACE, ///< This space has been reserved VRO, ///< Valve Reservoir Outlet VPO, ///< Valve Pressure Outlet VBF, ///< Valve Bypass Filter VRC, ///< Valve Recirculate VDR, ///< Valve Drain VPI, ///< Valve Pressure Inlet VSP, ///< Valve Sampling Port VRD1, ///< Valve Reservoir 1 Drain VRD2, ///< Valve Reservoir 2 Drain VPD, ///< Valve Production Drain NUM_OF_VALVES ///< Number of valves } VALVES_T; /// Enumeration of available valve state names per valve type (from SA and DG SRS documents). // TODO : clean up the unwanted valve positions that are no longer needed. typedef enum ValveStateNames { VALVE_STATE_OPEN = 0, ///< Open valve state, used only for VPi, VBf, VRD1, VRD2, and VSP VALVE_STATE_CLOSED, ///< Closed valve state, used only for VPi, VBf, VRD1, VRD2, and VSP // VALVE_STATE_OPEN_C_TO_NC, ///< Open Common to Normally Closed valve state, used only for VPd // VALVE_STATE_NOFILL_C_TO_NO, ///< No Fill Common to Normally Open valve state, used only for VPo // VALVE_STATE_FILL_C_TO_NC, ///< Fill Common to Normally Closed valve state, used only for VPo // VALVE_STATE_DRAIN_C_TO_NO, ///< Drain Common to Normally Open valve state, used only for VDr and VRc. It is also used for VPd in V3 // VALVE_STATE_RECIRC_C_TO_NC, ///< Recirculate Common to Normally Closed valve state, used only for VDr and VRc // VALVE_STATE_R1_C_TO_NO, ///< Reservoir 1 Common to Normally Open valve state, used only for VRo and VRi // VALVE_STATE_R1_C_TO_NC, ///< Reservoir 1 Common to Normally Closed valve state, used only for VRf // VALVE_STATE_R2_C_TO_NO, ///< Reservoir 2 Common to Normally Open valve state, used only for VRf // VALVE_STATE_R2_C_TO_NC, ///< Reservoir 2 Common to Normally Closed valve state, used only for VRo and VRi NUM_OF_VALVE_STATES ///< number of valve states } VALVE_STATE_NAMES_T; #pragma pack(push, 1) /// Valves publish structure typedef struct { U16 valvesStatus; ///< DG valves status. U08 valvesSensedState[ NUM_OF_VALVES ]; ///< DG valves sensed states. } DD_VALVES_DATA_T; #pragma pack(pop) // ********** public function prototypes ********** void initValvesDD( void ); void execValves( void ); VALVE_STATE_NAMES_T getValveStateName( VALVES_T valveID ); BOOL isFliterFlushRequired( void ); BOOL checkValveStateName( VALVES_T valve, VALVE_STATE_NAMES_T valveStateName ); BOOL testSetValvesStatesPublishIntervalOverride( U32 value ); BOOL testResetValvesStatesPublishIntervalOverride( void ); /**@}*/ #endif