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);
}

results matching ""

    No results matching ""