Index: firmware/App/Controllers/SyringePump.c =================================================================== diff -u -rfeb0cd09c472099121146674f89fe88c1445c4d0 -r3b4158ff08e5116996f07bb2a670630119e440fc --- firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision feb0cd09c472099121146674f89fe88c1445c4d0) +++ firmware/App/Controllers/SyringePump.c (.../SyringePump.c) (revision 3b4158ff08e5116996f07bb2a670630119e440fc) @@ -1410,6 +1410,7 @@ syringePumpPlungerFound = FALSE; syringeVolumeAdequate = FALSE; syringePumpPrimeCompleted = FALSE; + syringePumpPreLoadCompleted = FALSE; syringePumpVolumeRequired = 0.0F; // Clear insufficient volume alarm condition in case we're retracting to allow user to resolve alarm clearAlarmCondition( ALARM_ID_HD_SYRINGE_PUMP_NOT_ENOUGH_HEPARIN_ALARM ); Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -read7abbdefe4e5b4899008893804c727110fbc80 -r3b4158ff08e5116996f07bb2a670630119e440fc --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision ead7abbdefe4e5b4899008893804c727110fbc80) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 3b4158ff08e5116996f07bb2a670630119e440fc) @@ -110,6 +110,7 @@ static F32 peakVenousPressure; ///< Holds the peak normal venous pressure reading. static F32 decayedArterialPressure; ///< Holds the decayed arterial pressure reading after blood pump is stopped. static F32 decayedVenousPressure; ///< Holds the decayed venous pressure reading after blood pump is stopped. +static BOOL dryPressureTestsCompleted; ///< Flag indicates dry cartridge pressure leak testing has been completed. static BOOL wetSelfTestsResult; ///< Result of wet self-tests. static WET_SELF_TESTS_STATE_T currentWetSelfTestsState; ///< Current state of the wet self-tests state machine. @@ -395,6 +396,7 @@ pressureSelfTestNormalizedStartTime = 0; previousNormalArterialPressure = 0.0; previousNormalVenousPressure = 0.0; + dryPressureTestsCompleted = FALSE; selfTestStartTime = getMSTimerCount(); selfTestPreviousPublishDataTime = getMSTimerCount(); selfTestCartridgeSettleTime = getMSTimerCount(); @@ -1439,6 +1441,7 @@ 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; } @@ -1501,7 +1504,7 @@ } else { - SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, (U32)SW_FAULT_ID_HD_SYRINGE_NOT_PRELOADED ) + preloadSyringePlunger(); } } } @@ -1573,6 +1576,24 @@ doorClosedRequired( FALSE, FALSE ); + // if not enough heparin alarm, pre-load pusher after retract completes + if ( TRUE == isAlarmActive( ALARM_ID_HD_SYRINGE_PUMP_NOT_ENOUGH_HEPARIN_ALARM ) ) + { // prevent resume until syringe is retracted and pre-loaded + setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, FALSE ); + if ( isSyringePumpRunning() != TRUE ) + { + if ( TRUE == isSyringePumpHome() ) + { + preloadSyringePlunger(); + } + else if ( TRUE == isSyringePumpPreLoaded() ) + { + setAlarmUserActionEnabled( ALARM_USER_ACTION_RESUME, TRUE ); + } + } + } + + // if resume request, resume dry self-tests if ( TRUE == selfTestsResumeRequested ) { // Restart self-test start time @@ -1588,9 +1609,17 @@ } else #endif - { - doorClosedRequired( FALSE, TRUE ); - state = DRY_SELF_TESTS_START_STATE; + { // 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; + } } } Index: firmware/App/Services/AlarmMgmtSWFaults.h =================================================================== diff -u -rf760ffc4b10556e5186e9ceb90294262063440ca -r3b4158ff08e5116996f07bb2a670630119e440fc --- firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision f760ffc4b10556e5186e9ceb90294262063440ca) +++ firmware/App/Services/AlarmMgmtSWFaults.h (.../AlarmMgmtSWFaults.h) (revision 3b4158ff08e5116996f07bb2a670630119e440fc) @@ -175,7 +175,7 @@ SW_FAULT_ID_BLOOD_LEAK_ENQUEUE_FAILURE, SW_FAULT_ID_BLOOD_LEAK_INVALID_EMB_MODE_CMD_SELECTED, // 145 SW_FAULT_ID_INVALID_FPGA_ERROR_GROUP_SELECTED, - SW_FAULT_ID_HD_SYRINGE_NOT_PRELOADED, + SW_FAULT_ID_____AVAILABLE_1, SW_FAULT_ID_HD_AIR_PUMP_INVALID_STATE, SW_FAULT_ID_HD_AIR_PUMP_INVALID_MOTOR_STATE_SELECTED, SW_FAULT_ID_NVDATA_MANAGEMENT_OPS_TIMEOUT, // 150