蓝牙学习之通过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 模型。
相关推荐
魔术师Dix4 小时前
StartGame:Unity TDD 外部工程指南
学习·游戏·unity·c#·测试驱动开发
小弥儿4 小时前
GitHub今日热榜 | 2026-07-31:AI Agent工作流共享赛道升温
人工智能·学习·github
小蒋学算法13 小时前
算法-M个非重叠子数组最大和II-WQS二分学习
数据结构·学习·算法
重庆小透明16 小时前
带你从不同视角了解三大MQ
java·学习·spring·kafka·rabbitmq·rocketmq
~光~~16 小时前
【xv6学习】L0_环境配置
单片机·嵌入式硬件·学习
实验如有神祝女士18 小时前
不同参数规模大模型在医学翻译场景的适配差异
论文阅读·人工智能·深度学习·学习·算法·语言模型·论文笔记
若衹如初見21 小时前
一步一步学习使用LiveBindings() LiveBindings图像绑定与自定义绑定方法()
学习·命令模式
kdxiaojie21 小时前
Linux 驱动研究 —— V4L2 (15)
linux·运维·笔记·学习
fanged1 天前
udev番外--动态驱动加载(TODO)
学习
醉城夜风~1 天前
HTML列表标签学习博客:有序列表、无序列表、自定义列表详解
前端·学习·html