console.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #ifndef __INCLUDE_CONSOLE_H
  2. #define __INCLUDE_CONSOLE_H
  3. #define BS_KEY 0x08 /*Back Space */
  4. #define ENTER_KEY 0x0d /*Enter*/
  5. #define SPACE_KEY 0x20 /*Space */
  6. #define DEL_KEY 0x7F /*Delete */
  7. #define UPARROW_KEY 0x1b5b41
  8. #define DOWNARROW_KEY 0x1b5b42
  9. #define LEFTARROW_KEY 0x1b5b44
  10. #define RIGHTARROW_KEY 0x1b5b43
  11. #define ESC_KEY 0x1b
  12. #define CMD_PASS_CHAR(c) (((c)>=UPARROW_KEY)&&((c)<=LEFTARROW_KEY))
  13. #define CMD_KEY_WORD(c) (((c)>='a') && ((c)<='z'))
  14. #define CMD_PROMPT "GoldenBeans#"
  15. #define UNKNOWNCMD "Unknown commond\r\n"
  16. typedef enum E_CONSOLE_FSM_ENUM
  17. {
  18. E_CONSOLE_FSM_NONE = 1,
  19. E_CONSOLE_FSM_GETING_CMD = 2,
  20. E_CONSOLE_FSM_GOT_CMD = 3,
  21. E_CONSOLE_FSM_GETING_PARAM = 4,
  22. E_CONSOLE_FSM_GOT_PARAM = 5,
  23. }E_CONSOLE_FSM;
  24. #define CMD_LINE_LEN_MAX 64 /*命令行最大长度,包含参数*/
  25. #define CMD_DESCRIPTION_LEN_MAX 64 /*命令行帮助信息最大长度*/
  26. #define CMD_PARAM_NUM_MAX 8 /*命令行中参数的最大数目,包括命令字*/
  27. #ifndef CMD_MAX_NUM
  28. #define CMD_MAX_NUM 100
  29. #endif
  30. #define CMD_ESC_TIMOUT 100 /*组合键的超时时间*/
  31. typedef struct _console_cmd_info
  32. {
  33. int escpressed;
  34. u8 cmdLineLen;
  35. char cmdLine[CMD_LINE_LEN_MAX];
  36. u8 curentpos;
  37. }console_cmd_info;
  38. typedef u8 CMDNODE;
  39. typedef struct _cmd_node_element
  40. {
  41. CMDNODE cmdnode;
  42. }cmd_node_element;
  43. typedef struct S_CLI_CMD_LIST_STRUCT
  44. {
  45. u8 num;
  46. u32 cmd[CMD_MAX_NUM];
  47. }S_CLI_CMD_LIST;
  48. typedef int (*console_func)(u8 argc,char **argv);
  49. typedef struct S_CLI_CMD_STRUCT
  50. {
  51. char *cmd;
  52. char *description;
  53. console_func func;
  54. }S_CLI_CMD;
  55. #define DEFCLICMD(funcname, cmdname, cmdstr, helpstr) \
  56. int funcname (u8,char **); \
  57. const S_CLI_CMD cmdname = \
  58. {\
  59. cmdstr,\
  60. helpstr,\
  61. funcname\
  62. };\
  63. int funcname(u8 argc,char **argv)
  64. typedef S_CLI_CMD *PS_CLI_CMD;
  65. typedef const S_CLI_CMD *CPS_CLI_CMD;
  66. /*存储console使用的串口ID*/
  67. extern u8 Console_UID;
  68. /*******************************************************
  69. 函数定义
  70. ********************************************************/
  71. /************************************************************
  72. *cmd_install --命令行安装命令函数
  73. *
  74. *Input:
  75. * 待安装的命令行结构
  76. *Output:
  77. * Noen
  78. *Return:
  79. * 0 --安装成功
  80. * -1 --安装失败
  81. */
  82. int cmd_install(CPS_CLI_CMD pcmdelement);
  83. /****************************************************************************
  84. *cmd_init --命令行的初始化函数,完成命令行数据结构的初始化工作
  85. *
  86. *Input:
  87. * uartid --命令行使用的串口编号,0,1;
  88. *Output:
  89. * None
  90. *Return:
  91. * None
  92. */
  93. int cmd_init(u8 uartid);
  94. #endif