蓝牙知识了解
蓝牙包结构分析
蓝牙数据解析
空中蓝牙包
例子
- 前导码+接入地址+包头+长度+地址+数据+crc校验
- 前导码0xaa或0x55看接入地址低字节的最后一位(相异)。
- 接入地址,广播(0x8e89deb6),其他待补充
- crc 三个字节。详细后面说。二种方法算,按位直接计算;查表(半字节,一字节,二字节)速度和表的大小负相关。crc初值 0x55555
- 01–flag
- bit 0: LE 有限发现模式
- bit 1: LE 普通发现模式
- bit 2: 不支持 BR/EDR
- bit 3: 对 Same Device Capable(Controller) 同时支持 BLE 和 BR/EDR
- bit 4: 对 Same Device Capable(Host) 同时支持 BLE 和 BR/EDR
- bit 5…7: 预留`
- 19–外观
- ff–厂商信息 09–蓝牙名称 16 service uuid and data
非完整的 16 bit UUID 列表: TYPE = 0x02;完整的 16 bit UUID 列表: TYPE = 0x03;非完整的 32 bit UUID 列表: TYPE = 0x04;完整的 32 bit UUID 列表: TYPE = 0x05;非完整的 128 bit UUID 列表: TYPE = 0x06;完整的 128 bit UUID 列表: TYPE = 0x07;
- 包头 蓝牙数据的格式 类型 pdu type
- 长度是指 地址+数据。length 这里的长度是指长度后面的数据包长,不包含crc
例如: 02 15 不可链接广播,21字节长度。 - 地址是指mac地址。由公共地址和随机地址。公共需要钱才能用、随机分为静态地址和动态地址,动态地址有格式要求,不展开。
- crc计算完之后,需要白化,才能在空中传播。为了防止多个连续0或1出现。
蓝牙广播和数据报文