µC/Shell API Reference

µC/Shell API Reference

This section provides a reference to the µC/Shell API. Each of the user-accessible services is presented in alphabetical order. The following information is provided for each of those services:

  • A brief description

  • The function prototype

  • The filename of the source code

  • A description of the arguments passed to the function

  • A description of the returned value(s)

  • Specific notes and warnings on using the service

  • A usage example

Shell_CmdTblAdd()

void Shell_CmdTblAdd (CPU_CHAR *cmd_tbl_name, SHELL_CMD cmd_tbl[], SHELL_ERR *perr);

 

File

Called from

shell.c

Application

Allocates and initializes a module command, and inserts a command table into it.

Arguments

cmd_tbl_name

Pointer to character string representing the name of the command table.

cmd_tbl

Command table to add.

perr

Pointer to variable that will receive the return error code from this function :

SHELL_ERR_NONE

No error.

SHELL_ERR_NULL_PTR

Argument 'cmd_tbl' passed a NULL pointer.

SHELL_ERR_MODULE_CMD_EMPTY

Command table empty.

SHELL_ERR_MODULE_CMD_ALREADY_IN

Command table already added, or command table name already used.

SHELL_ERR_MODULE_CMD_NONE_AVAIL

NO available module command to allocate.

SHELL_ERR_MODULE_CMD_NAME_NONE

No module command name found.

SHELL_ERR_MODULE_CMD_NAME_TOO_LONG

Module command name too long.

SHELL_ERR_MODULE_CMD_NAME_COPY

Copy error.

Returned Values

None.

Notes/Warnings

The 'cmd_tbl_ame' argument is the prefix of the commands in 'cmd_tbl'.  In order to speed up the command search, the shell first locate the appropriate table based on the prefix of the command.  Hence, it is recommended that all commands in a table be named with the same prefix.  For instance, µC/TCP-IP related command displaying statistics could look like :

Net_stats

while a file system command listing the current directory would be :

FS_ls

The names of those module commands are respectively 'Net' and 'FS'.

Example

static SHELL_CMD App_ShellAppCmdTbl[] = { {"App_test", App_TestShellCmd}, {0, 0} }; void App_CmdTblAdd (void) { SHELL_ERR err; APP_TRACE_DEBUG(("Adding Shell command table ... ")); Shell_CmdTblAdd("App", App_ShellAppCmdTbl, &err); if (err == SHELL_ERR_NONE) { APP_TRACE_DEBUG(("done.\n\r")); } else { APP_TRACE_DEBUG(("failed.\n\r")); } }

 

Shell_CmdTblRem ()

void Shell_CmdTblRem (CPU_CHAR *cmd_tbl_name, SHELL_ERR *perr);

 

File

Called from

shell.c

Application

Removes a command table from the shell.

Arguments

cmd_tbl_name

Pointer to character string representing the name of the command table.

perr

Pointer to variable that will receive the return error code from this function:

SHELL_ERR_NONE

No error.

SHELL_ERR_NULL_PTR

Argument 'cmd_tbl_name' passed a NULL pointer.

SHELL_ERR_MODULE_CMD_NOT_FOUND

Module command NOT found.

Returned Values

None.

Notes/Warnings

None.

Example

void App_CmdTblRem (void) { SHELL_ERR err; APP_TRACE_DEBUG(("Removing Shell command table ... ")); Shell_CmdTblRem("App", &err); if (err == SHELL_ERR_NONE) { APP_TRACE_DEBUG(("done.\n\r")); } else { APP_TRACE_DEBUG(("failed.\n\r")); } }

 

Shell_Exec ()

CPU_INT16S Shell_Exec (CPU_CHAR *in, SHELL_OUT_FNCT out_fnct, 

 

File

Called from

shell.c

Application

Parses and executes the command passed in parameter.

Arguments

in

Pointer to a CPU_CHAR string holding a complete command and its argument(s).

out_fnct

Pointer to 'output' function used by command.

perr

Pointer to variable that will receive the return error code from this function:

SHELL_ERR_NONE

No error.

SHELL_ERR_NULL_PTR

Argument 'in' passed a NULL pointer.

SHELL_ERR_CMD_NOT_FOUND

Command NOT found.

SHELL_ERR_CMD_SEARCH

Error searching for command.

SHELL_ERR_CMD_EXEC

Error executing command.

SHELL_ERR_ARG_TBL_FULL

Argument table full and token still to be parsed.

Returned Values

SHELL_EXEC_ERR

If command executing error.

Command specific return value

Otherwise.

Notes/Warnings

The command may generate some output that should be transmitted to some device (socket, RS-232 link, ...).  The caller of this function is hence responsible for the implementation of such function, if output is desired.

Example

void App_Exec (void) { SHELL_ERR err; APP_TRACE_DEBUG(("Testing Shell, executing command ...\n\r")); Shell_Exec("App_test -a -b -c", &App_TestShellOut, &err); switch (err) { case SHELL_ERR_NONE: APP_TRACE_DEBUG(("Command executed, no error.\n\r")); break; case SHELL_ERR_NULL_PTR: APP_TRACE_DEBUG(("Error, NULL pointer passed.\n\r")); break; case SHELL_ERR_CMD_NOT_FOUND: APP_TRACE_DEBUG(("Error, command NOT found.\n\r")); break; case SHELL_ERR_CMD_SEARCH: APP_TRACE_DEBUG(("Error, searching command.\n\r")); break; case SHELL_ERR_ARG_TBL_FULL: APP_TRACE_DEBUG(("Error, too many arguments\n\r")); break; case SHELL_ERR_CMD_EXEC: APP_TRACE_DEBUG (("Error, executing command.\n\r")); break; default: break; } }

 

Shell_Init()

CPU_BOOLEAN Shell_Init (void); 

 

File

Called from

shell.c

Application

Initializes the shell.

Arguments

None

Returned Values

DEF_OK

Shell initialization successful.

DEF_FAIL

Otherwise.

Notes/Warnings

The Shell_Init() function must be called before the other Shell function are invoked.  Shell_Init() must also only be called once from product's application.

Example

void App_Init (void) { CPU_BOOLEAN success; SHELL_ERR err; APP_TRACE_DEBUG(("Initialize shell ... ")); Success = Shell_Init(); if (success == DEF_OK) { APP_TRACE_DEBUG(("done.\n\r")); } else { APP_TRACE_DEBUG(("failed.\n\r")); } }