Command Processor and Command Line Interface
Logicrom OpenCPU SDK provide in-built command processor and CLI with many features like user authentication and command autocomplete etc.
By default SDK provide system commands and linux like core utility commands.
Available commands
Command |
Description |
|---|---|
devinfo |
Get device information |
sysinfo |
Get system information |
loglevel |
Set or get current debug loglevel |
reboot |
Reboot system |
ntpdate |
Get date time information from NTP server |
df |
Show information about filesystem |
ls |
List file(s) or directory |
echo |
Display line of text |
free |
Display free and used memory in the system |
cat |
Display file on standard output |
mkdir |
Make directory |
rm |
Remove file or directory |
mv |
Move file or directory |
format |
Format device/filesystem |
logout |
Logout current user |
help |
Get command help |
Optional Commands
Some commands are available only when a module is used or enabled by the application.
Following is the list of Commands with modules.
Command |
Module |
Description |
|---|---|---|
wget |
Download file from web to filesystem |
|
load |
Download file on module via Console (Xmodem) |
|
dload |
Download file from module via Console (Xmodem) |
|
gpsinfo |
Get GPS realtime information |
|
gpscmd |
Send command to GPS module |
|
gpsbaud |
Change gps baudrate |
|
btman |
Bluetooth manager command |
|
spifs |
Manage SPI filesystem |
|
fota |
Download firmware over the air |
|
rdbg |
Initiate a remote debug session |
|
ntpdate |
Get date from NTP server and sync |
Following commands are available on 4G modules only
Command |
Description |
|---|---|
ifconfig |
Get network device information |
ping |
Send ICMP ECHO REQUEST to network host |
Custom commands
Command processor APIs can be used to add new commands to the system.
Command Delimiters
Command and argument on console are seperated using following delimiters:
Comma (,)
Space ( )
Command and only first parameter can also be seperated by an equal (=) symbol. So following formats for comamnd is valid on console
$ command=parameter
$ command parameter
$ command,parameter
# multi parameter commands
$ command=param1,param2
$ command=param1 param2
$ command param1 param2
$ command,param1,param2
Parameter Escaping
To escape parameter with comma a quote can be used. For example:
$ command="param1,continued",param2
To escape quote, a backslash can be used:
$ command="param1,continued with a \"quote\"",param2
Application Example
Command Processor API Reference
Header File
Source: include/command.h
#include <command.h>
Functions
-
int command_process(const char *cmd, int len, struct cmdinfo_t *info, commandproc_cb callback, void *arg)
Execute command buffer
Multiple commands can be separated by ; and will be executed by the built-in parser.
- Parameters:
cmd – [in] String containing list of commands
len – [in] length of cmd string
info – [in] Command information structure
callback – [in] process callback function of type commandproc_cb, called after execution of each command in the list
arg – [in] Argument passed to callback function
- Returns:
0 on success, or != 0 on error. command_ret_e
Structures
-
struct cmdinfo_t
Command information structure, passed to command handler function
-
struct cmddesc_t
Command descriptor structure
Macros
-
CMD_MAX_ARGS
Maximum number of allowed arguments including command
-
CMD_ADD(_name, _minarg, _maxarg, _cmd, _help, _usage, _type)
Add new command
- Parameters:
_name – Name of command
_minarg – Minimum number of arguments including command (must be >= 1)
_maxarg – Maximum number of arguments including command (must be >= 1 & <= CMD_MAX_ARGS)
_cmd – Command handler function
_help – Short help message
_usage – Long help message and usage detail
_type – Command type flag see command_type_e
Type Definitions
Enumerations
-
enum command_ret_e
Command executing return code
Values:
-
enumerator CMD_RET_SUCCESS
Command executed successfully
-
enumerator CMD_RET_FAILURE
Command executing failure
-
enumerator CMD_RET_PERM
Command Permission denied
-
enumerator CMD_RET_LOGOUT
Execute session logout
-
enumerator CMD_RET_USAGE
Failure, please report ‘usage’ error
-
enumerator CMD_RET_SUCCESS
-
enum command_src_e
Source of command used in cmdinfo_t structure
Values:
-
enumerator CMD_SRC_CONSOLE
Command source console
-
enumerator CMD_SRC_BTCONSOLE
Command source Bluetooth Console
-
enumerator CMD_SRC_DBG
Command source Remote debug console
-
enumerator CMD_SRC_SMS
Command source SMS
-
enumerator CMD_SRC_TCP
Command source TCP
-
enumerator CMD_SRC_SYS
Command source system() API
-
enumerator CMD_SRC_CONSOLE
-
enum command_type_e
Command type flags. These flags can be ORed together.
Values:
-
enumerator CMD_TYPE_DEFAULT
Default command, executing allowed everywhere and can be executed by user and admin.
-
enumerator CMD_TYPE_HIDDEN
Hidden command, Only executed by admin user; Unless allowed by allow flags
-
enumerator CMD_ALLOW_SMS
Command allowed over SMS
-
enumerator CMD_ALLOW_TCP
Command allowed over TCP
-
enumerator CMD_ALLOW_DBG
Command allowed over remote debug
-
enumerator CMD_ALLOW_CONSOLE
Command allowed over console
-
enumerator CMD_ALLOW_BT_CONSOLE
Command allowed over Bluetooth console
-
enumerator CMD_ALLOW_SYS
Command allowed to execute via system() API
-
enumerator CMD_ALLOW_ALL
Command allowed from all sources
-
enumerator CMD_ALLOW_TCP_SMS
Command allowed over TCP and SMS
-
enumerator CMD_ALLOW_CONSOLE_ONLY
Command allowed over Console only
-
enumerator CMD_ALLOW_TCP_SMS_DBG
Command allowed over TCP, SMS and remote console
-
enumerator CMD_TYPE_DEFAULT
Console API Reference
Header File
Source: include/console.h
#include <console.h>
Functions
Type Definitions
-
typedef int (*cliauth_f)(const char *user, const char *pass)
CLI Authentication function
- Param user:
Username entered on console.
For Remote debug console this value is “rdbg”.
For Bluetooth console this value is “btcli”.- Param pass:
Password
- Return:
Authentication return code, see cli_auth_rc
