Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -rced4d5be0d18c9b1001143206d10e09fd15f8efb -rab9ef60d5005db2a8e32353ee6c9bc7d743808aa --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision ced4d5be0d18c9b1001143206d10e09fd15f8efb) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision ab9ef60d5005db2a8e32353ee6c9bc7d743808aa) @@ -99,6 +99,8 @@ #define MIN_OCCLUSION_COUNTS 2000 ///< Minimum occlusion sensor reading for range check. #define OCCLUSION_CARTRIDGE_LOADED_PRESSURE_READING_MAX 24500 ///< Occlusion sensors maximum pressure reading limit when cartridge is considered loaded. +#define MAX_ART_VEN_OFFSET_MMHG 15.0F ///< Maximum arterial/venous offset allowed. + #define EMPTY_SALINE_BAG_THRESHOLD_MMHG -300.0F ///< Threshold below which the saline bag is considered empty (in mmHg). static const U32 EMPTY_SALINE_BAG_PERSISTENCE = ( 250 / TASK_GENERAL_INTERVAL ); ///< Time that saline bag looks empty before saying it is empty. @@ -282,6 +284,10 @@ { arterialPressureOffset = getMeasuredArterialPressure(); venousPressureOffset = getMeasuredVenousPressure(); + if ( ( fabs( arterialPressureOffset ) > MAX_ART_VEN_OFFSET_MMHG ) || ( fabs( venousPressureOffset ) > MAX_ART_VEN_OFFSET_MMHG ) ) + { + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_PRE_TREATMENT_DRY_PRESSURE_TEST_FAILURE, arterialPressureOffset, venousPressureOffset ); + } } /*********************************************************************//** @@ -680,7 +686,8 @@ F32 venPresPSI; // Convert venous pressure to PSI and then mmHg - venPresPSI = ( (F32)( venPres - VENOUS_PRESSURE_OFFSET ) * ( VENOUS_PRESSURE_MAX_PSI - VENOUS_PRESSURE_MIN_PSI ) / (F32)VENOUS_PRESSURE_SCALE ) + VENOUS_PRESSURE_MIN_PSI; + venPresPSI = ( (F32)( venPres - VENOUS_PRESSURE_OFFSET ) * + ( VENOUS_PRESSURE_MAX_PSI - VENOUS_PRESSURE_MIN_PSI ) / (F32)VENOUS_PRESSURE_SCALE ) + VENOUS_PRESSURE_MIN_PSI; venPresPSI = venPresPSI * PSI_TO_MMHG; venousPressure.data = venPresPSI - venousPressureOffset; }