CLI 命令行服务
概述
CLI(命令行服务)是基于uService的一种服务。可在用户提示符下键入可执行指令,实现对功能命令的维护。
接口定义
初始化命令行服务
int aos_cli_init(void);
初始化命令行服务模块
- 参数:
- 无
返回值:
成功返回0,返回其他值为失败
注册命令行服务
int aos_cli_register_command(const struct cli_command *cmd);
注册可以执行的命令行服务
- 参数:
- cmd:需要注册的可以执行命令行服务
- 返回值: 成功返回0,失败返回负数值
注销命令行服务
int aos_cli_unregister_command(const struct cli_command *cmd);
注销可以执行的命令行服务
- 参数:
- cmd:需要注销的可以执行命令行服务
- 返回值: 成功返回0,返回其他值为失败
注册命令行服务队列
int aos_cli_register_commands(const struct cli_command *cmds, int num);
注册可以执行的命令行服务队列
- 参数:
- cmds:指向命令行服务队列指针
- num:命令行服务队列命令数
- 返回值: 成功返回0,返回其他值为失败
注销命令行服务队列
int aos_cli_unregister_commands(const struct cli_command *cmds, int num);
注销可以执行的命令行服务队列
- 参数:
- cmds:需要注销的命令行服务队列指针
- num: 需要注销的命令行服务队列命令数
- 返回值: 成功返回0,返回其他值为失败
打印命令行服务
int aos_cli_printf(const char *fmt, ...);
- 参数:
- fmt:缓冲区指针
- 返回值: 成功返回0,返回其他值为失败
暂停命令行服务
int aos_cli_suspend(void);
- 参数:
- 无
- 返回值: 成功返回0,返回其他值为失败
恢复命令行服务
int aos_cli_resume(void);
- 参数:
- 无
- 返回值: 成功返回0,返回其他值为失败
获取命令行服务命令总数
int aos_cli_get_commands_num(void);
- 参数:
- 无
- 返回值: 成功返回总数值,返回其他值为失败
按索引获取命令行服务命令
struct cli_command *aos_cli_get_command(int index);
- 参数:
- index:命令索引
- 返回值: 成功返回命令行服务命令
示例代码
命令行服务接口
#ifndef YOC_CLI_H
#define YOC_CLI_H
#include <aos/list.h>
#include <yoc/uservice.h>
#define CLI_CMD_LEN_MAX 256
#define CLI_CMD_MAX_ARG_NUM 10
/* Structure for registering CLI commands */
struct cli_command {
const char *name;
const char *help;
void (*function)(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv);
};
typedef struct cmd_list {
const struct cli_command *cmd;
slist_t next;
} cmd_list_t;
#endif
命令行服务初始化
#include <yoc/cli.h>
extern const char *console_get_devname(void);
int aos_cli_init(void)
{
cli_service_init(NULL);
return 0;
}
命令行服务注册
static uint32_t help_func(void)
{
slist_t cmd_lists = cli_service_get_cmd_list();
cmd_list_t *node;
slist_for_each_entry(&cmd_lists, node, cmd_list_t, next) {
printf("%-15s : %s\n", node->cmd->name, node->cmd->help);
}
return 0;
}
static void cmd_help_func(char *wbuf, int wbuf_len, int argc, char **argv)
{
if (NULL == argv[1]) {
help_func();
}
}
void cli_reg_cmd_help(void)
{
static const struct cli_command cmd_info = {
"help",
"show commands",
cmd_help_func,
};
aos_cli_register_command(&cmd_info);
}