广播包
让我们来看看一个广播包的结构。BLE数据包的主要部分为协议数据单元(PDU)。根据类型不同,PDU可以是广播PDU(有时称为广播信道PDU)或者数据PDU(数据信道PDU),取决于BLE数据包用于广播还是数据传输。


头部结构包括:
-
PDU Type:决定广播类型,如ADV_IND等
-
RFU:保留供将来使用
-
ChSel:若支持LE信道选择算法#2则置1
-
TxAdd(发射方地址):0或1,取决于发射方是公有/随机地址
-
RxAdd(接收方地址):0或1,取决于接收方是公有/随机地址
-
Length:负载长度
详细字段说明可查阅蓝牙SIG官方核心规范。
负载分两部分,前6字节是广播设备地址(AdvA),其余为实际广播数据(AdvData)。

特别说明:负载结构依广播类型变化,如定向广播(ADV_DIRECT_IND)要指定接收设备地址,这时AdvData字段被6字节的接收地址取代。因此该类型广播包实际无广播数据负载。

-
完整本地名称(BT_DATA_NAME_COMPLETE):用户扫描时看到的设备名
-
简短本地名称(BT_DATA_NAME_SHORTENED):精简名
-
URI(BT_DATA_URI):广播网址等URI
-
服务UUID:区分不同Profile的唯一编号,便于中心筛选目标设备
-
厂商自定义数据(BT_DATA_MANUFACTURER_DATA):公司自定义广告数据字段,iBeacon等都用此字段
-
标志Flags:1位标志,指示设备特性或模式
示例:设置BT_LE_AD_NO_BREDR这个flag的广告数据结构如图。

Flags占1字节共8个可用bit,常见Flags如下:
-
BT_LE_AD_LIMITED:置为有限可发现模式,中心扫描仅限时有效
-
BT_LE_AD_GENERAL:一般可发现模式,长期开放广播
-
BT_LE_AD_NO_BREDR:不支持经典蓝牙
LIMITED与GENERAL常用于外围设备广播。
您的资助是我最大的动力!
金额随意,欢迎来赏!

浙公网安备 33010602011771号