78#ifndef _HWLITEOS_SHELL_H
79#define _HWLITEOS_SHELL_H
92#define OS_ERRNO_SHELL_NO_HOOK LOS_ERRNO_OS_ERROR(LOS_MOD_SHELL, 0x00)
93#define OS_ERRNO_SHELL_CMDREG_PARA_ERROR LOS_ERRNO_OS_ERROR(LOS_MOD_SHELL, 0x01)
94#define OS_ERRNO_SHELL_CMDREG_CMD_ERROR LOS_ERRNO_OS_ERROR(LOS_MOD_SHELL, 0x02)
95#define OS_ERRNO_SHELL_CMDREG_CMD_EXIST LOS_ERRNO_OS_ERROR(LOS_MOD_SHELL, 0x03)
96#define OS_ERRNO_SHELL_CMDREG_MEMALLOC_ERROR LOS_ERRNO_OS_ERROR(LOS_MOD_SHELL, 0x04)
97#define OS_ERRNO_SHELL_SHOW_HOOK_NULL LOS_ERRNO_OS_ERROR(LOS_MOD_SHELL, 0x05)
98#define OS_ERRNO_SHELL_SHOW_HOOK_EXIST LOS_ERRNO_OS_ERROR(LOS_MOD_SHELL, 0x06)
99#define OS_ERRNO_SHELL_SHOW_HOOK_TOO_MUCH LOS_ERRNO_OS_ERROR(LOS_MOD_SHELL, 0x07)
100#define OS_ERRNO_SHELL_NOT_INIT LOS_ERRNO_OS_ERROR(LOS_MOD_SHELL, 0x08)
101#define OS_ERRNO_SHELL_CMD_HOOK_NULL LOS_ERRNO_OS_ERROR(LOS_MOD_SHELL, 0x09)
102#define OS_ERRNO_SHELL_FIFO_ERROR LOS_ERRNO_OS_ERROR(LOS_MOD_SHELL, 0x10)
105#define SHOW_MAX_LEN CMD_MAX_LEN
107#define XARGS 0xFFFFFFFF
109#define CMD_MAX_PARAS 32
110#define CMD_KEY_LEN 16U
111#define CMD_MAX_LEN (256U + CMD_KEY_LEN)
112#define CMD_KEY_NUM 32
113#define CMD_HISTORY_LEN 10
114#define CMD_MAX_PATH 256
115#define DEFAULT_SCREEN_WIDTH 80
116#define DEFAULT_SCREEN_HEIGHT 24
121#define SWITCH_QUOTES_STATUS(qu) do { \
122 if ((qu) == TRUE) { \
129#define QUOTES_STATUS_CLOSE(qu) ((qu) == FALSE)
130#define QUOTES_STATUS_OPEN(qu) ((qu) == TRUE)
142 pthread_mutex_t keyMutex;
143 pthread_mutex_t historyMutex;
145 CHAR shellWorkingDirectory[PATH_MAX];
@ CMD_TYPE_STD
支持的标准命令参数输入,所有输入的字符都会通过命令解析后被传入。
@ CMD_TYPE_EX
不支持标准命令参数输入,会把用户填写的命令关键字屏蔽掉,例如:输入ls /ramfs,传入给注册函数的参数只有/ramfs,而ls命令关键字并不会被传入。
@ CMD_TYPE_SHOW
用户怎么输入就怎么显示出现,包括 \0 这些字符也都会存在
UINT32(* CmdCallBackFunc)(UINT32 argc, const CHAR **argv)
UINT32 osCmdReg(CmdType cmdType, const CHAR *cmdKey, UINT32 paraNum, CmdCallBackFunc cmdProc)
以动态方式注册命令
CmdCallBackFunc CMD_CBK_FUNC
EVENT_CB_S shellEvent
事件类型触发
UINT32 shellEntryHandle
shell客户端任务(负责接受来自串口或远程登录的信息)
VOID * cmdHistoryKeyLink
已处理的命令历史记录链表,去重,10个
UINT32 consoleID
控制台ID,shell必须捆绑一个控制台(串口或远程登录),以便接收输入和发送执行结果信息
UINT32 shellBufOffset
buf偏移量
VOID * cmdMaskKeyLink
主要用于方向键上下遍历命令历史
UINT32 shellTaskHandle
shell服务端任务(负责解析和执行来自客户端的信息)
VOID * cmdKeyLink
待处理的shell命令链表