https://mp.weixin.qq.com/s/oe89XpRO7-9bdmCaAhyYAw
1. BLE广播
BLE设备可以通过广播(Advertisement)周期性的向周围的设备发送消息,广播消息格式展开如下:
广播通道上的PDU数据总共有7个类型,分别为4Advertising + 2 Scanning +1 Connect-request。进一步的展开ADV_IND消息格式如下:
最终,看到AdvData由一个个ADStructure组成,每个advStructure包括三个部分:
-
AD length,AD Type和AD Data的长度
-
AD Type:AD Data的数据含义,
-
AD Data:AD Type所指示的数据
AD type定义在Core Specification Supplement(CSS) v7
BLE规范允许厂商定义自己的ADtype,此时AD type值为0xFF,基于此,Apple和Google公司分别定义了一种特殊的BLE广播,这就是iBeacon和EddystoneBeacon,即Beacon是一种厂商自己定义的广播数据,这种广播类型是不可连接,不可扫描的,即类型为ADV_NONCON_IND。
2. iBeacon
iBeacon 规范定义在 https://developer.apple.com/ibeacon/
其ADV data定义如下
例如 一个iBeacon的ADVdata如下:
0x0201061AFF4C0002151048E70A5D61492525698305449030901005A77C0
就可以尝试对比上面的结果分析。
3. Google Eddystone
Google Eddystone Beacon定义在:
https://developers.google.com/beacons/eddystone
其ADV data定义如下
4. 应用
基于iBeacon的定位:
https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdf