Index: firmware/App/Controllers/Ejector.c =================================================================== diff -u -r227548b4738d7f83d2e830e73dbad8a5609f1b48 -rb0ae8e670f18913bf88da41394ac28b111d184ea --- firmware/App/Controllers/Ejector.c (.../Ejector.c) (revision 227548b4738d7f83d2e830e73dbad8a5609f1b48) +++ firmware/App/Controllers/Ejector.c (.../Ejector.c) (revision b0ae8e670f18913bf88da41394ac28b111d184ea) @@ -178,12 +178,12 @@ /*********************************************************************//** * @brief - * The abortEjector function requests an ejector abort operation. + * The abortEjectorOperation function requests an ejector abort operation. * @details \b Inputs: none * @details \b Outputs: ejectorAbortRequested * @return none *************************************************************************/ -void abortEjector( void ) +void abortEjectorOperation( void ) { setEjectorMotorSpeed( EJECTOR_OFF_MOTOR_SPEED_RPM ); // Set the flag to TRUE regardless of where the ejector is at @@ -212,6 +212,12 @@ *************************************************************************/ void execEjectorController( void ) { + if ( TRUE == ejectorAbortRequested ) + { + // If abort has been called, set it to abort state no matter where we are at. + currentEjectorState = EJECTOR_STATE_ABORT; + } + switch( currentEjectorState ) { case EJECTOR_STATE_INIT: @@ -255,12 +261,6 @@ break; } - if ( TRUE == ejectorAbortRequested ) - { - // If abort has been called, set it to abort state no matter where we are at. - currentEjectorState = EJECTOR_STATE_ABORT; - } - // reset request flags after processing ejector control state machine (they expire) resetEjectorFlags(); @@ -443,10 +443,25 @@ return state; } +/*********************************************************************//** + * @brief + * The handleEjectorAbortState function handles the abort state of the + * ejector control state machine. + * @details \b Inputs: ejectorOperationTimerCounter, ejectorHomeRequested + * @details \b Outputs: ejectorOperationTimerCounter + * @return next state of the ejector control state machine + *************************************************************************/ static EJECTOR_STATE_T handleEjectorAbortState( void ) { EJECTOR_STATE_T state = EJECTOR_STATE_ABORT; + if ( TRUE == ejectorHomeRequested ) + { + ejectorOperationTimerCounter = 0; + setEjectorMotorSpeed( EJECTOR_RETRACT_MOTOR_SPEED_RPM ); + state = EJECTOR_STATE_HOMING; + } + return state; } Index: firmware/App/Controllers/Ejector.h =================================================================== diff -u -r8749beb3f7bed2f9d7fcd2c6916496ea300d9f9d -rb0ae8e670f18913bf88da41394ac28b111d184ea --- firmware/App/Controllers/Ejector.h (.../Ejector.h) (revision 8749beb3f7bed2f9d7fcd2c6916496ea300d9f9d) +++ firmware/App/Controllers/Ejector.h (.../Ejector.h) (revision b0ae8e670f18913bf88da41394ac28b111d184ea) @@ -65,7 +65,7 @@ BOOL homeEjector( void ); BOOL retractEjector( void ); BOOL extendEjector( void ); -void abortEjector( void ); +void abortEjectorOperation( void ); BOOL testEjectorDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testEjectorCommand( MESSAGE_T *message ); Index: firmware/App/Modes/ModeFault.c =================================================================== diff -u -r8749beb3f7bed2f9d7fcd2c6916496ea300d9f9d -rb0ae8e670f18913bf88da41394ac28b111d184ea --- firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 8749beb3f7bed2f9d7fcd2c6916496ea300d9f9d) +++ firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision b0ae8e670f18913bf88da41394ac28b111d184ea) @@ -169,7 +169,7 @@ setValvePosition( H19_VALV, VALVE_POSITION_C_CLOSE ); set3WayValveState( H13_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); set3WayValveState( H20_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); - abortEjector(); + abortEjectorOperation(); // stopSyringePump(); break; @@ -180,7 +180,7 @@ setValvePosition( H19_VALV, VALVE_POSITION_C_CLOSE ); set3WayValveState( H13_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); set3WayValveState( H20_VALV, VALVE_3WAY_COMMON_TO_CLOSED_STATE ); - abortEjector(); + abortEjectorOperation(); // stopSyringePump(); break; Index: firmware/App/Modes/StateTxPaused.c =================================================================== diff -u -r8749beb3f7bed2f9d7fcd2c6916496ea300d9f9d -rb0ae8e670f18913bf88da41394ac28b111d184ea --- firmware/App/Modes/StateTxPaused.c (.../StateTxPaused.c) (revision 8749beb3f7bed2f9d7fcd2c6916496ea300d9f9d) +++ firmware/App/Modes/StateTxPaused.c (.../StateTxPaused.c) (revision b0ae8e670f18913bf88da41394ac28b111d184ea) @@ -408,7 +408,7 @@ cmdBypassDialyzer( TRUE ); cmdChangeQd( targetDialysateFlowMLPM ); cmdChangeQuf( 0.0F ); - doorClosedRequired( FALSE ); + doorClosedRequired( TRUE ); } break;