Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r83156b9098cc97a7402db4efba5320fac8284ce4 -ra50b999266616eb3d0661846cd31bb395c8a7e12 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 83156b9098cc97a7402db4efba5320fac8284ce4) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision a50b999266616eb3d0661846cd31bb395c8a7e12) @@ -941,26 +941,9 @@ { setOcclusionInstallLevel(); // Record occlusion pressure level after a new cartridge is installed doorClosedRequired( TRUE, TRUE ); -#ifndef _RELEASE_ - if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_DRY_SELF_TESTS ) ) - { - signalAllowDGFlushFills(); - signalAllowDGFillRes1(); - signalAllowDGFillRes2(); - state = DRY_SELF_TESTS_SYRINGE_PUMP_PRIME_STATE; - } - else -#endif - { -#ifndef _RELEASE_ - if ( SW_CONFIG_DISABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_AIR_PUMP ) ) // Allow res 1&2 fills now if air pump not disabled -#endif - { - signalAllowDGFillRes1(); - signalAllowDGFillRes2(); - } - state = DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE; - } + signalAllowDGFillRes1(); + signalAllowDGFillRes2(); + state = DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE; } } @@ -1022,32 +1005,30 @@ *************************************************************************/ static DRY_SELF_TESTS_STATE_T handleDrySelfTestUsedCartridgeCheckState( void ) { - DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_USED_CARTRIDGE_CHECK_STATE; + DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_USED_CARTRIDGE_CHECK_STATE; BUBBLE_STATUS_T ADVBubbleStatus = getBubbleStatus( ADV ); SEND_EVENT_WITH_2_U32_DATA(HD_EVENT_DRY_SELF_TEST_CARTRIDGE_RESULT,(U32)ADVBubbleStatus,(U32)BUBBLE_DETECTED) - if ( ( ( BUBBLE_DETECTED == ADVBubbleStatus ) && - ( AIR_TRAP_LEVEL_AIR == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_LOWER ) ) && - ( AIR_TRAP_LEVEL_AIR == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_UPPER ) ) ) || - ( TRUE == getTestConfigStatus( TEST_CONFIG_ENABLE_WET_CARTRIDGE_USE ) ) ) + if ( ( BUBBLE_DETECTED == ADVBubbleStatus ) && + ( AIR_TRAP_LEVEL_AIR == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_LOWER ) ) && + ( AIR_TRAP_LEVEL_AIR == getAirTrapLevel( AIR_TRAP_LEVEL_SENSOR_UPPER ) ) ) { state = DRY_SELF_TESTS_CARTRIDGE_LOADED_CHECK_STATE; } else { -#ifndef _RELEASE_ - if ( getSoftwareConfigStatus( SW_CONFIG_ENABLE_WORN_OUT_CARTRIDGE ) != SW_CONFIG_ENABLE_VALUE ) -#endif + if ( ( TRUE == getTestConfigStatus( TEST_CONFIG_ENABLE_WORN_CARTRIDGE_USE ) ) || ( TRUE == getTestConfigStatus( TEST_CONFIG_ENABLE_WET_CARTRIDGE_USE ) ) ) { - activateAlarmNoData( ALARM_ID_HD_INSTALL_NEW_CARTRIDGE ); + // If either of the test configurations are set go to loaded check + state = DRY_SELF_TESTS_CARTRIDGE_LOADED_CHECK_STATE; } -#ifndef _RELEASE_ - else + + if ( ( getTestConfigStatus( TEST_CONFIG_ENABLE_WORN_CARTRIDGE_USE ) != TRUE ) && ( getTestConfigStatus( TEST_CONFIG_ENABLE_WET_CARTRIDGE_USE ) != TRUE ) ) { - state = DRY_SELF_TESTS_CARTRIDGE_LOADED_CHECK_STATE; + // If we are using the worn cartridge or wet cartridge, it is not needed to alarm the user to install the new cartridge + activateAlarmNoData( ALARM_ID_HD_INSTALL_NEW_CARTRIDGE ); } -#endif } if ( TRUE == doesAlarmStatusIndicateStop() ) @@ -1080,6 +1061,12 @@ setValveAirTrap( STATE_OPEN ); pressureSelfTestPreNormalStartTime = getMSTimerCount(); state = DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_SETUP_STATE; + + if ( TRUE == getTestConfigStatus( TEST_CONFIG_ENABLE_WORN_CARTRIDGE_USE ) ) + { + dryPressureTestsCompleted = TRUE; + state = DRY_SELF_TESTS_SYRINGE_PUMP_PRIME_STATE; + } } if ( TRUE == doesAlarmStatusIndicateStop() ) @@ -1110,47 +1097,20 @@ } else { -#ifndef _RELEASE_ - if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_AIR_PUMP ) ) - { - // Wait for reservoirs to drain before starting this test - if ( ( getLoadCellWeight( LOAD_CELL_RESERVOIR_1_PRIMARY ) < MAX_EMPTY_RESERVOIR_WEIGHT_G ) && - ( getLoadCellWeight( LOAD_CELL_RESERVOIR_2_PRIMARY ) < MAX_EMPTY_RESERVOIR_WEIGHT_G ) ) - { - if ( TRUE == didTimeout( pressureSelfTestPreNormalStartTime, PRE_NORMAL_PRESSURE_SELF_TEST_DELAY_MS ) ) - { - previousNormalArterialPressure = getFilteredArterialPressure(); - previousNormalVenousPressure = getFilteredVenousPressure(); - state = DRY_SELF_TESTS_PRESSURE_SENSORS_VENOUS_SETUP_STATE; + if ( TRUE == didTimeout( pressureSelfTestPreNormalStartTime, PRE_NORMAL_PRESSURE_SELF_TEST_DELAY_MS ) ) + { // Record baseline pressures before pressurizing blood side circuit side of cartridge + previousNormalArterialPressure = getFilteredArterialPressure(); + previousNormalVenousPressure = getFilteredVenousPressure(); - // Check to see if sensor is within normal ranges before we execute pressure sensor tests - if ( ( fabs( previousNormalArterialPressure ) > PRESSURE_CHECK_START_PRESSURE_TOLERANCE_MMHG ) || - ( fabs( previousNormalVenousPressure ) > PRESSURE_CHECK_START_PRESSURE_TOLERANCE_MMHG ) ) - { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_PRE_TREATMENT_DRY_PRESSURE_TEST_FAILURE, previousNormalArterialPressure, previousNormalVenousPressure ); - } - } + // Check to see if sensor is within normal ranges before we execute pressure sensor tests + if ( ( fabs( previousNormalArterialPressure ) > PRESSURE_CHECK_START_PRESSURE_TOLERANCE_MMHG ) || + ( fabs( previousNormalVenousPressure ) > PRESSURE_CHECK_START_PRESSURE_TOLERANCE_MMHG ) ) + { + SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_PRE_TREATMENT_DRY_PRESSURE_TEST_FAILURE, previousNormalArterialPressure, previousNormalVenousPressure ); } - } - else -#endif - { - if ( TRUE == didTimeout( pressureSelfTestPreNormalStartTime, PRE_NORMAL_PRESSURE_SELF_TEST_DELAY_MS ) ) - { // Record baseline pressures before pressurizing blood side circuit side of cartridge - previousNormalArterialPressure = getFilteredArterialPressure(); - previousNormalVenousPressure = getFilteredVenousPressure(); - - // Check to see if sensor is within normal ranges before we execute pressure sensor tests - if ( ( ( fabs( previousNormalArterialPressure ) > PRESSURE_CHECK_START_PRESSURE_TOLERANCE_MMHG ) || - ( fabs( previousNormalVenousPressure ) > PRESSURE_CHECK_START_PRESSURE_TOLERANCE_MMHG ) ) && - ( getTestConfigStatus( TEST_CONFIG_ENABLE_WET_CARTRIDGE_USE ) != TRUE ) ) - { - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_PRE_TREATMENT_DRY_PRESSURE_TEST_FAILURE, previousNormalArterialPressure, previousNormalVenousPressure ); - } - else - { - state = DRY_SELF_TESTS_PRESSURE_SENSORS_VENOUS_SETUP_STATE; - } + else + { + state = DRY_SELF_TESTS_PRESSURE_SENSORS_VENOUS_SETUP_STATE; } } } @@ -1175,36 +1135,14 @@ state = DRY_SELF_TESTS_STOPPED_STATE; setupForSelfTestsStop(); } - else if ( getTestConfigStatus( TEST_CONFIG_ENABLE_WET_CARTRIDGE_USE ) != TRUE ) + else { -#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( VDI, VALVE_POSITION_C_CLOSE ); setValvePosition( VDO, VALVE_POSITION_C_CLOSE ); setValvePosition( VBA, VALVE_POSITION_B_OPEN ); setValvePosition( VBV, VALVE_POSITION_C_CLOSE ); setValveAirTrap( STATE_CLOSED ); -#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 + setAirPumpState( AIR_PUMP_STATE_ON ); pressureSelfTestVenousTestStartTime = getMSTimerCount(); } @@ -1225,20 +1163,9 @@ F32 venousPressure = getFilteredVenousPressure(); // End the test when reaching target pressure or time out - if ( ( VENOUS_PRESSURE_SELF_TEST_FIRST_PASS_LIMIT_MMHG <= venousPressure ) || ( TRUE == getTestConfigStatus( TEST_CONFIG_ENABLE_WET_CARTRIDGE_USE ) ) ) + if ( VENOUS_PRESSURE_SELF_TEST_FIRST_PASS_LIMIT_MMHG <= venousPressure ) { -#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; } @@ -1275,7 +1202,7 @@ state = DRY_SELF_TESTS_STOPPED_STATE; setupForSelfTestsStop(); } - else if ( getTestConfigStatus( TEST_CONFIG_ENABLE_WET_CARTRIDGE_USE ) != TRUE ) + else { setValvePosition( VDI, VALVE_POSITION_C_CLOSE ); setValvePosition( VDO, VALVE_POSITION_C_CLOSE ); @@ -1306,8 +1233,7 @@ // End the test when reaching target pressure or time out // Test pass when reading positive arterial pressure and negative venous pressure - if ( ( ( ARTERIAL_PRESSURE_SELF_TEST_LOW_LIMIT_MMHG >= arterialPressure ) && ( VENOUS_PRESSURE_SELF_TEST_HIGH_LIMIT_MMHG <= venousPressure ) ) || - ( TRUE == getTestConfigStatus( TEST_CONFIG_ENABLE_WET_CARTRIDGE_USE ) ) ) + if ( ( ARTERIAL_PRESSURE_SELF_TEST_LOW_LIMIT_MMHG >= arterialPressure ) && ( VENOUS_PRESSURE_SELF_TEST_HIGH_LIMIT_MMHG <= venousPressure ) ) { peakVenousPressure = venousPressure; peakArterialPressure = arterialPressure; @@ -1368,9 +1294,8 @@ arterialDecayDiff = fabs( arterialPressure - peakArterialPressure ); venousDecayDiff = fabs( venousPressure - peakVenousPressure ); - if ( ( ( arterialDecayDiff < ARTERIAL_DECAY_PRESSURE_DIFF_TOLERANCE_MMHG ) && - ( venousDecayDiff < VENOUS_DECAY_PRESSURE_DIFF_TOLERANCE_MMHG ) ) || - ( getTestConfigStatus( TEST_CONFIG_ENABLE_WET_CARTRIDGE_USE ) != TRUE ) ) + if ( ( arterialDecayDiff < ARTERIAL_DECAY_PRESSURE_DIFF_TOLERANCE_MMHG ) && + ( venousDecayDiff < VENOUS_DECAY_PRESSURE_DIFF_TOLERANCE_MMHG ) ) { decayedArterialPressure = arterialPressure; decayedVenousPressure = venousPressure; @@ -1412,9 +1337,8 @@ arterialStabilityDiff = fabs( getFilteredArterialPressure() - decayedArterialPressure ); venousStabilityDiff = fabs( getFilteredVenousPressure() - decayedVenousPressure ); - if ( ( ( arterialStabilityDiff < ARTERIAL_STABILITY_PRESSURE_DIFF_TOLERANCE_MMHG ) && - ( venousStabilityDiff < VENOUS_STABILITY_PRESSURE_DIFF_TOLERANCE_MMHG ) ) || - ( getTestConfigStatus( TEST_CONFIG_ENABLE_WET_CARTRIDGE_USE ) != TRUE ) ) + if ( ( arterialStabilityDiff < ARTERIAL_STABILITY_PRESSURE_DIFF_TOLERANCE_MMHG ) && + ( venousStabilityDiff < VENOUS_STABILITY_PRESSURE_DIFF_TOLERANCE_MMHG ) ) { pressureSelfTestNormalizedStartTime = getMSTimerCount(); setValvePosition( VBV, VALVE_POSITION_B_OPEN ); @@ -1451,34 +1375,15 @@ F32 arterialPressureDiff = fabs( getFilteredArterialPressure() - previousNormalArterialPressure ); F32 venousPressureDiff = fabs( getFilteredVenousPressure() - previousNormalVenousPressure ); -#ifndef _RELEASE_ - if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_AIR_PUMP ) ) + // open air trap after time threshold. + if ( TRUE == didTimeout( pressureSelfTestNormalizedStartTime, NORMALIZED_PRESSURE_SELF_TEST_VBT_TIMER ) ) { - // open VDI to Pos A after timer threshold - if ( TRUE == didTimeout( pressureSelfTestNormalizedStartTime, NORMALIZED_PRESSURE_SELF_TEST_VDI_TIMER ) ) - { - setValvePosition( VDI, VALVE_POSITION_A_INSERT_EJECT ); - } - // open air trap after time threshold. - if ( TRUE == didTimeout( pressureSelfTestNormalizedStartTime, NORMALIZED_PRESSURE_SELF_TEST_VBT_TIMERX ) ) - { - setValveAirTrap( STATE_OPEN ); - } + setValveAirTrap( STATE_OPEN ); } - else -#endif - { - // open air trap after time threshold. - if ( TRUE == didTimeout( pressureSelfTestNormalizedStartTime, NORMALIZED_PRESSURE_SELF_TEST_VBT_TIMER ) ) - { - setValveAirTrap( STATE_OPEN ); - } - } // After VBT opened, start looking to see if pressures normalize - if ( ( ( STATE_OPEN == getValveAirTrapStatus() ) && ( arterialPressureDiff <= NORMAL_PRESSURE_DIFF_TOLERANCE_MMHG ) && - ( venousPressureDiff <= NORMAL_PRESSURE_DIFF_TOLERANCE_MMHG ) ) || - ( getTestConfigStatus( TEST_CONFIG_ENABLE_WET_CARTRIDGE_USE ) != TRUE ) ) + if ( ( STATE_OPEN == getValveAirTrapStatus() ) && ( arterialPressureDiff <= NORMAL_PRESSURE_DIFF_TOLERANCE_MMHG ) && + ( venousPressureDiff <= NORMAL_PRESSURE_DIFF_TOLERANCE_MMHG ) ) { dryPressureTestsCompleted = TRUE; state = DRY_SELF_TESTS_SYRINGE_PUMP_PRIME_STATE; @@ -1636,25 +1541,15 @@ selfTestsResumeRequested = FALSE; selfTestCartridgeSettleTime = getMSTimerCount(); -#ifndef _RELEASE_ - if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_DRY_SELF_TESTS ) ) + if ( TRUE == dryPressureTestsCompleted ) { doorClosedRequired( TRUE, TRUE ); state = DRY_SELF_TESTS_SYRINGE_PUMP_PRIME_STATE; } else -#endif - { // if we've completed pressure testing, resume to syringe pump prime state, otherwise go back to start of dry self-tests - if ( TRUE == dryPressureTestsCompleted ) - { - doorClosedRequired( TRUE, TRUE ); - state = DRY_SELF_TESTS_SYRINGE_PUMP_PRIME_STATE; - } - else - { - doorClosedRequired( FALSE, TRUE ); - state = DRY_SELF_TESTS_START_STATE; - } + { + doorClosedRequired( FALSE, TRUE ); + state = DRY_SELF_TESTS_START_STATE; } }