Periodic Advertising Sync Transfer (PAST)[未完结]

Periodic Advertising Sync Transfer 是BT 5.1的一个新feature,SIG官网上有一篇文章介绍的还不错What You Need to Know About Periodic Advertising Sync Transfer。这里就做一个简单的总结。
这个新概念的引入,本质上是为了省电。对于Legacy的advertising,Advertiser在interval附近会加一个Delay(0~10ms),那么Scanner就需要多开窗来抓到adverting 数据包,增加耗电,而PAST概念就是为了在某个场景下可以解决这个问题。
先看下几种Advertising的概念

1.Legacy Advertising

Legacy Advertising只在37/38/39三个Channel上打,为了避免adv event刚好跟Scannner的scan window完美错过,在Adv的Interval上会加一个随机值advDalay,让Anchor点随机shift一点点,增加与Scanner的scan window碰撞的几率,示意图如下:
Legacy Adv
下图为Legacy Adv的PDU的格式:
Legacy Adv

2.Extended Advertising

Legacy Advertising能发送的Adv data有限,所以后来又衍生出了 extended adv:在Data channel里也可以打Adv data,如下图。
Extended Adv
而Extended Advertising引入的概念就比较多了,比如:

  • Advertising Handle,
  • Advertising Set
  • Advertising Data ID

当收到的Adv的type是 ADV_EXT_IND 时,Adv的Payload的数据格式如下:
Payload with ExtendedAdv
Extended Header format
Extended Adv Header Flags

3.Periodic Advertising

在Extended Advertising的基础上,在发送大量数据的时候又引入了Periodic Advertising。
Periodic Advertising 流程的建立有两种方式:

3.1 正常的Scanner 和 Advertiser的交互

如下图中AoD Transmitter 与 Smartphone的Sync。

3.2 已经有Periodic Advertising Synchronization infomation的一方,将该data通过 LE-C 转发给另外一个跟它连线的设备,就是PAST。

如下图右图中Smartphone 与Wearable Device之间的关系,Wearable device在前期不需要开Scan去抓ADV_EXT_IND就知道后续要到哪里去收AUX_SYNC_IND包,从而节约了电能。

4. 关于PAST的细节:

下图是Spec中关于Periodic Advertising的一个Sequence flow。
PAST 对比
message 流程图如下:
下面三图中A是Scanner,B是Advertiser,A和B中有一个与C有BLE连线,那么会有三种情况:

4.1 A与B建立了Sync,A与C有连线,A通过LL_PERIODIC_SYNC_IND将Sync information通知给C,那么C就可以收B的Periodic Sync advertising。

4.2 流程同4.1,只是C一开始就Enable了report.

4.3 A与B建立Sync,B与C有连线,B通过LL_PERIODIC_SYNC_IND将Sync information通知给C,那么C就可以收B的Periodic Sync Advertising data了。