Shell 管理

Shell 管理允许通过 SMP 协议将命令传递给 shell 子系统。

Shell 管理组定义以下命令:

Command ID

命令描述

0

Shell 命令行执行

Shell command line execute

该命令允许以类似于在 shell 中输入命令行的方式执行命令行,但请求和响应都通过 SMP 传输。

Shell 命令行执行请求

执行命令请求头:

OP

Group ID

Command ID

2

9

0

请求的 CBOR 数据:

{
    (str)"argv"     : [
        (str)<cmd>
        (str,opt)<arg>
        ...
    ]
}

其中:

"argv"

由表示命令及其参数的字符串组成的数组。

<cmd>

要执行的命令。

<arg>

命令的可选参数。

Shell 命令行执行响应

命令行执行响应头字段:

OP

Group ID

Command ID

3

9

0

成功响应的 CBOR 数据:

{
    (str)"o"            : (str)
    (str)"ret"          : (int)
}

出错时,CBOR 数据采用以下形式:

{
    (str)"err" : {
        (str)"group"    : (uint)
        (str)"rc"       : (uint)
    }
}

其中:

"o"

命令输出。

"ret"

shell 命令执行的返回码。

"err" -> "group"

mcumgr_group_t 表示基于分组的错误代码所属的分组。仅在使用 SMP 版本 2 且返回错误时出现。

"err" -> "rc"

包含基于分组的错误代码的索引。仅在使用 SMP 版本 2 且为非零(错误情况)时出现。

"rc"

mcumgr_err_t 仅在使用 SMP 版本 1 且为非零(错误情况)时,或在使用 SMP 版本 2 发生 SMP 错误时出现。

备注

在较旧版本的 Zephyr 中,“rc” 同时用于 mcumgr 状态码和 shell 命令执行返回码;启用 CONFIG_MCUMGR_GRP_SHELL_LEGACY_RC_RETURN_CODE 选项可以恢复此旧行为。