Index: firmware/App/Controllers/PresOccl.h =================================================================== diff -u -r8bd1ae47aa13a843aa8abd6321ddc050deacb4a6 -rcd5be724d5a3ba7457e761191d82f278654d7f5c --- firmware/App/Controllers/PresOccl.h (.../PresOccl.h) (revision 8bd1ae47aa13a843aa8abd6321ddc050deacb4a6) +++ firmware/App/Controllers/PresOccl.h (.../PresOccl.h) (revision cd5be724d5a3ba7457e761191d82f278654d7f5c) @@ -1,96 +1,113 @@ /************************************************************************** * -* Copyright (c) 2019-2021 Diality Inc. - All Rights Reserved. +* 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 PresOccl.h * * @author (last) Sean Nash -* @date (last) 19-Aug-2021 +* @date (last) 31-Aug-2023 * * @author (original) Sean * @date (original) 15-Jan-2020 * ***************************************************************************/ - -#ifndef __PRESSURE_OCCLUSION_H__ -#define __PRESSURE_OCCLUSION_H__ - -#include "HDCommon.h" - -/** - * @defgroup PressureOcclusion PressureOcclusion - * @brief Pressure & Occlusion controller/monitor module. Monitors the + +#ifndef __PRESSURE_OCCLUSION_H__ +#define __PRESSURE_OCCLUSION_H__ + +#include "HDCommon.h" + +/** + * @defgroup PressureOcclusion PressureOcclusion + * @brief Pressure & Occlusion controller/monitor module. Monitors the * venous line pressure sensor (Honeywell HSCMRNN030PDSA3), arterial line - * pressure sensor (Memscap 32022-100mm) and pump occlusion sensors (SMD DIA8308). - * - * @addtogroup PressureOcclusion - * @{ - */ - -// ********** public definitions ********** - -/// Enumeration of pressure sensors monitored by this module. -typedef enum PressureSensors -{ - PRESSURE_SENSOR_ARTERIAL = 0, ///< Arterial blood line pressure sensor - PRESSURE_SENSOR_VENOUS, ///< Vensous blood line pressure sensor - NUM_OF_PRESSURE_SENSORS ///< Number of pressure sensors -} PRESSURE_SENSORS_T; - -/// Enumeration of occlusion sensors monitored by this module. -typedef enum OcclusionSensors -{ - OCCLUSION_SENSOR_BLOOD_PUMP = 0, ///< Blood pump occlusion sensor - OCCLUSION_SENSOR_DIAL_IN_PUMP, ///< Dialysate inlet pump occlusion sensor - OCCLUSION_SENSOR_DIAL_OUT_PUMP, ///< Dialysate outlet pump occlusion sensor - NUM_OF_OCCLUSION_SENSORS ///< Number of occlusion sensors -} OCCLUSION_SENSORS_T; - + * pressure sensor (Memscap 32022-100mm) and pump occlusion sensors (SMD DIA8308). + * + * @addtogroup PressureOcclusion + * @{ + */ + +// ********** public definitions ********** + +#define USE_NORMAL_STABILIZATION_PERIOD FALSE +#define USE_SHORT_STABILIZATION_PERIOD TRUE + +/// Enumeration of pressure sensors monitored by this module. +typedef enum PressureSensors +{ + PRESSURE_SENSOR_ARTERIAL = 0, ///< Arterial blood line pressure sensor + PRESSURE_SENSOR_VENOUS, ///< Vensous blood line pressure sensor + NUM_OF_PRESSURE_SENSORS ///< Number of pressure sensors +} PRESSURE_SENSORS_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_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 & occlusions data message. typedef struct { F32 arterialPressure; ///< Latest arterial pressure (mmHg) F32 venousPressure; ///< Latest venous pressure (mmHg) U32 bldPumpOcclusion; ///< Latest BP occlusion (no units) - U32 diPumpOcclusion; ///< Latest DPi occlusion (no units) - U32 doPumpOcclusion; ///< Latest DPo occlusion (no units) + U32 presLimitState; ///< Current pressure limits state (enum-stabilization or stable) + S32 artMinLimit; ///< Current arterial minimum pressure limit (mmHg) + S32 artMaxLimit; ///< Current arterial maximum pressure limit (mmHg) + S32 venMinLimit; ///< Current venous minimum pressure limit (mmHg) + S32 venMaxLimit; ///< Current venous maximum pressure limit (mmHg) + F32 arterialLongFilterPres; ///< Latest long filtered arterial pressure (mmHg) + F32 venousLongFilterPres; ///< Latest long filtered venous pressure (mmHg) } PRESSURE_OCCLUSION_DATA_T; -// ********** public function prototypes ********** - -void initPresOccl( void ); -void execPresOccl( void ); +// ********** public function prototypes ********** +void initPresOccl( void ); +void execPresOccl( void ); + void execPresOcclTest( void ); -SELF_TEST_STATUS_T execPresOcclDryTest( void ); - +SELF_TEST_STATUS_T execPresOcclDryTest( void ); +SELF_TEST_STATUS_T execPresOcclSelfTest( void ); + +void setPressureLimitsToOuterBounds( void ); +void updatePressureLimitWindows( void ); +void signalInitiatePressureStabilization( BOOL useShort ); + +void resetArtVenPressureOffsets( void ); +void setArtVenPressureOffsets( void ); + F32 getMeasuredArterialPressure( void ); -F32 getFilteredArterialPressure( void ); +F32 getFilteredArterialPressure( void ); F32 getLongFilteredArterialPressure( void ); F32 getMeasuredVenousPressure( void ); -F32 getFilteredVenousPressure( void ); -U32 getMeasuredBloodPumpOcclusion( void ); +F32 getFilteredVenousPressure( void ); +F32 getLongFilteredVenousPressure( void ); +U32 getMeasuredBloodPumpOcclusion( void ); BOOL isCartridgeLoaded( void ); BOOL isCartridgeUnloaded( void ); BOOL isSalineBagEmpty( void ); void setOcclusionInstallLevel( void ); -BOOL testSetPresOcclDataPublishIntervalOverride( U32 value ); -BOOL testResetPresOcclDataPublishIntervalOverride( void ); -BOOL testSetArterialPressureOverride( F32 value ); -BOOL testResetArterialPressureOverride( void ); -BOOL testSetVenousPressureOverride( F32 value ); -BOOL testResetVenousPressureOverride( void ); -BOOL testSetBloodPumpOcclusionOverride( U32 value ); -BOOL testResetBloodPumpOcclusionOverride( void ); -BOOL testSetArterialPressureOffsetOverride( F32 value ); -BOOL testResetArterialPressureOffsetOverride( void ); - -/**@}*/ - -#endif +BOOL testSetPresOcclDataPublishIntervalOverride( U32 value ); +BOOL testResetPresOcclDataPublishIntervalOverride( void ); +BOOL testSetArterialPressureOverride( F32 value, BOOL filtered ); +BOOL testResetArterialPressureOverride( BOOL filtered ); +BOOL testSetVenousPressureOverride( F32 value, BOOL filtered ); +BOOL testResetVenousPressureOverride( BOOL filtered ); +BOOL testSetBloodPumpOcclusionOverride( U32 value ); +BOOL testResetBloodPumpOcclusionOverride( void ); + +/**@}*/ + +#endif