在 Bluetooth Low Energy (BLE) 广播包(Advertising Packet)中,Type(类型)字段 用于指示广播包的类型,即该包在 BLE 设备通信中的作用。常见的 广告类型 (Advertising Type) 有以下几种:
1. 广播包 (Advertising Packet) 的主要类型
BLE 设备在广播时可以选择不同的广告类型,常见的几种如下:
Type | 广播类型 | 说明 |
---|---|---|
ADV_IND | 可连接非定向广播 (Connectable Undirected Advertising) | 设备可以被扫描和连接,最常用的广告类型 |
ADV_DIRECT_IND | 可连接定向广播 (Connectable Directed Advertising) | 设备专门向某个已知设备广播,以实现快速连接 |
ADV_SCAN_IND | 可扫描非定向广播 (Scannable Undirected Advertising) | 设备允许扫描请求,但不允许连接 |
ADV_NONCONN_IND | 不可连接非定向广播 (Non-connectable Undirected Advertising) | 设备仅用于广播数据,不允许扫描或连接 |
SCAN_RSP | 扫描响应 (Scan Response) | 设备响应扫描请求,提供额外的广播数据 |
2. 广播数据结构中的 Type 含义
除了广播类型,BLE 广播包的数据结构中,每个 广告数据 (AD Data) 也有 Type 字段,表示该字段的数据类型。例如:
Type 值 | 数据类型 | 说明 |
---|---|---|
0x01 | Flags | 指示设备模式(如是否可连接、是否支持 BR/EDR) |
0x02 / 0x03 | Incomplete / Complete List of 16-bit Service UUIDs | 设备支持的 16-bit UUID 服务 |
0x06 / 0x07 | Incomplete / Complete List of 128-bit Service UUIDs | 设备支持的 128-bit UUID 服务 |
0x08 / 0x09 | Shortened / Complete Local Name | 设备名称(部分或完整) |
0x0A | TX Power Level | 设备的发射功率 |
0x16 | Service Data | 包含特定服务的数据 |
0xFF | Manufacturer Specific Data | 厂商自定义数据 |
3. Type 在广播中的实际应用
假设一个 BLE 设备的广播包包含以下数据:
02 01 06 03 03 0A 18 09 08 4C 45 44 05 FF 4C 00 02 15
解析如下:
02 01 06
→ Flags (0x01):0x06
(支持 LE General Discoverable Mode,不支持 BR/EDR)03 03 0A 18
→ Complete List of 16-bit Service UUIDs (0x03):0x180A
(Device Information Service)09 08 4C 45 44
→ Local Name (0x08): "LED"05 FF 4C 00 02 15
→ Manufacturer Specific Data (0xFF): Apple iBeacon 格式这样,我们可以通过 Type 值解析出广播包的具体数据内容。
4. 总结
- 广播包的 Type 主要用于区分不同的广告类型(ADV_IND、ADV_SCAN_IND 等)。
- 广播数据中的 Type 指定数据的类型,例如设备名称、UUID、厂商数据等。