From 38113518c8a525185df99ccad711184e973c1ccf Mon Sep 17 00:00:00 2001 From: Jacob Hageman Date: Mon, 11 Jan 2021 13:03:54 -0500 Subject: [PATCH] Fix #793, Clarify restart/reload app behavior --- docs/src/cfe_es.dox | 24 +++++++++++++++--------- fsw/cfe-core/src/inc/cfe_es.h | 29 ++++++++++++++++++++++++----- fsw/cfe-core/src/inc/cfe_es_msg.h | 15 ++++++++++----- 3 files changed, 49 insertions(+), 19 deletions(-) diff --git a/docs/src/cfe_es.dox b/docs/src/cfe_es.dox index b08bf4073..01f829c52 100644 --- a/docs/src/cfe_es.dox +++ b/docs/src/cfe_es.dox @@ -366,9 +366,16 @@ /** \page cfeesugapprestart Restarting an Application - The #CFE_ES_RESTART_APP_CC command is used to restart an application. - This command stops and restarts an application using the parameters - defined when the application was originally started, either through + The #CFE_ES_RESTART_APP_CC command is used to restart an application + using the same file name as the last start. + + This command checks for file existence, the application is running, + and the application is not a core app. If valid, the application restart + is requested. + + When requested, ES stops the application, unloads the object file, loads the object file + using the previous file name, and restarts an application using the parameters + defined when the application was previously started, either through the startup script or by way of the #CFE_ES_START_APP_CC command. Next: \ref cfeesugappreload
@@ -379,12 +386,11 @@ /** \page cfeesugappreload Reloading an Application - The #CFE_ES_RELOAD_APP_CC command is used to reload an application. - This command stops the application, unloads the object file, loads - the new object file specified in the command and starts the application - again using the parameters defined when the application was originally - started, either through the startup script or by way of the - #CFE_ES_START_APP_CC command. + The #CFE_ES_RELOAD_APP_CC command is used to reload an application + using a new file name. + + This command performes + the same actions as #CFE_ES_RESTART_APP_CC only using the new file. Next: \ref cfeesugapplist
Prev: \ref cfeesugapprestart
diff --git a/fsw/cfe-core/src/inc/cfe_es.h b/fsw/cfe-core/src/inc/cfe_es.h index b42457ac6..5374bfd97 100644 --- a/fsw/cfe-core/src/inc/cfe_es.h +++ b/fsw/cfe-core/src/inc/cfe_es.h @@ -359,10 +359,23 @@ CFE_Status_t CFE_ES_ResetCFE(uint32 ResetType); ** \brief Restart a single cFE Application ** ** \par Description -** This API causes a cFE Application to be stopped and restarted. +** This API causes a cFE Application to be unloaded and restarted +** from the same file name as the last start. ** ** \par Assumptions, External Events, and Notes: -** None +** The filename is checked for existance prior to load. A missing file +** will be reported and the reload operation will be aborted prior +** to unloading the app. +** +** Goes through the standard CFE_ES_CleanUpApp which unloads, +** then attempts a load using the original file name. +** +** In the event that an application cannot be reloaded due to a +** missing file or any other load issue, the application may no longer be +** restarted or reloaded when given a valid load file (the app has been +** deleted and no longer exists). To recover, the application +** may be started by loading the application via the ES_STARTAPP +** command (#CFE_ES_START_APP_CC). ** ** \param[in] AppID Identifies the application to be reset. ** @@ -382,11 +395,17 @@ CFE_Status_t CFE_ES_RestartApp(CFE_ES_ResourceID_t AppID); ** the specified file. ** ** \par Assumptions, External Events, and Notes: -** The specified application will be deleted before it is reloaded from the -** specified file. In the event that an application cannot be reloaded due to +** The filename is checked for existance prior to load. A missing file +** will be reported and the reload operation will be aborted prior +** to unloading the app. +** +** Goes through the standard CFE_ES_CleanUpApp which unloads, +** then attempts a load using the specified file name. +** +** In the event that an application cannot be reloaded due to ** a corrupt file, the application may no longer be reloaded when given a valid ** load file (it has been deleted and no longer exists). To recover, the -** application may be restarted by loading the application via the ES_STARTAPP +** application may be started by loading the application via the ES_STARTAPP ** command (#CFE_ES_START_APP_CC). ** ** \param[in] AppID Identifies the application to be reset. diff --git a/fsw/cfe-core/src/inc/cfe_es_msg.h b/fsw/cfe-core/src/inc/cfe_es_msg.h index 7748b52df..28488fc44 100644 --- a/fsw/cfe-core/src/inc/cfe_es_msg.h +++ b/fsw/cfe-core/src/inc/cfe_es_msg.h @@ -267,12 +267,15 @@ */ #define CFE_ES_STOP_APP_CC 5 -/** \cfeescmd Stops and Restarts an Application +/** \cfeescmd Stops, Unloads, Loads using the previous File name, and Restarts an Application ** ** \par Description -** This command halts and restarts the specified Application. -** This command does \b NOT reload the application from the onboard -** filesystem. +** This command halts and removes the specified Application +** from the system. Then it immediately loads the Application from +** the same filename last used to start. This command is +** especially useful for restarting a Command Ingest Application +** since once it has been stopped, no further commands can come in +** to restart it. ** ** \cfecmdmnemonic \ES_RESTARTAPP ** @@ -291,6 +294,7 @@ ** \par Error Conditions ** This command may fail for the following reason(s): ** - The command packet length is incorrect +** - The original file is missing ** - The specified application name is not recognized as an active application ** - The specified application is one of the cFE's Core applications (ES, EVS, SB, TBL, TIME) ** @@ -310,7 +314,7 @@ */ #define CFE_ES_RESTART_APP_CC 6 -/** \cfeescmd Stops, Unloads, Loads from a File and Restarts an Application +/** \cfeescmd Stops, Unloads, Loads from the command specfied File and Restarts an Application ** ** \par Description ** This command halts and removes the specified Application @@ -337,6 +341,7 @@ ** \par Error Conditions ** This command may fail for the following reason(s): ** - The command packet length is incorrect +** - The reload file is missing ** - The specified application name is not recognized as an active application ** - The specified application is one of the cFE's Core applications (ES, EVS, SB, TBL, TIME) **