Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -rcd21cbb4e733bfdf52f83bdca7a905645022c572 -rbb0566d9d186ea1379fbba7233c6b7ebf95bc50c --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision cd21cbb4e733bfdf52f83bdca7a905645022c572) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision bb0566d9d186ea1379fbba7233c6b7ebf95bc50c) @@ -15,6 +15,7 @@ * ***************************************************************************/ +#include "AirPump.h" #include "AirTrap.h" #include "BloodFlow.h" #include "BloodLeak.h" @@ -45,8 +46,8 @@ #define DIAL_IN_PUMP_PRESSURE_SELF_TEST_FLOW 400 #define SYRINGE_PUMP_OCCLUSION_CHECK_DELAY ( 1 * MS_PER_SECOND ) ///< Delay 1 second then check for syringe pump prime occlusion. -#define BLOOD_PUMP_RUN_TIME_PRESSURE_SELF_TEST ( 20 * MS_PER_SECOND ) ///< Pressure self-test time to run blood pump in ms. -#define DIAL_IN_PUMP_RUN_TIME_PRESSURE_SELF_TEST ( 20 * MS_PER_SECOND ) ///< Pressure self-test time to run dip in ms. +#define BLOOD_PUMP_RUN_TIME_PRESSURE_SELF_TEST ( 30 * MS_PER_SECOND ) ///< Pressure self-test time to run blood pump in ms. +#define VENOUS_PRESSURE_SELF_TEST_MAX_TEST_TIME ( 30 * MS_PER_SECOND ) ///< Pressure self-test time to run venous self test in ms. #define DECAY_PRESSURE_SELF_TEST_TIME ( 4 * MS_PER_SECOND ) ///< time to wait for pressure to decay in ms. #define STABILTY_PRESSURE_SELF_TEST_TIME ( 5 * MS_PER_SECOND ) ///< Time to wait for pressure to stabilize in ms. #define NORMALIZED_PRESSURE_SELF_TEST_TIME ( 20 * MS_PER_SECOND ) ///< Time to wait for pressure to normalize in ms. @@ -60,7 +61,7 @@ #define ARTERIAL_PRESSURE_SELF_TEST_LOW_LIMIT_MMHG -200.0F ///< Arterial pressure low limit after running blood pump. #define VENOUS_PRESSURE_SELF_TEST_HIGH_LIMIT_MMHG 200.0F ///< Venous pressure high limit after running blood pump. -#define VENOUS_PRESSURE_SELF_TEST_FIRST_PASS_LIMIT_MMHG 200.0F ///< Venous pressure high limit after running dpi in first test. +#define VENOUS_PRESSURE_SELF_TEST_FIRST_PASS_LIMIT_MMHG 250.0F ///< Venous pressure high limit after running air pump in first test. #define NORMAL_PRESSURE_DIFF_TOLERANCE_MMHG 20.0F ///< Difference in pressure readings after return to normal state tolerance (in mmHg). @@ -97,7 +98,7 @@ static DRY_SELF_TESTS_STATE_T currentDrySelfTestsState; ///< Current state of the dry self-tests state machine. static U32 pressureSelfTestBloodPumpRunStartTime; ///< Pressure dry self-test blood pump runs start time. -static U32 pressureSelfTestDialInPumpRunStartTime; ///< Pressure dry self-test dip runs start time. +static U32 pressureSelfTestVenousTestStartTime; ///< Pressure dry self-test dip runs start time. static U32 pressureSelfTestNormalizedStartTime; ///< Normalized pressure dry self-test start time. static U32 pressureSelfTestDecayStartTime; ///< Decay pressure dry self-test start time. static U32 pressureSelfTestStabilityStartTime; ///< Stability pressure dry self-test start time. @@ -1010,7 +1011,7 @@ * The handleDrySelfTestPressureSensorsVenousSetupState function handles the setup * for the venous pressure sensor dry self-test. * @details Inputs: none - * @details Outputs: pressureSelfTestDialInPumpRunStartTime + * @details Outputs: pressureSelfTestVenousTestStartTime * @return the next state of dry self-tests state machine *************************************************************************/ static DRY_SELF_TESTS_STATE_T handleDrySelfTestPressureSensorsVenousSetupState( void ) @@ -1024,13 +1025,35 @@ } else { - setValvePosition( VDI, VALVE_POSITION_B_OPEN ); +#ifndef _RELEASE_ + if ( SW_CONFIG_DISABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_AIR_PUMP ) ) + { +#endif + setValvePosition( VDI, VALVE_POSITION_C_CLOSE ); +#ifndef _RELEASE_ + } + else + { + setValvePosition( VDI, VALVE_POSITION_B_OPEN ); + } +#endif setValvePosition( VDO, VALVE_POSITION_C_CLOSE ); setValvePosition( VBA, VALVE_POSITION_B_OPEN ); setValvePosition( VBV, VALVE_POSITION_C_CLOSE ); setValveAirTrap( STATE_CLOSED ); - setDialInPumpTargetFlowRate( DIAL_IN_PUMP_PRESSURE_SELF_TEST_FLOW, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); - pressureSelfTestDialInPumpRunStartTime = getMSTimerCount(); +#ifndef _RELEASE_ + if ( SW_CONFIG_DISABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_AIR_PUMP ) ) + { +#endif + setAirPumpState( AIR_PUMP_STATE_ON ); +#ifndef _RELEASE_ + } + else + { + setDialInPumpTargetFlowRate( DIAL_IN_PUMP_PRESSURE_SELF_TEST_FLOW, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); + } +#endif + pressureSelfTestVenousTestStartTime = getMSTimerCount(); } return state; @@ -1040,7 +1063,7 @@ * @brief * The handleDrySelfTestPressureSensorsVenousState function tests the readings of * the venous pressure sensor and verify they are in correct range. - * @details Inputs: pressureSelfTestDialInPumpRunStartTime + * @details Inputs: pressureSelfTestVenousTestStartTime * @details Outputs: none * @return the next state of dry self-tests state machine *************************************************************************/ @@ -1052,11 +1075,22 @@ // End the test when reaching target pressure or time out if ( VENOUS_PRESSURE_SELF_TEST_FIRST_PASS_LIMIT_MMHG <= venousPressure ) { - signalDialInPumpHardStop(); +#ifndef _RELEASE_ + if ( SW_CONFIG_DISABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_AIR_PUMP ) ) + { +#endif + setAirPumpState( AIR_PUMP_STATE_OFF ); +#ifndef _RELEASE_ + } + else + { + signalDialInPumpHardStop(); + } +#endif state = DRY_SELF_TESTS_PRESSURE_SENSORS_ARTERIAL_SETUP_STATE; } - if ( TRUE == didTimeout( pressureSelfTestDialInPumpRunStartTime, DIAL_IN_PUMP_RUN_TIME_PRESSURE_SELF_TEST ) ) + if ( TRUE == didTimeout( pressureSelfTestVenousTestStartTime, VENOUS_PRESSURE_SELF_TEST_MAX_TEST_TIME ) ) { SET_ALARM_WITH_2_F32_DATA( ALARM_ID_PRE_TREATMENT_DRY_PRESSURE_TEST_FAILURE, venousPressure, VENOUS_PRESSURE_SELF_TEST_HIGH_LIMIT_MMHG ); }