统计管理

统计管理可用于获取由 Zephyr 统计子系统收集的数据;该子系统通过 CONFIG_STATS 启用。

统计管理组定义了以下命令:

Command ID

命令描述

0

组数据

1

列出组

统计:组数据

该命令用于获取由名称指定的组的数据。该名称是收集统计信息的模块中使用 STATS_INIT_AND_REG 宏或 stats_init_and_reg() 函数调用注册的组名之一。

统计:组数据请求

统计组数据请求头部:

OP

Group ID

Command ID

0

2

0

请求的 CBOR 数据:

{
    (str)"name" :  (str)
}

其中:

“name”

组名。

统计:组数据响应

统计组数据响应头部:

OP

Group ID

Command ID

1

2

0

成功响应的 CBOR 数据:

{
    (str)"name"     : (str)
    (str)"fields"   : {
        (str)<entry_name> : (uint)
        ...
    }
}

出错时,CBOR 数据的形式如下:

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

其中:

“name”

这是响应所含数据的组的名称。

“fields”

这是组内条目的映射,由条目名称与其在统计中代表的值组成的键值对构成。

<entry_name>

单个条目到值的映射;该值按 CBOR 的含义固定为无符号整数类型。

“err” -> “group”

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

“err” -> “rc”

包含基于分组的错误码的索引。仅在使用 SMP 版本 2 且该值非零(错误状态)时出现。

“rc”

mcumgr_err_t,仅在使用 SMP 版本 1 且该值非零(错误状态)时出现,或在使用 SMP 版本 2 且出现 SMP 错误时出现。

统计:组列表

该命令用于获取设备上收集的统计组的列表。该列表是收集统计信息的模块中使用 STATS_INIT_AND_REG 宏或 stats_init_and_reg() 函数调用为各组指定的名称列表;这意味着该命令可以被视为可选,因为在编译时就已经知道构建中包含哪些组,在发出查询之前无需列出它们。

统计:组列表请求

统计组列表请求头部:

OP

Group ID

Command ID

0

2

1

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

统计:组列表响应

统计组列表请求头部:

OP

Group ID

Command ID

1

2

1

成功响应的 CBOR 数据:

{
    (str)"stat_list" :  [
        (str)<stat_group_name>, ...
    ]
}

出错时,CBOR 数据的形式如下:

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

其中:

“stat_list”

表示组名的字符串数组;如果没有组,该数组可以为空。

“err” -> “group”

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

“err” -> “rc”

包含基于分组的错误码的索引。仅在使用 SMP 版本 2 且该值非零(错误状态)时出现。

“rc”

mcumgr_err_t,仅在使用 SMP 版本 1 且该值非零(错误状态)时出现,或在使用 SMP 版本 2 且出现 SMP 错误时出现。