楼主能否将问题描述清楚。
我不明确楼主你的问题,我尽量把我知道的相关的告诉你。
1. BLE 广播数据格式:
BLE广播数据是有一定格式的,最长31个字节,由一个一个的AD struct 组成,每个AD struct 又是由length+AD Type+AD Data
组成。详情图片见蓝牙 core Advertising and Scan Response data format
2. 广播数据解析。
假如扫描者扫描到这么一串广播数据,如何解析(下面格式都按照16进制处理):
02 01 06 07 09 31 32 33 34 35 36 05 03 ff f0 ff f1 07 ff 80 ea ca 00 00 00
首先应当将数据分成若干个AD struct ,根据1 我们知道这样分:
len AD type AD data
02 01 06
07 09 31 32 33 34 35 36
05 03 ff f0 ff f1
07 ff 80 ea ca 00 00 00
AD type 用于表征不同的数据类型,比方说,我 AD type = 0x09 代表的是设备的名字,则后面接着的数据是名字的具体数据,这里是 “123456”。
AD type = 0x01 代表的是Flags. 这里06表示支持可以被发现,支持BLE,但不支持BR/EDR的单模芯片。
AD type = 0x03 代表的是完整的16位UUID 列表。 这里有两个 ff f0 和 ff f1(这里我没有实际查看大小段数据格式,也有可能是0xf0ff 和0xf1ff,具体请自己尝试)
AD type 可以在以下链接找到
https://www.bluetooth.com/specifications/assigned-numbers/generic-access-profile/
AD data 的详细内容可以参考我上传的附件CCS_v8.pdf (Supplement to the Bluetooth Core Specification)
3. 对应到ST BLE stack中的主要函数API
a.查找方法, 对应到所有的你要调用stack 的BLE功能相关的函数,请在bluenrg1_api.h中查找
b. 对应所有的stack 告知你的函数,请在bluenrg1_even.h中查找
c. 具体的我就不一一列,我一般也是通过猜关键字去查的。比方说 adv report.
|