Index: firmware/App/Modes/ModePreTreat.c =================================================================== diff -u -r29e42a928fa5f7498734dc0c95508ad1dde42d25 -r5aa849db64ae79141d3c2dafc3f389761f3fe209 --- firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 29e42a928fa5f7498734dc0c95508ad1dde42d25) +++ firmware/App/Modes/ModePreTreat.c (.../ModePreTreat.c) (revision 5aa849db64ae79141d3c2dafc3f389761f3fe209) @@ -826,6 +826,7 @@ { submodeCompleteTransitionTimeCounter = 0; state = HD_PRE_TREATMENT_CART_INSTALL_STATE; + doorOpened = FALSE; setCurrentSubState( NO_SUB_STATE ); transitionToCartridgeInstallation(); } @@ -853,6 +854,8 @@ } #endif + handleDoorCloseAfterCartridgeInsertion(); // want to pinch off saline once door closed after cartridge install + if ( TRUE == confirmInstallRequested ) { confirmInstallRequested = FALSE; Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -rffaf9f13166d7a9beb4252fad804c488f870aaaa -r5aa849db64ae79141d3c2dafc3f389761f3fe209 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision ffaf9f13166d7a9beb4252fad804c488f870aaaa) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 5aa849db64ae79141d3c2dafc3f389761f3fe209) @@ -127,8 +127,9 @@ static U32 syringeOcclusionDelayStartTime; ///< Used to calculate the 1 second delay time before check for prime occlusion. static BOOL useHeparin; ///< Flag indicates the user of heparin. - static BOOL selfTestsResumeRequested; ///< Flag indicates user requesting self-tests resume. +static BOOL cartridgeUsedTestRun; ///< Flag indicates whether the used cartridge test has been run. +static BOOL doorStateAfterCartridgeInstall; ///< Flag indicates state of front door for saline clamp check after cartridge installed. // ********** private function prototypes ********** @@ -184,6 +185,7 @@ selfTestStartTime = 0; selfTestPreviousPublishDataTime = 0; syringeOcclusionDelayStartTime = 0; + doorStateAfterCartridgeInstall = TRUE; } /*********************************************************************//** @@ -417,6 +419,7 @@ previousNormalArterialPressure = 0.0; previousNormalVenousPressure = 0.0; dryPressureTestsCompleted = FALSE; + cartridgeUsedTestRun = FALSE; selfTestStartTime = getMSTimerCount(); selfTestPreviousPublishDataTime = getMSTimerCount(); selfTestCartridgeSettleTime = getMSTimerCount(); @@ -432,7 +435,7 @@ setValveAirTrap( STATE_CLOSED ); setValvePosition( VDI, VALVE_POSITION_A_INSERT_EJECT ); setValvePosition( VDO, VALVE_POSITION_A_INSERT_EJECT ); - setValvePosition( VBA, VALVE_POSITION_A_INSERT_EJECT ); + setValvePosition( VBA, VALVE_POSITION_B_OPEN ); setValvePosition( VBV, VALVE_POSITION_A_INSERT_EJECT ); resetSelfTestsFlags(); @@ -930,6 +933,8 @@ DRY_SELF_TESTS_STATE_T state = DRY_SELF_TESTS_START_STATE; OPN_CLS_STATE_T pumpTrack = getSwitchStatus( PUMP_TRACK_SWITCH ); + handleDoorCloseAfterCartridgeInsertion(); // want to pinch off saline once door closed after cartridge install + if ( STATE_CLOSED == pumpTrack ) { // Ensure occlusion sensor has time to settle after cartridge insertion before starting dry self-tests @@ -975,7 +980,7 @@ state = DRY_SELF_TESTS_USED_CARTRIDGE_CHECK_STATE; setValvePosition( VDI, VALVE_POSITION_C_CLOSE ); setValvePosition( VDO, VALVE_POSITION_C_CLOSE ); - setValvePosition( VBA, VALVE_POSITION_C_CLOSE ); + setValvePosition( VBA, VALVE_POSITION_B_OPEN ); setValvePosition( VBV, VALVE_POSITION_C_CLOSE ); } @@ -1015,6 +1020,7 @@ { // If either of the test configurations are set go to loaded check state = DRY_SELF_TESTS_CARTRIDGE_LOADED_CHECK_STATE; + cartridgeUsedTestRun = TRUE; } else { @@ -1528,7 +1534,15 @@ else { doorClosedRequired( FALSE, TRUE ); - state = DRY_SELF_TESTS_START_STATE; + setValvePosition( VBA, VALVE_POSITION_B_OPEN ); + if ( TRUE == cartridgeUsedTestRun ) + { + state = DRY_SELF_TESTS_CARTRIDGE_LOADED_CHECK_STATE; + } + else + { + state = DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE; + } } } @@ -2019,4 +2033,29 @@ return state; } +/*********************************************************************//** + * @brief + * The handleDoorCloseAfterCartridgeInsertion function handles the check + * for door close after cartridge install so that saline line can be pinched. + * @details Inputs: door and latch states, doorStateAfterCartridgeInstall + * @details Outputs: doorStateAfterCartridgeInstall + * @return none + *************************************************************************/ +void handleDoorCloseAfterCartridgeInsertion( void ) +{ + OPN_CLS_STATE_T frontDoor = getSwitchStatus( FRONT_DOOR ); + OPN_CLS_STATE_T pumpTrack = getSwitchStatus( PUMP_TRACK_SWITCH ); + + if ( ( STATE_OPEN == frontDoor ) && ( TRUE == doorStateAfterCartridgeInstall ) ) + { + doorStateAfterCartridgeInstall = FALSE; + } + // when transitioning from door open to door closed, pinch off saline bag to prevent saline from running up the line + if ( ( STATE_CLOSED == frontDoor ) && ( STATE_CLOSED == pumpTrack ) && ( FALSE == doorStateAfterCartridgeInstall ) ) + { + setValvePosition( VBA, VALVE_POSITION_B_OPEN ); + doorStateAfterCartridgeInstall = TRUE; + } +} + /**@}*/ Index: firmware/App/Modes/SelfTests.h =================================================================== diff -u -r0a4dcd288d4347b85baaa0b07da568b6add5eac7 -r5aa849db64ae79141d3c2dafc3f389761f3fe209 --- firmware/App/Modes/SelfTests.h (.../SelfTests.h) (revision 0a4dcd288d4347b85baaa0b07da568b6add5eac7) +++ firmware/App/Modes/SelfTests.h (.../SelfTests.h) (revision 5aa849db64ae79141d3c2dafc3f389761f3fe209) @@ -64,6 +64,8 @@ BOOL isWetSelfTestsPassed( void ); U32 getWetSelfTestState( void ); +void handleDoorCloseAfterCartridgeInsertion( void ); + /**@}*/ #endif