diff --git a/README.md b/README.md index 4b793de..b1af545 100755 --- a/README.md +++ b/README.md @@ -86,15 +86,16 @@ void loop() { #### 使用说明 ##### 注册自定义命令 ```C -static void cmd_echo(int argc, char* argv[]) +static int cmd_echo(int argc, char* argv[]) { if(param_check(1, argc, argv)) { printf("%s\r\n", argv[1]); } + return 0; } -static void cmd_example(int argc, char* argv[]) +static int cmd_example(int argc, char* argv[]) { uint8_t i; if(param_check(1, argc, argv)) @@ -121,6 +122,7 @@ static void cmd_example(int argc, char* argv[]) } } } + return 0; } static xcmd_t cmds[] = diff --git a/extensions/ex_cmds/ex_cmds.c b/extensions/ex_cmds/ex_cmds.c index 92967cc..5c55401 100644 --- a/extensions/ex_cmds/ex_cmds.c +++ b/extensions/ex_cmds/ex_cmds.c @@ -1,7 +1,7 @@ #include "ex_cmds.h" #include "xcmd.h" -static void cmd_run(int argc, char* argv[]) +static int cmd_run(int argc, char* argv[]) { if(argc >= 2) { @@ -11,6 +11,7 @@ static void cmd_run(int argc, char* argv[]) { xcmd_print("usage: run \"cmd\"\n"); } + return 0; } static xcmd_t cmds[] = diff --git a/extensions/test/test.c b/extensions/test/test.c index cdcf888..061940a 100644 --- a/extensions/test/test.c +++ b/extensions/test/test.c @@ -53,15 +53,16 @@ static uint8_t param_check(int need, int argc, char*argv[]) return ret; } -static void cmd_echo(int argc, char* argv[]) +static int cmd_echo(int argc, char* argv[]) { if(param_check(1, argc, argv)) { xcmd_print("%s\r\n", argv[1]); } + return 0; } -static void cmd_example(int argc, char* argv[]) +static int cmd_example(int argc, char* argv[]) { uint8_t i; if(param_check(1, argc, argv)) @@ -88,9 +89,10 @@ static void cmd_example(int argc, char* argv[]) } } } + return 0; } -static void cmd_history(int argc, char* argv[]) +static int cmd_history(int argc, char* argv[]) { uint16_t len = xcmd_history_len(); @@ -111,9 +113,10 @@ static void cmd_history(int argc, char* argv[]) break; } } + return 0; } -static void cmd_delete_cmd(int argc, char* argv[]) +static int cmd_delete_cmd(int argc, char* argv[]) { int res = 0; if (argc == 2) @@ -124,13 +127,13 @@ static void cmd_delete_cmd(int argc, char* argv[]) goto error; } } - return; + return 0; error: xcmd_print("Too many parameters are entered or there is no command\r\n"); - return; + return -1; } -static void cmd_delete_key(int argc, char* argv[]) +static int cmd_delete_key(int argc, char* argv[]) { int res = 0; if (argc == 2) @@ -141,8 +144,10 @@ static void cmd_delete_key(int argc, char* argv[]) goto error; } } + return 0; error: xcmd_print("Too many parameters are entered or there is no command\r\n"); + return -1; } @@ -152,7 +157,7 @@ static int cmd_ctr_q(void* pv) return 0; } -static void cmd_print_color(int argc, char* argv[]) +static int cmd_print_color(int argc, char* argv[]) { xcmd_print(TX_DEF "txt_color = DEF \r\n" TX_DEF); xcmd_print(TX_RED "txt_color = RED \r\n" TX_DEF); @@ -170,7 +175,7 @@ static void cmd_print_color(int argc, char* argv[]) xcmd_print(BK_YELLOW "background_color = BK_YELLOW" BK_DEF "\r\n"); xcmd_print(BK_BLUE "background_color = BK_BLUE" BK_DEF "\r\n"); xcmd_print(BK_WHITE "background_color = BK_WHITE" BK_DEF "\r\n"); - + return 0; } static xcmd_t cmds[] = diff --git a/inc/xcmd.h b/inc/xcmd.h index 7fac58b..d283365 100755 --- a/inc/xcmd.h +++ b/inc/xcmd.h @@ -14,7 +14,7 @@ extern "C" { #endif -typedef void(*cmd_func_t)(int argv, char* argc[]); +typedef int(*cmd_func_t)(int argv, char* argc[]); typedef int(*cmd_key_func_t)(void *data); typedef struct __cmd @@ -98,9 +98,9 @@ int xcmd_unregister_key(char *key); /** * @description: 手动执行命令 * @param {char* } str:命令 - * @return {uint8_t} 返回参数的个数 + * @return {uint8_t} 返回执行结果 */ -uint8_t xcmd_exec(char *str); +int xcmd_exec(char *str); /** * @description: 打印字符串 diff --git a/src/xcmd.c b/src/xcmd.c index bde9f42..a3104a0 100755 --- a/src/xcmd.c +++ b/src/xcmd.c @@ -164,10 +164,11 @@ static int xcmd_get_param(char* msg, char*delim, char* get[], int max_num) return ret; } -static void xcmd_cmd_match(int argc, char*argv[]) +static int xcmd_cmd_match(int argc, char*argv[]) { xcmd_t *p = g_xcmder.cmd_list.head; uint8_t flag = 0; + int ret = -1; while(p) { if(strcmp(p->name, argv[0]) == 0) @@ -182,7 +183,7 @@ static void xcmd_cmd_match(int argc, char*argv[]) break; } } - p->func(argc, argv); + ret = p->func(argc, argv); break; } p = p->next; @@ -195,6 +196,7 @@ static void xcmd_cmd_match(int argc, char*argv[]) { xcmd_print("cmd \"%s\" does not exist\r\n", argv[0]); } + return ret; } static void xcmd_key_match(char* key) @@ -522,7 +524,7 @@ void xcmd_history_slider_reset(void) #endif } -uint8_t xcmd_exec(char* str) +int xcmd_exec(char* str) { int param_num = 0; char *cmd_param_buff[XCMD_PARAM_MAX_NUM]; @@ -531,9 +533,9 @@ uint8_t xcmd_exec(char* str) param_num = xcmd_get_param(temp, " ", cmd_param_buff, XCMD_PARAM_MAX_NUM); if(param_num >0) { - xcmd_cmd_match(param_num, cmd_param_buff); + return xcmd_cmd_match(param_num, cmd_param_buff); } - return param_num; + return -1; } int xcmd_key_register(xcmd_key_t *keys, uint16_t number) diff --git a/src/xcmd_default_cmds.c b/src/xcmd_default_cmds.c index cd11505..15e8fc8 100755 --- a/src/xcmd_default_cmds.c +++ b/src/xcmd_default_cmds.c @@ -11,12 +11,13 @@ #include "xcmd.h" #include -static void cmd_clear(int argc, char* argv[]) +static int cmd_clear(int argc, char* argv[]) { xcmd_print("\033c"); + return 0; } -static void cmd_help(int argc, char* argv[]) +static int cmd_help(int argc, char* argv[]) { xcmd_t *p = xcmd_cmdlist_get(); while(p) @@ -24,9 +25,10 @@ static void cmd_help(int argc, char* argv[]) xcmd_print("%-20s %s\r\n",p->name, p->help); p = p->next; } + return 0; } -static void cmd_keys(int argc, char* argv[]) +static int cmd_keys(int argc, char* argv[]) { xcmd_key_t *p = xcmd_keylist_get(); while(p) @@ -35,9 +37,10 @@ static void cmd_keys(int argc, char* argv[]) xcmd_print("%s\r\n",p->help); p = p->next; } + return 0; } -static void cmd_logo(int argc, char* argv[]) +static int cmd_logo(int argc, char* argv[]) { char *log = "\ _ _ ___ __ __ ____ \r\n\ @@ -47,6 +50,7 @@ static void cmd_logo(int argc, char* argv[]) xcmd_print("%s", log); xcmd_print("\r\n%-10s %s %s\r\n","Build" ,__DATE__, __TIME__); xcmd_print("%-10s %s\r\n","Version", VERSION); + return 0; } static xcmd_t cmds[] =