/************************************************************************** * * Copyright (c) 2024-2026 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 SubstitutionPump.h * * @author (last) Sameer Kalliadan Poyil * @date (last) 15-Apr-2026 * * @author (original) Michael Garthwaite * @date (original) 5-May-2026 * ***************************************************************************/ #ifndef __SUBSTITUTION_PUMPS_H__ #define __SUBSTITUTION_PUMPS_H__ #include "DDCommon.h" //#include "NVDataMgmt.h" /** * @defgroup SubstitutionPumps SubstitutionPumps * @brief Substitution pumps monitor and control unit. Monitors and control Substitution pump with an closed loop approach. * * @addtogroup SubstitutionPumps * @{ */ // ********** public definitions ********** #define SUB_PUMP_CONT_VOLUME 0xFFFFFFFF ///< Volume set to 0xFFFFFFFF enables continuous delivery based on the speed set. #define PARK_CONC_PUMPS TRUE ///< For park parameter to requestConcentratePumpOff(). #define NO_PARK_CONC_PUMPS FALSE ///< For park parameter to requestConcentratePumpOff(). /// Enumeration of substitution pumps. typedef enum SubstitutionPumps { D92_PUMP = 0, ///< HDF pump SUBPUMPS_FIRST = D92_PUMP, ///< First substitution pump in list NUM_OF_SUB_PUMPS ///< Number of substitution pumps } SUBSTITUTION_PUMPS_T; /// Substitution pump data struct. typedef struct { F32 d92_PumpTargetSpeed; ///< Substitution pump D92_Pump target speed F32 d92_PumpCurrentSetSpeed; ///< Substitution pump D92_Pump current set speed U32 d92_PumpState; ///< Substitution pump D92_Pump current state } SUBSTITUTION_PUMP_DATA_T; // ********** public function prototypes ********** void initSubstitutionPump( void ); void execSubstitutionPumpMonitor( void ); void execSubstitutionPumpController( void ); void requestSubstitutionPumpOn( SUBSTITUTION_PUMPS_T pumpId ); void requestSubstitutionPumpOff( SUBSTITUTION_PUMPS_T pumpId ); F32 getSubstitutionPumpTargetSpeed( SUBSTITUTION_PUMPS_T pumpId ); void setSubstitutionPumpTargetSpeed( SUBSTITUTION_PUMPS_T pumpId, F32 targetSpeed_ml_min ); BOOL testSubstitutionPumpDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testSubstitutionPumpTargetSpeedOverride( MESSAGE_T *message ); BOOL testSubstitutionPumpStartStopOverride( MESSAGE_T *message ); /**@}*/ #endif