Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r1c04924590760ca29e1c9fe19bca65ec5ce428fe -r80944744742c64276e19ace023836a2db7c9502e --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 1c04924590760ca29e1c9fe19bca65ec5ce428fe) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 80944744742c64276e19ace023836a2db7c9502e) @@ -69,6 +69,9 @@ #define SELF_TEST_TIME_DATA_PUB_INTERVAL ( MS_PER_SECOND ) ///< Interval (ms/task time) at which self-test time data is published on the CAN bus. +#define NORMAL_PRESSURE_LOWER_BOUNDARY -10.0F ///< Lower boundary (mmHg) for pressure check before dry self tests +#define NORMAL_PRESSURE_UPPER_BOUNDARY 10.0F ///< Upper boundary (mmHg) for pressure check before dry self tests + /// Multiplier to conver flow (mL/min) into volume (mL) for period of general task interval. static const F32 SELF_TEST_FLOW_INTEGRATOR = ( ( 1.0F * TASK_GENERAL_INTERVAL ) / ( SEC_PER_MIN * MS_PER_SECOND ) ); @@ -931,11 +934,23 @@ state = DRY_SELF_TESTS_STOPPED_STATE; setupForSelfTestsStop(); } + else { // TODO - wait 1 sec before taking pressure readings and beginning pressure check previousNormalArterialPressure = getFilteredArterialPressure(); previousNormalVenousPressure = getFilteredVenousPressure(); + // Check to see if sensor is within normal ranges before we execute pressure sensor tests + if (previousNormalArterialPressure <= NORMAL_PRESSURE_LOWER_BOUNDARY || previousNormalArterialPressure >= NORMAL_PRESSURE_UPPER_BOUNDARY ) + { + SET_ALARM_WITH_1_F32_DATA( ALARM_ID_HD_ARTERIAL_PRESSURE_OUT_OF_RANGE, previousNormalArterialPressure ); + } + + if (previousNormalVenousPressure <= NORMAL_PRESSURE_LOWER_BOUNDARY || previousNormalVenousPressure >= NORMAL_PRESSURE_UPPER_BOUNDARY ) + { + SET_ALARM_WITH_1_F32_DATA( ALARM_ID_HD_VENOUS_PRESSURE_OUT_OF_RANGE, previousNormalVenousPressure ); + } + setValvePosition( VDI, VALVE_POSITION_C_CLOSE ); setValvePosition( VDO, VALVE_POSITION_C_CLOSE ); setValvePosition( VBA, VALVE_POSITION_B_OPEN ); @@ -964,7 +979,7 @@ // End the test when reaching target pressure or time out if ( ( TRUE == didTimeout( pressureSelfTestBloodPumpRunStartTime, BLOOD_PUMP_RUN_TIME_PRESSURE_SELF_TEST ) ) || - ( ARTERIAL_PRESSURE_SELF_TEST_LOW_LIMIT_MMHG >= arterialPressure ) || ( VENOUS_PRESSURE_SELF_TEST_HIGH_LIMIT_MMHG <= venousPressure ) ) + ( ARTERIAL_PRESSURE_SELF_TEST_LOW_LIMIT_MMHG >= arterialPressure ) && ( VENOUS_PRESSURE_SELF_TEST_HIGH_LIMIT_MMHG <= venousPressure ) ) { signalBloodPumpHardStop(); // Test pass when reading positive arterial pressure and negative venous pressure