Index: firmware/App/Controllers/PresOccl.c =================================================================== diff -u -r9353792f6dbd624a1d55cf1e87fa848e8fbaea71 -rb91f035a7268b2aa22ad50cf1081aad4b2f5c5e9 --- firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision 9353792f6dbd624a1d55cf1e87fa848e8fbaea71) +++ firmware/App/Controllers/PresOccl.c (.../PresOccl.c) (revision b91f035a7268b2aa22ad50cf1081aad4b2f5c5e9) @@ -98,6 +98,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. @@ -281,6 +283,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 ); + } } /*********************************************************************//** @@ -679,7 +685,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; }