蓝牙学习之通过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 模型。
相关推荐
小李不想当小白4 分钟前
PCB结构与组成(PCB设计入门学习笔记)
经验分享·笔记·单片机·嵌入式硬件·学习·pcb工艺·pcb
那年窗外下的雪.5 分钟前
第 02 天:Linux 权限、inode、目录项与链接
学习·http
XGStudio202423 分钟前
免费安全的 - 二维码转换工具
学习·ai
邵奈一39 分钟前
【紧急处理ZCode事件】ZCode 工作区快照静默上传:检测方法与三层防护实践
人工智能·学习·大模型·国产
那年窗外下的雪.1 小时前
AIDC 学习日志|第 27 天|EVPN 多归属收敛时间线与 Leaf2 接管验证
网络协议·学习·http·tcpdump
秦哈哈1 小时前
【HelloAgents】学习笔记(四)
学习·ai·agent
j7~2 小时前
【Linux】三十八.C++ 手写 HTTP 服务器:裸 socket + fork 多进程,从 HTTP 报文解析到浏览器打开网页
linux·网络·网络协议·学习·http·网络编程
日拱一卒的小田2 小时前
ZYNQ学习笔记4-ZYNQ的SD卡控制器2
笔记·学习
外收内放2 小时前
Python与AI应用(项目开发实战:AI智能伴侣第一版)
python·学习·ai编程
へ蟲児.2 小时前
幼儿英语启蒙APP怎么选,专业性、适配性、实用性三大角度解读
学习