Index: firmware/App/Services/StateServices/TubeSetAutoEject.c =================================================================== diff -u -r3f53d4aaf8840366306a6143eda9abf1a763bb73 -r26b65c70eca7d767f27a5cbbbd67a543ff9b5f26 --- firmware/App/Services/StateServices/TubeSetAutoEject.c (.../TubeSetAutoEject.c) (revision 3f53d4aaf8840366306a6143eda9abf1a763bb73) +++ firmware/App/Services/StateServices/TubeSetAutoEject.c (.../TubeSetAutoEject.c) (revision 26b65c70eca7d767f27a5cbbbd67a543ff9b5f26) @@ -40,7 +40,6 @@ static BOOL autoEjectReqReceived; ///< Flag indicating that user confirmed to eject tubeset static U32 autoEjectTimerCounter; ///< Timer counter shared across all auto-eject states -static BOOL ejectComplete; ///< True once the service has finished successfully static TUBE_SET_AUTO_EJECT_STATE_T currentAutoEjectState; ///< Current Tube Set Auto Eject state @@ -51,6 +50,7 @@ static TUBE_SET_AUTO_EJECT_STATE_T handleAutoEjectExtendingEjectorState( void ); static TUBE_SET_AUTO_EJECT_STATE_T handleAutoEjectEjectingState( void ); static TUBE_SET_AUTO_EJECT_STATE_T handleAutoEjectRetractingEjectorState( void ); +static TUBE_SET_AUTO_EJECT_STATE_T handleAutoEjectCompleteState( void ); /*********************************************************************//** * @brief @@ -65,48 +65,48 @@ currentAutoEjectState = TUBE_SET_AUTO_EJECT_STATE_AWAIT_CONFIRMATION; autoEjectReqReceived = FALSE; autoEjectTimerCounter = 0; - ejectComplete = FALSE; } /*********************************************************************//** * @brief * The execTubeSetEject function executes the Tube Set Eject * state machine. * @details Inputs: currentAutoEjectState - * @details Outputs: currentAutoEjectState, ejectComplete. Advances the + * @details Outputs: currentAutoEjectState. Advances the * Tube Set Eject sub-state * @return none *************************************************************************/ void execTubeSetAutoEject( void ) { - if( FALSE == ejectComplete ) + switch ( currentAutoEjectState ) { - switch ( currentAutoEjectState ) - { - case TUBE_SET_AUTO_EJECT_STATE_AWAIT_CONFIRMATION: - currentAutoEjectState = handleAutoEjectAwaitConfirmState(); - break; + case TUBE_SET_AUTO_EJECT_STATE_AWAIT_CONFIRMATION: + currentAutoEjectState = handleAutoEjectAwaitConfirmState(); + break; - case TUBE_SET_AUTO_EJECT_STATE_HOMING: - currentAutoEjectState = handleAutoEjectHomingState(); - break; + case TUBE_SET_AUTO_EJECT_STATE_HOMING: + currentAutoEjectState = handleAutoEjectHomingState(); + break; - case TUBE_SET_AUTO_EJECT_STATE_EXTENDING_EJECTOR: - currentAutoEjectState = handleAutoEjectExtendingEjectorState(); - break; + case TUBE_SET_AUTO_EJECT_STATE_EXTENDING_EJECTOR: + currentAutoEjectState = handleAutoEjectExtendingEjectorState(); + break; - case TUBE_SET_AUTO_EJECT_STATE_EJECTING: - currentAutoEjectState = handleAutoEjectEjectingState(); - break; + case TUBE_SET_AUTO_EJECT_STATE_EJECTING: + currentAutoEjectState = handleAutoEjectEjectingState(); + break; - case TUBE_SET_AUTO_EJECT_STATE_RETRACTING_EJECTOR: - currentAutoEjectState = handleAutoEjectRetractingEjectorState(); - break; + case TUBE_SET_AUTO_EJECT_STATE_RETRACTING_EJECTOR: + currentAutoEjectState = handleAutoEjectRetractingEjectorState(); + break; - default: - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_POST_TX_AUTO_EJECT_INVALID_STATE, (U32)currentAutoEjectState ); - break; - } + case TUBE_SET_AUTO_EJECT_STATE_COMPLETE: + currentAutoEjectState = handleAutoEjectCompleteState(); + break; + + default: + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_MODE_POST_TX_AUTO_EJECT_INVALID_STATE, (U32)currentAutoEjectState ); + break; } } @@ -225,7 +225,7 @@ * Retracting Ejector state of the Tube Set Eject state * machine. Retracts the ejector pin (H5) after the tubeset has been ejected. * @details Inputs: autoEjectTimerCounter, getEjectorState() - * @details Outputs: autoEjectTimerCounter, ejectComplete + * @details Outputs: autoEjectTimerCounter * @return next Auto-Eject state *************************************************************************/ static TUBE_SET_AUTO_EJECT_STATE_T handleAutoEjectRetractingEjectorState( void ) @@ -239,7 +239,6 @@ else if ( EJECTOR_STATE_RETRACTED == getEjectorState() ) { autoEjectTimerCounter = 0; - ejectComplete = TRUE; state = NUM_OF_TUBE_SET_AUTO_EJECT_SUB_STATES; } @@ -248,16 +247,29 @@ /*********************************************************************//** * @brief + * The handleAutoEjectCompleteState function handles the Complete state of + * the Tube Set Eject state machine. + * @details Inputs: none + * @details Outputs: none + * @return Auto-Eject complete state + *************************************************************************/ +static TUBE_SET_AUTO_EJECT_STATE_T handleAutoEjectCompleteState( void ) +{ + return TUBE_SET_AUTO_EJECT_STATE_COMPLETE; +} + +/*********************************************************************//** + * @brief * The isTubeSetEjectComplete function reports whether the eject * service has finished successfully. - * @details \b Inputs: ejectComplete + * @details \b Inputs: none * @details \b Outputs: none * @return TRUE if auto-eject completed and ejector is retracted, * FALSE otherwise. *************************************************************************/ BOOL isTubeSetAutoEjectComplete( void ) { - return ejectComplete; + return ( TUBE_SET_INSTALL_STATE_COMPLETE == currentAutoEjectState ? TRUE : FALSE ); } /*********************************************************************//**