Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r8a4a90c6ab504b8067d1d5e8454cd947850b9ab9 -r2c7eb0a12e3189d745eec91880fea7c59fbd64ab --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 8a4a90c6ab504b8067d1d5e8454cd947850b9ab9) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 2c7eb0a12e3189d745eec91880fea7c59fbd64ab) @@ -70,6 +70,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 ) ); @@ -918,11 +921,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 ); @@ -951,7 +966,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