/************************************************************************** * * Copyright (c) 2020-2023 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 ConcentratePumps.h * * @author (last) Dara Navaei * @date (last) 09-Aug-2023 * * @author (original) Quang Nguyen * @date (original) 22-Oct-2020 * ***************************************************************************/ #ifndef __CONCENTRATEPUMPS_H__ #define __CONCENTRATEPUMPS_H__ #include "DGCommon.h" #include "NVDataMgmt.h" /** * @defgroup ConcentratePumps ConcentratePumps * @brief Concentrate pumps monitor and control module. Monitors and control concentrate pump with an open loop approach. * * @addtogroup ConcentratePumps * @{ */ // ********** public definitions ********** #define CONCENTRATE_PUMP_MAX_SPEED 48.0F ///< Maximum speed for concentrate pump in mL/min #define PARK_CONC_PUMPS TRUE ///< For park parameter to requestConcentratePumpOff(). #define NO_PARK_CONC_PUMPS FALSE ///< For park parameter to requestConcentratePumpOff(). /// Enumeration of concentrate pumps. typedef enum ConcentratePumps { CONCENTRATEPUMPS_CP1_ACID = 0, ///< Acid concentrate pump CONCENTRATEPUMPS_FIRST = CONCENTRATEPUMPS_CP1_ACID, ///< First concentrate pump in list CONCENTRATEPUMPS_CP2_BICARB, ///< Bicarbonate concentrate pump NUM_OF_CONCENTRATE_PUMPS ///< Number of concentrate pumps } CONCENTRATE_PUMPS_T; /// Concentrate pump data struct. typedef struct { F32 cp1CurrentSetSpeed; ///< Concentrate pump CP1 current set speed F32 cp1MeasuredSpeed; ///< Concentrate pump CP1 measured speed F32 cp2CurrentSetSpeed; ///< Concentrate pump CP2 current set speed F32 cp2MeasuredSpeed; ///< Concentrate pump CP2 measured speed U32 cp1State; ///< Concentrate pump CP1 current state U32 cp2State; ///< Concentrate pump CP2 current state F32 cp1PulseUS; ///< Concentrate pump CP1 pulse in microseconds F32 cp2PulseUS; ///< Concentrate pump CP2 pulse in microseconds F32 cp1TargetSpeed; ///< Concentrate pump CP1 target speed F32 cp2TargetSpeed; ///< Concentrate pump CP2 target speed BOOL cp1Parked; ///< Concentrate pump CP1 parked status BOOL cp2Parked; ///< Concentrate pump CP2 parked status BOOL cp1ParkFault; ///< Concentrate pump CP1 park fault status BOOL cp2ParkFault; ///< Concentrate pump CP2 park fault status } CONCENTRATE_PUMP_DATA_T; // ********** public function prototypes ********** void initConcentratePump( void ); void execConcentratePumpMonitor( void ); void execConcentratePumpController( void ); SELF_TEST_STATUS_T execConcenratePumpsSelfTest( void ); void requestConcentratePumpOn( CONCENTRATE_PUMPS_T pumpId ); void requestConcentratePumpOff( CONCENTRATE_PUMPS_T pumpId, BOOL park ); void setConcentratePumpTargetSpeed( CONCENTRATE_PUMPS_T pumpId, F32 targetSpeed_ml_min ); F32 getConcentratePumpTargetFlowMLPM( CONCENTRATE_PUMPS_T pumpId ); F32 getMeasuredPumpSpeedMLPM( CONCENTRATE_PUMPS_T pumpId ); BOOL getConcPumpIsParked( CONCENTRATE_PUMPS_T pumpId ); BOOL getConcPumpParkIsFaulted( CONCENTRATE_PUMPS_T pumpId ); BOOL handleConcentratePumpParkRequest( void ); BOOL testSetConcentratePumpDataPublishIntervalOverride( U32 value ); BOOL testResetConcentratePumpDataPublishIntervalOverride( void ); BOOL testSetConcentratePumpTargetSpeedOverride( U32 pumpId, F32 value ); BOOL testSetConcentratePumpMeasuredSpeedOverride( U32 pumpId, F32 value ); BOOL testResetConcentratePumpMeasuredSpeedOverride( U32 pumpId ); BOOL testSetConcentratePumpParkedOverride( U32 pumpId, U32 value ); BOOL testResetConcentratePumpParkedOverride( U32 pumpId ); BOOL testSetConcentratePumpParkCmdFaultedOverride( U32 pumpId, U32 value ); BOOL testResetConcentratePumpParkCmdFaultedOverride( U32 pumpId ); BOOL testSetConcentratePumpParkCommand( U32 pumpId ); /**@}*/ #endif