枚举管理组

枚举管理组定义以下命令:

Command ID

命令描述

0

支持的组数量

1

列出支持的组

2

获取单个组 ID

3

支持的组详细信息

支持的组数量命令

支持的组数量返回设备支持的 MCUmgr 命令组总数。

支持的组数量请求

读取设置请求头字段:

OP

Group ID

Command ID

0

10

0

该命令发送空 CBOR 映射作为数据。

支持的组数量响应

支持的组数量响应头字段:

OP

Group ID

Command ID

1

10

0

成功响应的 CBOR 数据:

{
    (str)"count"        : (uint)
}

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

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

其中:

"count"

包含设备上支持的 MCUmgr 组总数。

"err" -> "group"

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

"err" -> "rc"

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

"rc"

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

列出支持的组命令

列出支持的组命令允许列出设备上支持的 MCUmgr 组的组 ID。

列出支持的组请求

列出支持的组请求头字段:

OP

Group ID

Command ID

0

10

1

该命令发送空 CBOR 映射作为数据。

列出支持的组响应

列出支持的组响应头字段:

OP

Group ID

Command ID

1

10

1

成功响应的 CBOR 数据:

{
    (str)"groups" : [
        (uint)
        ...
    ]
}

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

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

其中:

"groups"

包含设备上支持的 MCUmgr 组 ID 的列表。

"err" -> "group"

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

"err" -> "rc"

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

"rc"

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

获取单个组 ID 命令

获取单个组 ID 命令允许逐个列出设备上支持的 MCUmgr 组的组 ID。

获取单个组 ID 请求

获取单个组 ID 请求头字段:

OP

Group ID

Command ID

0

10

2

请求的 CBOR 数据:

{
    (str,opt)"index" : (uint)
}

其中:

"index"

包含要返回信息的组的索引(从 0 开始);省略此项可返回第一个组的详细信息。

获取单个组 ID 响应

获取单个组 ID 响应头字段:

OP

Group ID

Command ID

1

10

2

成功响应的 CBOR 数据:

{
    (str)"group"    : (uint)
    (str,opt)"end"  : (bool)
}

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

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

其中:

"group"

包含设备上支持的 MCUmgr 组 ID 的列表。

"end"

如果所列组是设备上支持的最后一个组,则设置为 true,否则省略该字段。

"err" -> "group"

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

"err" -> "rc"

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

"rc"

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

支持的组详细信息命令

支持的组详细信息命令允许获取每个受支持的 MCUmgr 组的详细信息,例如名称和处理程序数量。设备可以指定要返回详细信息的组允许列表,也可以返回所有组的详细信息。

此命令是可选的,可以使用 CONFIG_MCUMGR_GRP_ENUM_DETAILS 选项启用。可选的名称和处理程序数量可以通过 CONFIG_MCUMGR_GRP_ENUM_DETAILS_NAME 和 CONFIG_MCUMGR_GRP_ENUM_DETAILS_HANDLERS 选项启用/禁用。

支持的组详细信息请求

支持的组详细信息请求头字段:

OP

Group ID

Command ID

0

10

3

该命令发送空 CBOR 映射作为数据。

支持的组详细信息响应

支持的组详细信息响应头字段:

OP

Group ID

Command ID

1

10

3

成功响应的 CBOR 数据:

{
    (str)"groups" : [
        {
            (str)"group"          : (uint)
            (str,opt)"name"       : (str)
            (str,opt)"handlers"   : (uint)
        }
        ...
    ]
}

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

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

其中:

"group"

MCUmgr 命令组的组 ID。

"name"

MCUmgr 命令组的名称。

"handlers"

MCUmgr 命令组支持的处理程序数量。

"err" -> "group"

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

"err" -> "rc"

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

"rc"

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

支持的组详细信息回调

支持的组详细信息提供了一个 MCUmgr 回调(详情参见 MCUmgr 回调),允许应用程序/模块为此响应添加附加字段。此回调可以通过 CONFIG_MCUMGR_GRP_ENUM_DETAILS_HOOK 选项启用,并通过事件 MGMT_EVT_OP_ENUM_MGMT_DETAILS 注册,其中提供的回调数据是 enum_mgmt_detail_output 结构体。请注意,CONFIG_MCUMGR_GRP_ENUM_DETAILS_STATES 选项需要按添加的额外字段数量递增。