蓝牙学习之通过OP CODE解析输入输出数据

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 模型。
相关推荐
MartinYeung59 小时前
[论文学习]大语言模型安全综述:攻击、防御、对齐、度量与护栏的深度解析
学习·安全·语言模型
AOwhisky10 小时前
Python 学习笔记(第三期)——流程控制:条件判断与循环结构
运维·笔记·python·学习·云原生·流程控制·循环
心中有国也有家10 小时前
AtomGit Flutter 鸿蒙客户端:白噪音场景的视觉设计
学习·flutter·华为·harmonyos
心中有国也有家11 小时前
AtomGit Flutter 鸿蒙客户端:呼吸练习的完整生命周期
学习·flutter·华为·harmonyos
Zeeland11 小时前
构建护城河:自学习 Agent
学习
brave_zhao11 小时前
nginx的进程架构
java·学习·nginx
枫零NET11 小时前
跟着OpenCode学习Pi Coding Agent-05-Agent的类型系统
人工智能·学习
Day(AKA Elin)11 小时前
【Day】MTP(Multi Token Prediction)技术学习
python·深度学习·学习·llama
Waay11 小时前
Linux 三个核心环境变量配置文件、作用域、生效方式完整梳理
linux·运维·学习·云原生·容器
枫零NET12 小时前
跟着OpenCode学习Pi Coding Agent-06-Agent循环
学习