Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -rc3cf7af051c1ee070df90a9c072df16be48f478f -r9055124b17389e04131b44c00915c33c72db3ae6 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision c3cf7af051c1ee070df90a9c072df16be48f478f) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 9055124b17389e04131b44c00915c33c72db3ae6) @@ -367,10 +367,6 @@ case DRY_SELF_TESTS_START_STATE: #ifdef SKIP_DRY_SELF_TESTS // TODO: Remove once dry self-test is ready to use - if ( TRUE == useHeparin ) - { - primeSyringePump(); - } currentDrySelfTestsState = DRY_SELF_TESTS_SYRINGE_PUMP_PRIME_STATE; #else currentDrySelfTestsState = DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE; @@ -717,8 +713,15 @@ { NO_CART_SELF_TESTS_STATE_T state = NO_CART_SELF_TESTS_HOME_VALVES_AND_PUMPS_STATE; - if ( ( FALSE == isDialInPumpRunning() ) && ( FALSE == isDialOutPumpRunning() ) && ( FALSE == isBloodPumpRunning() ) ) + // Retry homing syringe pump + if ( ( FALSE == isSyringePumpHome() ) && ( TRUE == isSyringePumpStopped() ) ) { + retractSyringePump(); + } + + if ( ( FALSE == isDialInPumpRunning() ) && ( FALSE == isDialOutPumpRunning() ) && + ( FALSE == isBloodPumpRunning() ) && ( TRUE == isSyringePumpHome() ) ) + { state = NO_CART_SELF_TESTS_COMPLETE_STATE; } @@ -897,10 +900,6 @@ { if ( ( arterialPressureDiff <= NORMAL_PRESSURE_DIFF_TOLERANCE_MMHG ) && ( venousPressureDiff <= NORMAL_PRESSURE_DIFF_TOLERANCE_MMHG ) ) { - if ( TRUE == useHeparin ) - { - primeSyringePump(); - } state = DRY_SELF_TESTS_SYRINGE_PUMP_PRIME_STATE; } else @@ -926,10 +925,21 @@ if ( TRUE == useHeparin ) { - if ( TRUE == isSyringePumpPrimed() ) + if ( TRUE == isSyringePlungerFound() ) { - state = DRY_SELF_TESTS_COMPLETE_STATE; + if ( TRUE == isSyringePumpPrimed() ) + { + state = DRY_SELF_TESTS_COMPLETE_STATE; + } + else + { + primeSyringePump(); + } } + else + { + seekSyringePlunger(); + } } else {