/************************************************************************** * * Copyright (c) 2025-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 MixingControl.h * * @author (last) Sameer Kalliadan Poyil * @date (last) 30-Apr-2026 * * @author (original) Vinayakam Mani * @date (original) 19-Nov-2025 * ***************************************************************************/ #ifndef __MIXING_CONTROL_H__ #define __MIXING_CONTROL_H__ #include "PIControllers.h" #include "DDCommon.h" #include "DDDefs.h" /** * @defgroup MixingControl MixingControl * @brief MixingControl unit. Performs dry bicarbonate Dialysate Composition acid and bicarb mixing * via a PI control state machine. * * @addtogroup MixingControl * @{ */ // ********** public definitions ********** #pragma pack(push, 1) /// mixing control data structure typedef struct { U32 bicarbMixingState; ///< Bicarb Mixing State U32 bicarbControlInterval; ///< Bicarb Control interval U32 acidMixingState; ///< Acid mixing state U32 acidControlInterval; ///< Acid control interval F32 currentBicarbMixVolume; ///< Mixing control current bicarb mix volume F32 lastBicarbMixVolume; ///< Mixing control last bicarb mix volume F32 currentAcidMixVolume; ///< Mixing control current acid mix volume F32 lastAcidMixVolume; ///< Mixing control last acid mix volume // TODO: remove after closed loops stabilized PI_CONTROLLER_SIGNALS_DATA bicarbData; ///< Mixing control bicarb mixing closed loop control signals data PI_CONTROLLER_SIGNALS_DATA acidData; ///< Mixing control acid mixing closed loop control signals data F32 bicarbKPgain; ///< Mixing control bicarb kp gain F32 bicarbKIgain; ///< Mixing control bicarb ki gain F32 acidKPgain; ///< Mixing control acid kp gain F32 aciKIgain; ///< Mixing control acid ki gain } MIXING_CONTROL_DATA_T; #pragma pack(pop) // ********** public function prototypes ********** void execMixingControl( void ); F32 getBicarbMixVol( void ); F32 getAcidMixVol( void ); BOOL testMixingControlDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testMixingControlAcidVolumeOverride( MESSAGE_T *message ); BOOL testMixingControlBicarbVolumeOverride( MESSAGE_T *message ); BOOL testMixingControlBicarbVolControlKpGainOverride( MESSAGE_T *message ); BOOL testMixingControlBicarbVolControlKiGainOverride( MESSAGE_T *message ); BOOL testMixingControlAcidVolControlKpGainOverride( MESSAGE_T *message ); BOOL testMixingControlAcidVolControlKiGainOverride( MESSAGE_T *message ); BOOL testMixingControlBicarbTargetConductivityOverride( MESSAGE_T *message ); BOOL testMixingControlBicarbDeltaConductivityOverride( MESSAGE_T *message ); BOOL testMixingControlDialysateDeltaConductivityOverride( MESSAGE_T *message ); BOOL testMixingControlDialysateTargetConductivityOverride( MESSAGE_T *message ); BOOL testMixingControlBicarbControlIntervalOverride( MESSAGE_T *message ); BOOL testMixingControlAcidControlIntervalOverride( MESSAGE_T *message ); BOOL testMixingControlStdMixingBCVolumeOverride( MESSAGE_T *message ); BOOL testMixingControlTargetAdjNASettingOverride( MESSAGE_T *message ); BOOL testMixingControlTargetAdjBicarbSettingOverride( MESSAGE_T *message ); /**@}*/ #endif // __MIXING_CONTROL_H__