增加命令执行的返回值

Change-Id: Id5d21241846007a93c97c4e76acd2b14b7d26b7c
This commit is contained in:
weidonglin 2021-10-10 17:20:22 +08:00
parent c3f12c0334
commit 7c8a4b2f85
6 changed files with 38 additions and 24 deletions

View File

@ -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[] =

View File

@ -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[] =

View File

@ -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[] =

View File

@ -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:

View File

@ -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)

View File

@ -11,12 +11,13 @@
#include "xcmd.h"
#include <stdlib.h>
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[] =