/************************************************************************** * * Copyright (c) 2024-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 Pressures.h * * @author (last) Sean * @date (last) 23-Sep-2024 * * @author (original) Sean * @date (original) 23-Sep-2024 * ***************************************************************************/ #ifndef __PRESSURES_H__ #define __PRESSURES_H__ #include "TDCommon.h" #include "PressureSensor.h" /** * @defgroup Pressures Pressures * @brief The pressures monitor unit. Monitors the arterial and venous pressure * sensors and manages the alarm windows for pressure range during treatment. * * @addtogroup Pressures * @{ */ // ********** public definitions ********** /// Enumeration of pressure stabilization periods. typedef enum StabilizationPeriods { STABILIZATION_PERIOD_OFF = 0, ///< Stabilization period off - 0 seconds USE_SHORT_STABILIZATION_PERIOD, ///< Short stabilization period for air pump event - 10 seconds USE_NORMAL_STABILIZATION_PERIOD, ///< Normal Stabilization period for system events, excluding airpump events ( treatment param change, resume treatment etc.,) - 60 seconds NUM_OF_STABILIZATION_PERIODS ///< Number of stabilization periods } STABILIZATION_PERIODS_T; /// Enumeration of arterial/venous pressure limits states. typedef enum PressureLimitsStates { PRESSURE_LIMITS_STATE_OFF = 0, ///< Off - not pressure low/high alarms will be detected) PRESSURE_LIMITS_STATE_IDLE, ///< Idle - in Treatment mode state where BP is stopped - no pressure low/high alarms PRESSURE_LIMITS_STATE_WIDE, ///< Wide - in Treatment mode state where BP is running but wide limits apply PRESSURE_LIMITS_STATE_STABILIZATION, ///< Stabilization - in Treatment mode state where BP is running (dialysis or stop), but need to stabilize first PRESSURE_LIMITS_STATE_STABILIZATION_2, ///< Second stage stabilization - re adjust the pressure that has been drifted due to UF control etc and limit windows apply PRESSURE_LIMITS_STATE_STABLE, ///< Stable - in Treatment mode state where BP is running (dialysis or stop) and limit windows apply NUM_OF_PRESSURE_LIMITS_STATES ///< Number of pressure limits states } PRESSURE_LIMITS_STATES_T; /// Payload record structure for the pressure data message. typedef struct { F32 h2Pressure; ///< Latest arterial pressure (mmHg) F32 h14Pressure; ///< Latest venous pressure (mmHg) U32 presLimitState; ///< Current pressure limits state (enum-stabilization or stable) S32 h2MinLimit; ///< Current arterial minimum pressure limit (mmHg) S32 h2MaxLimit; ///< Current arterial maximum pressure limit (mmHg) S32 h14MinLimit; ///< Current venous minimum pressure limit (mmHg) S32 h14MaxLimit; ///< Current venous maximum pressure limit (mmHg) F32 h2LongFilterPres; ///< Latest long filtered arterial pressure (mmHg) F32 h14LongFilterPres; ///< Latest long filtered venous pressure (mmHg) } PRESSURE_DATA_T; // ********** public function prototypes ********** void initPressure( void ); void execPressure( void ); void execPressureTest( void ); SELF_TEST_STATUS_T execPressurePOSTSelfTest( void ); void resetArtVenPressureOffsets( void ); void setArtVenPressureOffsets( void ); void setPressureLimitsToOuterBounds( void ); void updatePressureLimitWindows( void ); void signalInitiatePressureStabilization( STABILIZATION_PERIODS_T stabilizationPeriod ); void signalLowVenousPressureCheck( void ); F32 getFilteredArterialPressure( void ); F32 getLongFilteredArterialPressure( void ); F32 getFilteredVenousPressure( void ); F32 getLongFilteredVenousPressure( void ); BOOL testPressuresDataPublishIntervalOverride( MESSAGE_T *message ); /**@}*/ #endif