#include <string.h>
#include "compiler.h"
#include "board.h"
#include "shell.h"
#include "sensor.h"
#include "actuator.h"
#include "fscmds.h"
#include "syscmds.h"
#include "supervisor.h"
#include "tracedump.h"
#include "ethernet.h"
#include "usbsys.h"
#include "com1shell.h"
Data Structures | |
struct | st_cmd_registration |
Macros | |
#define | SHELL_FS_FIRSTCMDIDX 9 |
#define | SHELL_FS_LASTCMDIDX 29 |
#define | SHELL_MAX_NBTOKEN 8 |
#define | SHELL_NB_COMMANDS 35 |
Typedefs | |
typedef struct st_cmd_registration | Cmd_registration |
Enumerations | |
enum | eCmdStatus { SHELL_CMDSTATUS_FOUND, SHELL_CMDSTATUS_NOTFOUND, SHELL_CMDSTATUS_PERMISSIONDENIED } |
Functions | |
static eExecStatus | e_Shell_help (eModId xModId, signed short FsNavId, int ac, signed portCHAR *av[], signed portCHAR **ppcStringReply) |
The help command: displays all available commands. Format: help. More... | |
eExecStatus | e_supervisor_switch_to_maintenance_mode (eModId xModId, signed short FsNavId, int ac, signed portCHAR *av[], signed portCHAR **ppcStringReply) |
The switch-to-maintenance-mode command: initiate the process to switch to maintenance mode. Format: maintain. More... | |
static eCmdStatus | prvCmdIdentify_Tokenize (signed portCHAR *pcStringCmd, eModId xModId, portBASE_TYPE *ac, signed portCHAR **av, portBASE_TYPE *pCmdIdx) |
Identify the cmd and tokenize the rest of the command line string. More... | |
eExecStatus | Shell_exec (signed portCHAR *pcStringCmd, eModId xModId, signed short FsNavId, signed portCHAR **ppcStringReply) |
a command line executor. More... | |
void | v_shell_Print_String_To_Requester_Stream (eModId xModId, const signed portCHAR *pcStringToDisplay) |
Print a string directly to the output stream of a module. More... | |
Variables | |
Cmd_registration | a_cmd_registration [SHELL_NB_COMMANDS] |
static portBASE_TYPE | PrevCmdAc |
signed portCHAR * | PrevCmdAv [SHELL_MAX_NBTOKEN] |
static portBASE_TYPE | PrevCmdIdx = -1 |
const signed portCHAR *const | SHELL_ERRMSG_HELP_SYNTAXERROR = (signed portCHAR *)"Error"CRLF"Usage: help [sensor,actuator,sys,fs]"CRLF |
const signed portCHAR *const | SHELL_MSG_CMDNOTFOUND = (signed portCHAR *)"Error"CRLF"Command not found"CRLF |
const signed portCHAR *const | SHELL_MSG_HELP = (signed portCHAR *)"Commands summary"CRLF"help"CRLF"!!: execute the previous command"CRLF |
const signed portCHAR *const | SHELL_MSG_NOHISTORY = (signed portCHAR *)"Error"CRLF"No previous command"CRLF |
const signed portCHAR *const | SHELL_MSG_PERMISSIONDENIED = (signed portCHAR *)"Error"CRLF"Permission denied"CRLF |
const signed portCHAR *const | SHELL_MSG_SYNTAXERROR = (signed portCHAR *)"Error"CRLF"Syntax error"CRLF |
xSemaphoreHandle | xSHELLFSMutex |
#define SHELL_FS_FIRSTCMDIDX 9 |
First file system cmd idx in the a_cmd_registration[] array.
Referenced by Shell_exec().
#define SHELL_FS_LASTCMDIDX 29 |
Last file system cmd idx in the a_cmd_registration[] array.
Referenced by Shell_exec().
#define SHELL_MAX_NBTOKEN 8 |
Brief description of the module. This module is a central point for commands execution.
Detailed description of the module. It proposes only one interface function, Shell_exec(). This function parses a command line string to: 1) identify the command 2) verify that the caller has the right to execute the command 3) tokenize all arguments of the command If the command has been found, and the caller has the right to execute it, the command is executed. The command execution is managed by the target module. Target modules are: sensor, actuator, filesys, supervisor.
The input command line string must have the following format: cmd [arg[=val]], 5 (arg,val) maximum.
Max number of tokens
Referenced by prvCmdIdentify_Tokenize(), and Shell_exec().
#define SHELL_NB_COMMANDS 35 |
Number of registered commands.
Referenced by prvCmdIdentify_Tokenize().
typedef struct st_cmd_registration Cmd_registration |
The type of a command registration entry.
enum eCmdStatus |
|
static |
The help command: displays all available commands. Format: help.
xModId | Input. The module that is calling this exe function. |
FsNavId | Input. The file system navigator id to use if the cmd is a file system command. NOT USED. |
ac | Input. The argument counter. Not considered for this command. |
av | Input. The argument vector. Not considered for this command. |
ppcStringReply | Input/Output. The response string. If Input is NULL, no response string will be output. Else a malloc for the response string is performed here; the caller must free this string. |
References e_actuator_help(), e_fscmds_shell_help(), e_sensor_help(), e_syscmds_help(), NULL, pvPortMalloc(), SHELL_EXECSTATUS_KO, and SHELL_EXECSTATUS_OK.
eExecStatus e_supervisor_switch_to_maintenance_mode | ( | eModId | xModId, |
signed short | FsNavId, | ||
int | ac, | ||
signed portCHAR * | av[], | ||
signed portCHAR ** | ppcStringReply | ||
) |
The switch-to-maintenance-mode command: initiate the process to
switch to maintenance mode. Format: maintain.
xModId | Input. The module that is calling this function. |
FsNavId | Ignored. |
ac | Ignored. |
av | Ignored. |
ppcStringReply | Input/Output. The response string. If Input is NULL, no response string will be output. Else a malloc for the response string is performed here; the caller must free this string. |
References bIsInMaintenance, CRLF, eUserMenuWaitHost, fat_cache_flush(), Is_usb_clock_frozen, Is_usb_detached, NAKED_TRACE_COM2, nav_reset(), NULL, pdTRUE, SHELL_EXECSTATUS_OK, SUPERVISOR_MAINTENANCE_NBMUTEX_TOTAKE, TRACE_COM2, u8CurrentUsbRole, u8IsMaintenanceRequired, Usb_attach, Usb_detach, Usb_unfreeze_clock, vMMI_SetUserMenuMode(), vTaskDelay(), x_supervisor_SemaphoreTake(), and xSemaphoreGive.
Referenced by b_supervisor_switch_to_maintenance_mode(), and e_syscmds_reboot().
|
static |
Identify the cmd and tokenize the rest of the command line string.
pcStringCmd | Input. The cmd line to parse. NULL-terminated string. Format: cmd [arg] [arg=val], with 6 (arg,val) maximum. WARNING: this string will be modified. |
xModId | Input. The module that is requesting the exe of this cmd line. |
ac | Output. Argument count, in [0,SHELL_MAX_NBTOKEN]. |
av | Output. Argument vector, made of SHELL_MAX_NBTOKEN string ptrs maximum. |
pCmdIdx | Output. The index of the command, in one of the cmd array. |
Parse one arg.
References SHELL_CMDSTATUS_FOUND, SHELL_CMDSTATUS_NOTFOUND, SHELL_CMDSTATUS_PERMISSIONDENIED, SHELL_MAX_NBTOKEN, and SHELL_NB_COMMANDS.
Referenced by Shell_exec().
eExecStatus Shell_exec | ( | signed portCHAR * | pcStringCmd, |
eModId | xModId, | ||
signed short | FsNavId, | ||
signed portCHAR ** | ppcStringReply | ||
) |
a command line executor.
pcStringCmd | Input. The cmd line to execute. NULL-terminated string. Format: cmd [arg] [arg=val], with 6 (arg,val) maximum. WARNING: this string will be modified. |
xModId | Input. The module that is calling this exe function. |
FsNavId | Input. The file system navigator id to use if the cmd is a file system command. |
ppcStringReply | Output. The caller must free this string (by calling vportFree()) only if it is non-NULL and the returned status is OK. |
References NULL, pdFALSE, st_cmd_registration::pf_exec_cmd, PrevCmdAc, PrevCmdIdx, prvCmdIdentify_Tokenize(), SHELL_CMDSTATUS_NOTFOUND, SHELL_CMDSTATUS_PERMISSIONDENIED, SHELL_ERRMSG_MAINTENANCEMODE, SHELL_EXECSTATUS_KO, SHELL_FS_FIRSTCMDIDX, SHELL_FS_LASTCMDIDX, SHELL_MAX_NBTOKEN, x_supervisor_SemaphoreGive(), and x_supervisor_SemaphoreTake().
Referenced by portTASK_FUNCTION(), and prvweb_ParseCGIRequest().
void v_shell_Print_String_To_Requester_Stream | ( | eModId | xModId, |
const signed portCHAR * | pcStringToDisplay | ||
) |
Print a string directly to the output stream of a module.
xModId | Input. The module associated with the target output stream. |
pcStringToDisplay | Input. The string to print. |
References SYS_MODID_COM1SHELL, SYS_MODID_USB, TRACE_COM2, and vcom1shell_PrintMsg().
Referenced by e_fscmds_shell_fat(), e_fscmds_shell_pwd(), e_usbsys_lsusb(), prv_append(), prv_cat(), prv_df(), prv_e_usbsys_sync_cp_ukey(), and prv_ls().
Cmd_registration a_cmd_registration[SHELL_NB_COMMANDS] |
The array of commands registration.
|
static |
Referenced by Shell_exec().
signed portCHAR* PrevCmdAv[SHELL_MAX_NBTOKEN] |
|
static |
Previous cmd index.
Referenced by Shell_exec().
const signed portCHAR* const SHELL_ERRMSG_HELP_SYNTAXERROR = (signed portCHAR *)"Error"CRLF"Usage: help [sensor,actuator,sys,fs]"CRLF |
Error msg upon help syntax error.
const signed portCHAR* const SHELL_MSG_CMDNOTFOUND = (signed portCHAR *)"Error"CRLF"Command not found"CRLF |
String messages.
Error msg upon command not found.
const signed portCHAR* const SHELL_MSG_HELP = (signed portCHAR *)"Commands summary"CRLF"help"CRLF"!!: execute the previous command"CRLF |
const signed portCHAR* const SHELL_MSG_NOHISTORY = (signed portCHAR *)"Error"CRLF"No previous command"CRLF |
Error msg if !! is executed and there is no previous command.
const signed portCHAR* const SHELL_MSG_PERMISSIONDENIED = (signed portCHAR *)"Error"CRLF"Permission denied"CRLF |
Error msg upon command execution permission denied.
const signed portCHAR* const SHELL_MSG_SYNTAXERROR = (signed portCHAR *)"Error"CRLF"Syntax error"CRLF |
Error msg upon syntax error.
xSemaphoreHandle xSHELLFSMutex |
The SHELLFS system mutex.
The SHELL system mutex.