蓝牙角色
主机:负责连接从机
从机:负责发送广播数据或给从机连接
连接成功后可以相互通信
广播数据组成
广播数据 包含 广播包(必须)和应答包(非必须,视应用需要)
广播包或者应答包都是31字节。分为有效数据和无效数据。
有效数据:实际广播出去的数据
无效数据:全0数据
一条 广播包中可以有多条广播数据(structure
一条广播数据包含:长度,数据类型,实际数据。
长度:数据类型的长度+实际数据长度。
数据类型 每个类型都有对应的值表示。在下一小节具体说明。
比如一个广播包中只有2条数据(只占10个字节),则剩余21个字节用0补全(不需要手动)(无效数据)
对广播包解析时不需要对无效数据进行解析
数据类型(AD Type)
[注:] 有些类型没弄懂,弄懂了会继续更新上去
Flags (0x01)
用来标识设备 BLE 物理连接的功能
说明:
bit0:有限的可发现模式
bit1:普通的发现模式
Bit2:不支持经典蓝牙
Bit3:支持经典蓝牙和低功耗蓝牙(对于controller)
Bit4:支持经典蓝牙和低功耗蓝牙(对于Host)
Bit5-7:保留
Service UUID (0x02-0x07)
广播数据中一般都会把设备支持的 GATT Service 广播出来,用来通知主机本设备所支持的 Service
此类型有6种形式
16bitsUUID | 不完整的16bits uuid |
完整的16bits uuid | |
32bitsUUID | 不完整的32bits uuid |
完整的32bits uuid | |
128bitsUUID | 不完整的128bits uuid |
完整的128bits uuid |
LOCAL_NAME (0X08,0X09)
蓝牙设备名字(有简写和完整两种)
当使用简写设备名称时,名字需从全称第一个字符开始,连续的N个字符。如全称为“BLE_Device_name”,则缩写则可以定义为“BLE_Dev”,“BLE_Device”
type | 值 |
Short local name | 0x08 |
Complete Local name | 0x09 |
MANUFACTURER SPECIFIC DATA(0xFF)
制作商特定的信息(自定义信息)
前两个字节包含公司的标识码,后紧跟数据
TX POWER LEVEL (0x0A)
当次数据包的传输功率
可根据下列公式计算数据包的传输路径损失
pathloss=tx_power_level - RSSI
SECURE SIMPLE PAIRING OUT OF BAND
SECURITY MANAGER OUT OF BAND
SECURITY MANAGER TK VALUE
使用带外机制来传递TK值
SLAVE CONNECTION INTERVAL RANGE
连接间隔范围
最小值取决于外设的电池考虑,最大连接间隔取决于外设上可用的缓冲器 (个人理解为外设的处理时间)
主机连接时,应使用该连接间隔
数据有4个字节,前两字节定义最小连接间隔,后两字节定义最大连接间隔
connInterval = Conn_Interval_Min (Conn_Interval_Max)* 1.25 ms
Conn_Interval_Min范围:0x0006到0x0C80
Conn_Interval_Max范围:0x0006 到0x0C80
值最小为61.25=7.5ms 最大为32001.25=4sSERVICE SOLICITATION
服务请求
发送此广播类型时,从机要设置为无定向模式和可发现模式之一
SERVICE DATA
服务数据
由服务UUID和与该服务关联的数据组成
APPEARANCE
定义设备外观
PUBLIC TARGET ADDRESS
公共地址
定义广播一个或多个预期收件人的地址
用于避免绑定设备不必要地响应针对另一个绑定设备的广告的情况
RANDOM TARGET ADDRESS
随机地址
具体功能与PUBLIC TARGET ADDRESS一致
ADVERTISING INTERVAL
广播间隔
数据:2字节,单位为0.625ms
LE BLUETOOTH DEVICE ADDRESS
本地设备地址和地址类型
数据:前6字节为设备地址
最后一字节的bit0表示为随机地址还是公共设备地址
LE ROLE
蓝牙角色
数据:1字节
0x00:从机 0x01:主机
0x02:主从机,建立连接时首选从机角色
0x03:主从机,建立连接时首选主机角色
其他:保留备用
UNIFORM RESOURCE IDENTIFIER(0x24)
广播URI,采用UTF8格式
例如:广播 “http://www.bluetooth.com”
则用捉包工具可捉到
LE SUPPORTED FEATURES
设备支持的特性
CHANNEL MAP UPDATE INDICATION
只能出现在包含AUX_SYNC_IND PDU的包的扩展报头中
BIGINFO
包含同步接收器同步到正在由同步广播器广播的大信号所需的信息
BROADCAST_CODE
加密的广播代码的字符串格式
蓝牙学习目录
【注】:资料会持续更新,大神们看到有误可以留言更正,欢迎来踩