Index: firmware/App/Modes/SelfTests.c =================================================================== diff -u -r427b37ad929a8d88b5fcb9ae21a4f4146ffd2fef -rfae0fd5e204f9e2bfe8084b5e02a5e0a9def1160 --- firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision 427b37ad929a8d88b5fcb9ae21a4f4146ffd2fef) +++ firmware/App/Modes/SelfTests.c (.../SelfTests.c) (revision fae0fd5e204f9e2bfe8084b5e02a5e0a9def1160) @@ -7,8 +7,8 @@ * * @file SelfTests.c * -* @author (last) Michael Garthwaite -* @date (last) 28-Oct-2022 +* @author (last) Darren Cox +* @date (last) 08-Nov-2022 * * @author (original) Quang Nguyen * @date (original) 28-Jan-2021 @@ -755,16 +755,26 @@ static NO_CART_SELF_TESTS_STATE_T handleNoCartSelfTestHomeSyringePumpState( void ) { NO_CART_SELF_TESTS_STATE_T state = NO_CART_SELF_TESTS_HOME_SYRINGE_PUMP_STATE; + BOOL syringeHome = isSyringePumpHome(); + BOOL syringeStopped = isSyringePumpStopped(); + BOOL syringePreload = isSyringePumpPreLoaded(); if ( TRUE == useHeparin ) { - if ( ( isSyringePumpHome() != TRUE ) && ( TRUE == isSyringePumpStopped() ) ) + if ( ( TRUE != syringeHome ) && ( TRUE == syringeStopped ) && ( FALSE == syringePreload ) ) { retractSyringePump(); } + else if ( ( TRUE == syringeHome ) && ( TRUE == syringeStopped ) && ( FALSE == syringePreload ) ) + { + preloadSyringePlunger(); + } + else if ( TRUE == syringePreload ) + { + state = NO_CART_SELF_TESTS_PUMPS_STATE; + } } - - if ( ( TRUE != useHeparin ) || ( TRUE == isSyringePumpHome() ) ) + else { state = NO_CART_SELF_TESTS_PUMPS_STATE; } @@ -1306,13 +1316,13 @@ } else { - if ( TRUE == isSyringePumpHome() ) + if ( TRUE == isSyringePumpPreLoaded() ) { seekSyringePlunger(); } else { - retractSyringePump(); + SET_ALARM_WITH_1_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, (U32)SW_FAULT_ID_HD_SYRINGE_NOT_PRELOADED ) } } }