/************************************************************************** * * 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 ConcentratePumps.h * * @author (last) Vinayakam Mani * @date (last) 19-Sep-2024 * * @author (original) Vinayakam Mani * @date (original) 19-Sep-2024 * ***************************************************************************/ #ifndef __CONCENTRATE_PUMPS_H__ #define __CONCENTRATE_PUMPS_H__ #include "DDCommon.h" //#include "NVDataMgmt.h" /** * @defgroup ConcentratePumps ConcentratePumps * @brief Concentrate pumps monitor and control unit. Monitors and control concentrate pump with an closed loop approach. * * @addtogroup ConcentratePumps * @{ */ // ********** public definitions ********** #define CONCENTRATE_PUMP_MAX_SPEED 48.0F ///< Maximum speed for concentrate pump in mL/min #define DEFAULT_ACID_VOLUME_ML 0.67F ///< Acid concentrate volume in ml. #define DEFAULT_BICARB_VOLUME_ML 1.15F ///< Bicarb concentrate volume in ml. #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 { D11_PUMP = 0, ///< Acid concentrate pump CONCENTRATEPUMPS_FIRST = D11_PUMP, ///< First concentrate pump in list D10_PUMP, ///< Bicarbonate concentrate pump NUM_OF_CONCENTRATE_PUMPS ///< Number of concentrate pumps } CONCENTRATE_PUMPS_T; /// Concentrate pump data struct. typedef struct { F32 d11_PumpCurrentSetSpeed; ///< Concentrate pump D11_Pump current set speed F32 d11_PumpMeasuredSpeed; ///< Concentrate pump D11_Pump measured speed F32 d10_PumpCurrentSetSpeed; ///< Concentrate pump D10_Pump current set speed F32 d10_PumpMeasuredSpeed; ///< Concentrate pump D10_Pump measured speed U32 d11_PumpTargetRevCount; ///< Concentrate pump D11_Pump target revolution count U32 d11_PumpMeasuredRevCount; ///< Concentrate pump D11_Pump measured revolution count U32 d10_PumpTargetRevCount; ///< Concentrate pump D10_Pump target revolution count U32 d10_PumpMeasuredRevCount; ///< Concentrate pump D10_Pump measured revolution count U32 d11_PumpState; ///< Concentrate pump D11_Pump current state U32 d10_PumpState; ///< Concentrate pump D10_Pump current state F32 d11_PumpPulseUS; ///< Concentrate pump D11_Pump pulse in microseconds F32 d10_PumpPulseUS; ///< Concentrate pump D10_Pump pulse in microseconds F32 d11_PumpTargetSpeed; ///< Concentrate pump D11_Pump target speed F32 d10_PumpTargetSpeed; ///< Concentrate pump D10_Pump target speed BOOL d11_PumpParked; ///< Concentrate pump D11_Pump parked status BOOL d10_PumpParked; ///< Concentrate pump D10_Pump parked status BOOL d11_PumpParkFault; ///< Concentrate pump D11_Pump park fault status BOOL d10_PumpParkFault; ///< Concentrate pump D10_Pump 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 targetVolume_ml ); F32 getConcentratePumpTargetFlowMLPM( CONCENTRATE_PUMPS_T pumpId ); F32 getMeasuredPumpSpeedMLPM( CONCENTRATE_PUMPS_T pumpId ); F32 getPumpTargetSpeed( CONCENTRATE_PUMPS_T pumpId ); BOOL getConcPumpParkRequest( CONCENTRATE_PUMPS_T pumpId ); BOOL getConcPumpIsParked( CONCENTRATE_PUMPS_T pumpId ); BOOL getConcPumpParkIsFaulted( CONCENTRATE_PUMPS_T pumpId ); U16 getConcPumpTargetRevolutionCount( CONCENTRATE_PUMPS_T pumpId ); U16 getConcPumpCurrentMeasuredRevolutionCount( CONCENTRATE_PUMPS_T pumpId ); BOOL handleConcentratePumpParkRequest( void ); BOOL isConcPumpParkInProgress( CONCENTRATE_PUMPS_T pumpId ); BOOL isConcentratePumpDosingCompleted( CONCENTRATE_PUMPS_T pumpId ); BOOL testConcentratePumpDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testConcentratePumpTargetSpeedOverride( MESSAGE_T *message ); BOOL testConcentratePumpMeasuredSpeedOverride( MESSAGE_T *message ); BOOL testConcentratePumpParkedOverride( MESSAGE_T *message ); BOOL testConcentratePumpParkCmdFaultedOverride( MESSAGE_T *message ); BOOL testConcentratePumpTargetRevCountOverride( MESSAGE_T *message ); BOOL testConcentratePumpStartStopOverride( MESSAGE_T *message ); // Concentrate pump start/stop request BOOL testConcentratePumpParkRequestOverride( MESSAGE_T *message ); // Concentrate pump stop/park request /**@}*/ #endif