蓝牙广播包与蓝牙数据包
通用数据格式
PREAMBLE 8bit:前导数据
为01010101或10101010,用来识别为蓝牙数据,进行自动信号增益
Access Address 32bit:蓝牙接入地址
广播为0x8E89BED6;
数据通道为随机值由LL维护;
CRC 24bit:循环冗余校验
广播数据
广播数据头
PDU Type
广播类型TxAdd和RxAdd用来判断公共地址0,随机地址1
当为公共地址
当为随机地址
ADVERTISING DATA广播数据
广播数据 | ||||||
---|---|---|---|---|---|---|
先导 | 接入地址 | 广播数据头 | 有效数据长度 | 广播数据地址 | 广播数据若干 | CRC |
每条广播数据:都由数据长度、数据类型、数据内容格式组成
SCAN_REQ扫描请求数据
扫描请求数据 | ||||||
---|---|---|---|---|---|---|
先导 | 接入地址 | 广播数据头 | 有效数据长度 | 扫描设备地址 | 广播设备地址 | CRC |
SCAN_RSP扫描响应数据
扫描响应数据 | ||||||
---|---|---|---|---|---|---|
先导 | 接入地址 | 广播数据头 | 有效数据长度 | 广播数据地址 | 扫描响应数据 | CRC |
CONNECT_REQ连接请求
连接请求 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
先导 | 接入地址 | 广播数据头 | 有效数据长度 | 广播数据地址 | 发起者地址 | 广播者地址 | CRC初始化参数 | 连接参数 | 信道地图 | CRC |
数据包格式
数据通道 | |||||||
---|---|---|---|---|---|---|---|
先导 | 接入地址 | 数据头 | 有效数据长度 | L2CAP长度 | CID | 若若干数据 | CRC |
数据头格式
LLID:区分是L2CAP数据还是LL数据
LLID | |
---|---|
01 | L2CAP消息延续或空PDU |
10 | L2CAP数据起始 |
11 | LL数据 |
SN = 当前序列号
NESN = 期待的下一个序列号
LL层数据
L2CAP层数据
所有应用程序数据都是通过L2CAP包发送
L2CAP层数据:所有应用程序数据都是通过L2CAP包发送
CID | |
---|---|
0X0004 | 属性协议信道:用于收发属性协议层的数据, |
0X0005 | 信令信道:用于处理应用层发送的命令 |
0X0006 | 安全管理协议信道:用于处理加密、配对和绑定等相关数据 |
命令信道支持的命令
支持的命令:连接参数更新请求与连接参数更新响应、COC连接命令
###ATT信道
数据通道 | |||||||
---|---|---|---|---|---|---|---|
先导 | 接入地址 | 数据头 | 有效数据长度 | L2CAP长度 | CID:0x0004 | 数据通道的数据 | CRC |
数据通道的数据:由ATT协议操作码、ATT属性组成
ATT协议操作码