蓝牙广播报文

参考:

https://bbs.huaweicloud.com/blogs/309276

https://blog.csdn.net/weixin_48033504/article/details/122638836

低功耗蓝牙两类报文 : 广播报文 和 数据报文。
本文讨论广播报文数据段,不包括完整报文其他部分,比如前导,接入地址等

蓝牙设备通过广播表明自己的存在,等待被连接。
BLE 考虑功耗, 使用了3个广播信道,顺序广播。

两个蓝牙设备想要建立连接, 第一步是 从机(server) 向外广播, 主机(client) 搜索到后发起请求。 从机广播中包含设备的相关信息,比如设备名称,设备具有的服务uuid 等。

广播包类型

  • 广播包 (Advertising Data)
  • 响应包 (Scan Response)
    主机主动扫描的情况下, 发送扫描请求给从机, 从机返回扫描响应数据。

 广播数据包格式

每个包都是 31 字节,数据包中分为有效数据(significant)和无效数据(non-significant)两部分。

  • 有效数据部分
    包含若干个广播数据单元,称为 AD Structure 。如图所示,AD Structure 的组成是

    • 长度 Len ,表示这个 AD Structure 的长度(除去 len本身 1)
    • 类型 AD Type
      标记这段广播数据代表什么, 比如设备名, uuid 等。
    • 数据 AD data
  • 无效数据部分
    广播包的长度必须是 31 个 byte,如果有效数据部分不到 31 自己,剩下的就用 0 补全。这部分的数据是无效的。

报文解析举例:

如手机收到如下一大串广播报文,由上面广播报文格式可知,AD struct 由两部分组成: LEN + Data(Data包含AD type + AD data)。由于底层将LEN (值为0x17 即23 )过滤了,所以这里智能看到data部分。

2,1,6,6,16,-51,-6,1,1,1,c,9,
    54,41,50,45,20,4c,49,47,48,54,53,


    3,19,-80,5 ,c,9,
    41,49,47,4f,20,4c,49,47,48,54,53,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

第1个2 表示报文中第1个AD structure len 为2,1为AD type表示设备标识 ,设备标识值为6

2, 长度
1, 设备标识 
6, 

第2个AD struct len 为2,AD type 为16 表示Service Data, 0xFAAF 、0x010101

6, 长度
16, Service Data
-51,-6, UUID 0xaf fa 
1,1,1, Data

c, = 12 : 长度
9, : 设备名称
54,41,50,45,20,4c,49,47,48,54,53,     //第一个包,11个字节为 “TAPE LIGHTS” 的ASCII值,

3, 长度
19, : 设备外观
-80,5, 

c, =12 :长度
9: 设备名称
AIGO LIGHTS :
41,49,47,4f,20,4c,49,47,48,54,53,   //第二个包
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,

AD Type 类型都是统一定义的。

https://www.bluetooth.com/wp-content/uploads/Files/Specification/HTML/Assigned_Numbers/out/en/Assigned_Numbers.pdf?v=1721807828088

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值