设置(配置)管理组

设置管理组(在原始 MCUmgr 仓库中称为 Configuration Manager)定义了以下命令:

Command ID

命令描述

0

读/写设置

1

删除设置

2

提交设置

3

加载/保存设置

请注意,Zephyr 版本增加了原始上游版本不支持的额外命令和功能,不过原始客户端的功能对于读/写操作应该仍然可用。

读/写设置命令

读/写设置命令用于更新设备上的设置条目,或从设备获取设置的当前值。

读取设置请求

读取设置请求头部字段:

OP

Group ID

Command ID

0

3

0

请求的 CBOR 数据:

{
    (str)"name"         : (str)
    (str,opt)"max_size" : (uint)
}

其中:

“name”

要读取的设置名称字符串

“max_size”

要返回的数据的最大大小(可选)

读取设置响应

读取设置响应头部字段:

OP

Group ID

Command ID

1

3

0

成功响应的 CBOR 数据:

{
    (str)"val"          : (bstr)
    (str,opt)"max_size" : (uint)
}

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

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

其中:

“val”

返回数据的二进制字符串;注意,无法通过此接口指定底层数据类型,客户端必须自行了解该类型。

“max_size”

如果设备支持的最大数据大小小于请求的最大数据大小,则会设置该字段,其中包含设备支持的最大数据大小,相当于 Kconfig 选项 CONFIG_MCUMGR_GRP_SETTINGS_NAME_LEN。

“err” -> “group”

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

“err” -> “rc”

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

“rc”

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

写入设置请求

写入设置请求头部字段:

OP

Group ID

Command ID

2

3

0

请求的 CBOR 数据:

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

其中:

“name”

要更新/设置的设置名称字符串

“val”

要将设置设为的值

写入设置响应

写入设置响应头部字段:

OP

Group ID

Command ID

3

3

0

成功时,该命令发送一个空的 CBOR 映射作为数据。出错时,CBOR 数据的形式如下:

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

其中:

“err” -> “group”

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

“err” -> “rc”

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

“rc”

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

删除设置命令

删除设置命令用于删除设备上的设置。

删除设置请求

删除设置请求头部字段:

OP

Group ID

Command ID

2

3

1

请求的 CBOR 数据:

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

其中:

“name”

要删除的设置名称字符串

删除设置响应

删除设置响应头部字段:

OP

Group ID

Command ID

3

3

1

成功时,该命令发送一个空的 CBOR 映射作为数据。出错时,CBOR 数据的形式如下:

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

其中:

“err” -> “group”

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

“err” -> “rc”

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

“rc”

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

提交设置命令

提交设置命令用于将所有已设置但尚未在设备上应用的设置提交。

提交设置请求

提交设置请求头部字段:

OP

Group ID

Command ID

2

3

2

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

提交设置响应

提交设置响应头部字段:

OP

Group ID

Command ID

3

3

2

成功时,该命令发送一个空的 CBOR 映射作为数据。出错时,CBOR 数据的形式如下:

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

其中:

“err” -> “group”

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

“err” -> “rc”

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

“rc”

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

加载/保存设置命令

加载/保存设置命令用于从设备上的持久存储加载所有已序列化的项,或将其保存到其中。

加载设置请求

加载设置请求头部字段:

OP

Group ID

Command ID

0

3

3

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

加载设置响应

加载设置响应头部字段:

OP

Group ID

Command ID

1

3

3

成功时,该命令发送一个空的 CBOR 映射作为数据。出错时,CBOR 数据的形式如下:

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

其中:

“err” -> “group”

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

“err” -> “rc”

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

“rc”

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

保存设置请求

保存设置请求头部字段:

OP

Group ID

Command ID

2

3

3

请求的 CBOR 数据:

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

其中:

“name”

如果提供,则包含要保存的设置子树名称(如果启用了 CONFIG_SETTINGS_SAVE_SINGLE_SUBTREE_WITHOUT_MODIFICATION,也可以是单个设置名称);如果不提供,则保存所有设置。

保存设置响应

保存设置响应头部字段:

OP

Group ID

Command ID

3

3

3

成功时,该命令发送一个空的 CBOR 映射作为数据。出错时,CBOR 数据的形式如下:

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

其中:

“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_SETTINGS_ACCESS_HOOK 启用,并使用事件 MGMT_EVT_OP_SETTINGS_MGMT_ACCESS 注册,提供的回调数据为 settings_mgmt_access。