/************************************************************************** * * Copyright (c) 2020-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 PermeateTank.h * * @author (last) Sean Nash * @date (last) 12-Nov-2024 * * @author (original) Sean Nash * @date (original) 12-Nov-2024 * ***************************************************************************/ #ifndef __PERMEATE_TANK_H__ #define __PERMEATE_TANK_H__ // ********** public definitions ********** #include "DDCommon.h" /** * @defgroup FPPermeateTank FPPermeateTank * @brief Permeate Tank controller unit. Provides high level control functionality * to manage the fluid level of the permeate tank. * * @addtogroup PermeateTank * @{ */ // ********** public definitions ********** /// Defined states for the air trap controller state machine. typedef enum PermeateTank_States { PERMEATE_TANK_INIT_STATE = 0, ///< Initialization state. PERMEATE_TANK_MANUAL_CONTROL_STATE, ///< Manually control permeate valve state. PERMEATE_TANK_FILL_STATE, ///< Tank fill state PERMEATE_TANK_FULL_STATE, ///< Tank full state. NUM_OF_PERMEATE_TANK_STATES ///< Number of permeate tank controller states. } PERMEATE_TANK_STATE_T; /// Permeate Tank data record. typedef struct { U32 tankState; ///< Permeate Tank current state. } PERMEATE_TANK_DATA_T; // ********** public function prototypes ********** void initPermeateTank(void); void resetPermeateTank( void ); void execPermeateTankController(void); void startPermeateTankControl( void ); void endPermeateTankControl( void ); BOOL isPermeateTankControlling( void ); PERMEATE_TANK_STATE_T getPermeateTankState( void ); BOOL testPermeateTankDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testSetPermeateTankControl( MESSAGE_T *message ); /**@}*/ #endif