cpp
<0000>17:16:57:072 [INFO]:(cmd_name)cfg_cmd_sub_set
<0001>17:16:57:072 [INFO]:(common)VC send to gateway is: e8 ff 00 00 00 00 02 01 04 00 80 1d 04 00 00 10
<0002>17:16:57:104 [INFO]:(GATEWAY) gateway mesh cmd sendback src:0001 dst:0004,opcode is 1d80: 04 00 00 10
<0003>17:16:57:169 [INFO]:(cmd_rsp)Status Rsp______________: 04 00 01 00 80 1f 00 04 00 00 00 00 10
在telink的tool上操作cfg_cmd_sub_set后,开发板输出以上信息。下面介绍如何通过op code:1d80来查找标准的输入与输出。
1.在SDK的 app_mesh.h 文件中定义为:#define CFG_MODEL_SUB_DEL_ALL 0x1D80,在Mesh Profile v1.0.1.pdf 的 4.3.4 Messages summary 中 定义为Config Model Subscription Delete All 0x80 0x1D,两者符合。
2.定位文档

| 字段 | 大小(字节) | 说明 |
|---|---|---|
ElementAddress |
2 | 元素的单播地址(其他地址类型如组地址、虚拟地址不允许使用) |
ModelIdentifier |
2 或 4 | 模型标识符,分为两种: - 2字节:SIG Model ID(蓝牙技术联盟定义的标准模型) - 4字节:Vendor Model ID(厂商自定义模型) |
对<0002>解析如下
| 字段 | 值 | 含义 |
|---|---|---|
| src | 0001 |
源地址:发送这条消息的节点地址是 0x0001(通常是网关或配网器)。 |
| dst | 0004 |
目的地址:接收这条消息的节点地址是 0x0004(目标设备)。 |
| opcode | 1d80 |
操作码:0x801D(注意:蓝牙Mesh通常使用小端序 Little Endian,日志显示 1d80 实际代表 Opcode 0x801D)。 |
| payload | 04 00 00 10 |
因为小端序,实际为 00 04 10 00,单播地址:0x0004,SIG Model ID:0x1000 在蓝牙Mesh协议中,SIG Model ID 为 1000(十六进制 0x1000) 表示一个由蓝牙技术联盟(SIG)定义的标准模型。具体来说,0x1000 对应的是 Generic OnOff Server 模型。 |
总结:网关(0x0001)向目标设备(0x0004)发送了一条标准指令 ,目的是清空该设备上"Generic OnOff Server "模型的订阅列表,使其不再响应相关的组播或虚拟地址消息。
3.设备答复<0003>
SDK中的定义为:#define CFG_MODEL_SUB_STATUS 0x1F80,在蓝牙标准文档里:Config Model Subscription Status 0x80 0x1F,两者符合。

| 字段 (Field) | 长度 | 数据值 (Hex) | 解析说明 |
|---|---|---|---|
| Status | 1字节 | 00 |
成功 (Success) 表示刚才的配置操作(如添加或删除订阅)已在设备端成功执行。 |
| ElementAddress | 2字节 | 04 00 |
0x0004 (小端序) 这是目标设备的单播地址。表示该状态是针对地址为 0x0004 的设备的。 |
| Address | 2字节 | 00 00 |
0x0000 (小端序) 这是被操作的地址。值为 0x0000 通常出现在"删除所有"操作中,或者表示未分配地址。 |
| ModelIdentifier | 2字节 | 00 00 10 |
0x1000 (小端序) 这是模型 ID。对应 Generic OnOff Server 模型。 |