/************************************************************************** * * 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 DryBiCart.h * * @author (last) Sameer Kalliadan Poyil * @date (last) 02-Feb-2026 * * @author (original) Vinayakam Mani * @date (original) 19-Nov-2025 * ***************************************************************************/ #ifndef __DRY_BICART_H__ #define __DRY_BICART_H__ #include "PIControllers.h" #include "DDCommon.h" #include "DDDefs.h" /** * @defgroup DryBiCart DryBiCart * @brief DryBiCart unit. Performs dry bicarbonate cartridge fill, bicarb * chamber(F) fill and cartridge draining functions via a state machine. * * @addtogroup DryBiCart * @{ */ // ********** public definitions ********** #pragma pack(push, 1) /// dry bicart data structure typedef struct { U32 dryBiCartFillExecState; ///< Dry bicart execution state U32 bicarbChamberFillExecState; ///< Bicarb chamber Fill execution state //TODO: restore it after testing complete #if 0 U32 dryBiCartDrainExecState; ///< Dry bicart drain execution state U32 dryBiCartFillCycleCounter; ///< Dry bicart fill cycle counter U32 dryBiCartMaxFillCycleCount; ///< Dry bicart fill cycle max count U32 dryBiCartFillRequest; ///< Dry bicart fill request U32 bicarbChamberFillRequest; ///< Bicarb chamber fill request U32 dryBiCartDrainRequest; ///< Dry bicart drain request U32 dryBiCartLastFillTime; ///< Dry bicart last fill duration in milli second U32 dryBiCartCurrentFillTime; ///< Dry bicart current fill duration in milli second U32 dryBiCartType; ///< Dry bicart type (small-0/large-1) U32 dryBiCartDrainTimePeriod; ///< Dry bicart drain time based on catridge type (small/large) #endif // TODO: remove after closed loops stabilized PI_CONTROLLER_SIGNALS_DATA dryBiCartBicarbDosingControl; ///< Dry bicart bicarb dosing closed loop control signals data PI_CONTROLLER_SIGNALS_DATA dryBiCartAcidDosingControl; ///< Dry bicart acid dosing closed loop control signals data F32 dryBiCartAcidMixVolume; ///< Dry bicart acid dose volume F32 dryBiCartBicarbMixVolume; ///< Dry bicart bicarb dose volume F32 dryBiCartBicarbDosingKPgain; ///< Dry bicart bicarb dosing control kp gain F32 dryBiCartBicarbDosingKIgain; ///< Dry bicart bicarb dosing control ki gain F32 dryBiCartAcidDosingKPgain; ///< Dry bicart acid dosing control kp gain F32 dryBiCartAcidDosingKIgain; ///< Dry bicart acid dosing control ki gain } DRY_BICART_DATA_T; #pragma pack(pop) // ********** public function prototypes ********** void initDryBiCart( void ); void transitionToDryBicart( void ); U32 execDryBicartFillMode( void ); U32 execBicarbChamberFillMode( void ); U32 execDryBicartDrainMode( void ); void execDryBicart( void ); BOOL setBicarbChamberFillRequested( void ); BOOL setBicartFillRequested( void ); BOOL setBicartDrainRequested( void ); F32 getDialysateTargetConductivity( void ); F32 getDialysateDeltaConductivity( void ); F32 getBicarbTargetConductivity( void ); F32 getBicarbDeltaConductivity( void ); F32 getBicarbMixVol( void ); F32 getAcidMixVol( void ); DRY_BICART_FILL_EXEC_STATE_T getCurrentDryBiCartFillExecState( void ); BOOL testDryBiCartDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testDryBiCartFillCycleMaxCountOverride( MESSAGE_T *message ); BOOL testDryBiCartFillRequestOverride( MESSAGE_T *message ); BOOL testBiCarbChamberFillRequestOverride( MESSAGE_T *message ); BOOL testDryBiCartDrainRequestOverride( MESSAGE_T *message ); BOOL testDryBiCartTypeOverride( MESSAGE_T *message ); BOOL testDryBiCartAcidDoseVolumeOverride( MESSAGE_T *message ); BOOL testDryBiCartBicarbDoseVolumeOverride( MESSAGE_T *message ); BOOL testDryBiCartBicarbMixVolControlKpGainOverride( MESSAGE_T *message ); BOOL testDryBiCartBicarbMixVolControlKiGainOverride( MESSAGE_T *message ); BOOL testDryBiCartAcidMixVolControlKpGainOverride( MESSAGE_T *message ); BOOL testDryBiCartAcidMixVolControlKiGainOverride( MESSAGE_T *message ); BOOL testDryBiCartTargetConductivityOverride( MESSAGE_T *message ); BOOL testDryBiCartDeltaConductivityOverride( MESSAGE_T *message ); BOOL testDryBiCartAcidBicarbDeltaConductivityOverride( MESSAGE_T *message ); BOOL testDryBiCartAcidBicarbTargetConductivityOverride( MESSAGE_T *message ); BOOL testDryBiCartUpperCartPressureOverride( MESSAGE_T *message ); BOOL testDryBiCartLowerCartPressureOverride( MESSAGE_T *message ); /**@}*/ #endif