/************************************************************************** * * 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 Valves.h * * @author (last) Sean Nash * @date (last) 09-Nov-2024 * * @author (original) Sean Nash * @date (original) 09-Nov-2024 * ***************************************************************************/ #ifndef __VALVES_H__ #define __VALVES_H__ #include "ROCommon.h" /** * @defgroup Valves Valves * @brief Valves driver unit. Controls all RO valves through FPGA Interface. * * @addtogroup Valves * @{ */ /// Enumeration of valves. typedef enum Valves { M4_VALV = 0, ///< Valve (M4) FIRST_VALVE = M4_VALV, ///< First valve P39_VALV, ///< Valve (P39) P6_VALV, ///< Valve (P6) P11_VALV, ///< Valve (P11) P33_VALV, ///< Valve (P33) P34_VALV, ///< Valve (P34) P37_VALV, ///< Valve (P37) M7_VALV, ///< Valve (M7) P20_VALV, ///< Valve (P20) NUM_OF_VALVES ///< Number of valves } VALVES_T; /// Enumeration of available valve state names per valve type (from SA and DG SRS documents). typedef enum ValveStateNames { VALVE_STATE_CLOSED = 0, ///< Closed valve state, VALVE_STATE_OPEN, ///< Open valve state, NUM_OF_VALVE_STATES ///< number of valve states } VALVE_STATE_NAMES_T; #pragma pack(push, 1) /// Valves publish structure typedef struct { U16 valvesCmdState; ///< Commanded RO valve states (bits). U08 valvesSensedState[ NUM_OF_VALVES ]; ///< Sensed RO valve states. } RO_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 ); BOOL testValvesStatesPublishIntervalOverride( MESSAGE_T *message ); BOOL testValveStateOverride( MESSAGE_T *message ); BOOL testValveSensedStateOverride( MESSAGE_T *message ); /**@}*/ #endif