Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r12708a04ae3365e11180182fc52d005c229a7bc6 -rc1e2dfcd544f59788ad1a58e1e8339a475ba4266 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 12708a04ae3365e11180182fc52d005c229a7bc6) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision c1e2dfcd544f59788ad1a58e1e8339a475ba4266) @@ -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,7 +1005,7 @@ *************************************************************************/ 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) @@ -1035,18 +1018,17 @@ } else { -#ifndef _RELEASE_ - if ( getSoftwareConfigStatus( SW_CONFIG_ENABLE_WORN_OUT_CARTRIDGE ) != SW_CONFIG_ENABLE_VALUE ) -#endif + if ( ( TRUE == getTestConfigStatus( TEST_CONFIG_USE_WORN_CARTRIDGE ) ) || ( TRUE == getTestConfigStatus( TEST_CONFIG_USE_WET_CARTRIDGE ) ) ) { - 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_USE_WORN_CARTRIDGE ) != TRUE ) && ( getTestConfigStatus( TEST_CONFIG_USE_WET_CARTRIDGE ) != 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() ) @@ -1079,6 +1061,12 @@ setValveAirTrap( STATE_OPEN ); pressureSelfTestPreNormalStartTime = getMSTimerCount(); state = DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_SETUP_STATE; + + if ( TRUE == getTestConfigStatus( TEST_CONFIG_USE_WORN_CARTRIDGE ) ) + { + dryPressureTestsCompleted = TRUE; + state = DRY_SELF_TESTS_SYRINGE_PUMP_PRIME_STATE; + } } if ( TRUE == doesAlarmStatusIndicateStop() ) @@ -1109,47 +1097,22 @@ } else { -#ifndef _RELEASE_ - if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_DISABLE_AIR_PUMP ) ) - { + 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(); - // 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 ) ) + // 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 ) ) { - if ( TRUE == didTimeout( pressureSelfTestPreNormalStartTime, PRE_NORMAL_PRESSURE_SELF_TEST_DELAY_MS ) ) - { - previousNormalArterialPressure = getFilteredArterialPressure(); - previousNormalVenousPressure = getFilteredVenousPressure(); - state = DRY_SELF_TESTS_PRESSURE_SENSORS_VENOUS_SETUP_STATE; - - // 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 ); - } - } + 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 ) ) - { - 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; } } - } return state; @@ -1174,34 +1137,12 @@ } 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(); } @@ -1219,23 +1160,12 @@ static DRY_SELF_TESTS_STATE_T handleDrySelfTestPressureSensorsVenousState( void ) { DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_PRESSURE_SENSORS_VENOUS; - F32 const venousPressure = getFilteredVenousPressure(); + F32 venousPressure = getFilteredVenousPressure(); // End the test when reaching target pressure or time out 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; } @@ -1298,8 +1228,8 @@ static DRY_SELF_TESTS_STATE_T handleDrySelfTestPressureSensorsArterialState( void ) { DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_PRESSURE_SENSORS_ARTERIAL; - F32 const arterialPressure = getFilteredArterialPressure(); - F32 const venousPressure = getFilteredVenousPressure(); + F32 arterialPressure = getFilteredArterialPressure(); + F32 venousPressure = getFilteredVenousPressure(); // End the test when reaching target pressure or time out // Test pass when reading positive arterial pressure and negative venous pressure @@ -1342,10 +1272,10 @@ static DRY_SELF_TESTS_STATE_T handleDrySelfTestPressureSensorsDecayState( void ) { DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_PRESSURE_SENSORS_DECAY_STATE; - F32 const arterialPressure = getFilteredArterialPressure(); - F32 const venousPressure = getFilteredVenousPressure(); - F32 arterialDecayDiff = 0; - F32 venousDecayDiff = 0; + F32 arterialPressure = getFilteredArterialPressure(); + F32 venousPressure = getFilteredVenousPressure(); + F32 arterialDecayDiff = 0.0F; + F32 venousDecayDiff = 0.0F; // update peak pressure value from pressurized state // if pressure continues to increase due to filter lag. @@ -1359,13 +1289,13 @@ peakVenousPressure = venousPressure; } - if ( ( TRUE == didTimeout( pressureSelfTestDecayStartTime, DECAY_PRESSURE_SELF_TEST_TIME ) ) ) + if ( TRUE == didTimeout( pressureSelfTestDecayStartTime, DECAY_PRESSURE_SELF_TEST_TIME ) ) { arterialDecayDiff = fabs( arterialPressure - peakArterialPressure ); venousDecayDiff = fabs( venousPressure - peakVenousPressure ); if ( ( arterialDecayDiff < ARTERIAL_DECAY_PRESSURE_DIFF_TOLERANCE_MMHG ) && - ( venousDecayDiff < VENOUS_DECAY_PRESSURE_DIFF_TOLERANCE_MMHG ) ) + ( venousDecayDiff < VENOUS_DECAY_PRESSURE_DIFF_TOLERANCE_MMHG ) ) { decayedArterialPressure = arterialPressure; decayedVenousPressure = venousPressure; @@ -1399,8 +1329,8 @@ static DRY_SELF_TESTS_STATE_T handleDrySelfTestPressureSensorsStabilityState( void ) { DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_PRESSURE_SENSORS_STABILITY_STATE; - F32 arterialStabilityDiff = 0; - F32 venousStabilityDiff = 0; + F32 arterialStabilityDiff = 0.0F; + F32 venousStabilityDiff = 0.0F; if ( ( TRUE == didTimeout( pressureSelfTestStabilityStartTime, STABILTY_PRESSURE_SELF_TEST_TIME ) ) ) { @@ -1442,36 +1372,18 @@ { DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_STATE; - F32 const arterialPressureDiff = fabs( getFilteredArterialPressure() - previousNormalArterialPressure ); - F32 const venousPressureDiff = fabs( getFilteredVenousPressure() - previousNormalVenousPressure ); + 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 ) ) + 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; @@ -1629,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; } }