#ifndef __INCLUDE_CONSOLE_H #define __INCLUDE_CONSOLE_H #define BS_KEY 0x08 /*Back Space */ #define ENTER_KEY 0x0d /*Enter*/ #define SPACE_KEY 0x20 /*Space */ #define DEL_KEY 0x7F /*Delete */ #define UPARROW_KEY 0x1b5b41 #define DOWNARROW_KEY 0x1b5b42 #define LEFTARROW_KEY 0x1b5b44 #define RIGHTARROW_KEY 0x1b5b43 #define ESC_KEY 0x1b #define CMD_PASS_CHAR(c) (((c)>=UPARROW_KEY)&&((c)<=LEFTARROW_KEY)) #define CMD_KEY_WORD(c) (((c)>='a') && ((c)<='z')) #define CMD_PROMPT "GoldenBeans#" #define UNKNOWNCMD "Unknown commond\r\n" typedef enum E_CONSOLE_FSM_ENUM { E_CONSOLE_FSM_NONE = 1, E_CONSOLE_FSM_GETING_CMD = 2, E_CONSOLE_FSM_GOT_CMD = 3, E_CONSOLE_FSM_GETING_PARAM = 4, E_CONSOLE_FSM_GOT_PARAM = 5, }E_CONSOLE_FSM; #define CMD_LINE_LEN_MAX 64 /*命令行最大长度,包含参数*/ #define CMD_DESCRIPTION_LEN_MAX 64 /*命令行帮助信息最大长度*/ #define CMD_PARAM_NUM_MAX 8 /*命令行中参数的最大数目,包括命令字*/ #ifndef CMD_MAX_NUM #define CMD_MAX_NUM 100 #endif #define CMD_ESC_TIMOUT 100 /*组合键的超时时间*/ typedef struct _console_cmd_info { int escpressed; u8 cmdLineLen; char cmdLine[CMD_LINE_LEN_MAX]; u8 curentpos; }console_cmd_info; typedef u8 CMDNODE; typedef struct _cmd_node_element { CMDNODE cmdnode; }cmd_node_element; typedef struct S_CLI_CMD_LIST_STRUCT { u8 num; u32 cmd[CMD_MAX_NUM]; }S_CLI_CMD_LIST; typedef int (*console_func)(u8 argc,char **argv); typedef struct S_CLI_CMD_STRUCT { char *cmd; char *description; console_func func; }S_CLI_CMD; #define DEFCLICMD(funcname, cmdname, cmdstr, helpstr) \ int funcname (u8,char **); \ const S_CLI_CMD cmdname = \ {\ cmdstr,\ helpstr,\ funcname\ };\ int funcname(u8 argc,char **argv) typedef S_CLI_CMD *PS_CLI_CMD; typedef const S_CLI_CMD *CPS_CLI_CMD; /*存储console使用的串口ID*/ extern u8 Console_UID; /******************************************************* 函数定义 ********************************************************/ /************************************************************ *cmd_install --命令行安装命令函数 * *Input: * 待安装的命令行结构 *Output: * Noen *Return: * 0 --安装成功 * -1 --安装失败 */ int cmd_install(CPS_CLI_CMD pcmdelement); /**************************************************************************** *cmd_init --命令行的初始化函数,完成命令行数据结构的初始化工作 * *Input: * uartid --命令行使用的串口编号,0,1; *Output: * None *Return: * None */ int cmd_init(u8 uartid); #endif