第四节 周期性广播

Mark Walen大约 9 分钟

PADVB——低功耗周期性广播

基础

ADV 广播逻辑传输(参见第三节 ADVB - 低功耗广播)发送的广播包传输在时序上包含一定程度的随机性。在广播事件的调度中,故意插入了 0 到 10 毫秒之间的随机延迟,以避免持续的数据包冲突。在执行传统广播时,这是广播工作的唯一方式。

周期性广播涉及按确定性调度传输数据包,并提供一种机制,允许其他设备根据广播设备的调度调整它们的扫描活动,以与广播设备设定的时间保持一致。这种同步确保了参与设备之间的有效通信和互动。周期性广播始终是不可扫描和不可连接的。周期性广播可以通过为观察设备提供更省电的扫描方式来提高效率,是 LE 音频广播解决方案中的关键组成部分。

广播以固定的间隔进行,称为周期性广播间隔,广播数据负载可能会发生变化。一系列 AUX_SYNC_IND 和相关的 AUX_CHAIN_IND PDU 形成了一个周期性广播传输。

在每个周期性广播事件中,先传输一个 AUX_SYNC_IND PDU,然后根据主机提供的负载是否需要分片,传输零个或多个 AUX_CHAIN_IND PDU。

AUX_ADV_IND PDU 包括一个称为 SyncInfo 的字段,它是通用扩展广播有效负载格式的一部分,包含信道和时序偏移信息。

信道使用

周期性广播使用 37 个通用广播信道。在每个周期性广播事件的开始,使用信道选择算法#2选择一个信道,该算法的输入是事件计数器 paEventCounter 字段。计数器在每个周期性广播事件中递增。与 AUX_SYNC_IND PDU 相关的任何辅助 AUX_CHAIN_IND PDU 都使用特定于实现的算法进行信道选择,并在 AuxPtr 字段中指定。请参见图 1。

调度

周期性广播间隔确定广播集的周期性广播的发生频率。它始于 AUX_SYNC_IND PDU 的传输,并随后传输零个或多个 AUX_CHAIN_IND PDU,如图 1 所示。

Periodic advertising events
图 1. 周期性广播事件

请注意,图 1 已经简化,可能有多个在不同主广播信道上的 ADV_EXT_IND PDU 被表示为一个单一的框。

同步建立

扫描设备可以通过两种方式之一与周期性广播传输进行同步。它可以扫描 AUX_ADV_IND PDU,并使用 SyncInfo 字段的内容来确定要使用的周期性广播间隔、时序偏移和信道信息,或者它可以通过 LE-ACL 连接从另一台设备接收此信息,该设备本身已经从 AUX_ADV_IND PDU 中确定了此信息。这种方法被称为周期性广播同步传输过程。

PAwR —— 具有响应的 LE 周期性广播

基础

PAwR 与 PADVB 相似之处:

  • PADVB 允许应用数据由一个设备(广播者)传输到一个或多个接收设备(观察者),形成一对多的通信拓扑结构。PAwR 也是如此;
  • PAwR 和 PADVB 都使用物理机的通信方式;
  • 广播数据包的传输在两种情况下均是周期性的,具有固定的间隔,并且在调度中没有随机扰动。
  • 观察者可以通过AUX_ADV_IND PDU或使用周期广播同步传输(PAST)程序来建立由广播者使用的周期传输计划;

PAwR 与 PADVB 不同之处:

  • 数据通信机制
    • PADVB支持从广播者到观察者的单向数据通信;
    • PAwR观察者可以向广播器发送响应数据包。PAwR提供双向、无连接的通信机制。
  • 同步信息
    • PADVB 的同步信息包含在 AUX_ADV_IND PDU 的 SyncInfo 字段中;
    • PAwR 的同步信息包含在 AUX_ADV_IND PDU 的 SyncInfo 字段和 ACAD 字段中。
  • 数据传输
    • PADVB 广播者在广播事件内安排传输;
    • PAwR 广播者在一系列事件和子事件中安排传输,观察者预期以同步的方式进行,以便仅在特定子事件或子事件期间进行监听。
  • 发送连接请求,建立 LE-ACL 连接
    • PADVB 不具备这个能力;
    • PAwR 广播器可以使用传输时隙发送连接请求(AUX_CONNECT_REQ PDU)到特定设备,并与其建立 LE-ACL 连接。
  • 数据更改
    • 在 PADVB 中,应用数据往往只在一段时间内更改;
    • PAwR 设计时预期应用数据会频繁更改。
  • 应用数据传递
    • 使用 PADVB,相同的应用数据传递给所有与同一广播集同步的观察者设备;
    • 使用 PAwR,可以将不同的数据传递给每个观察者设备或一组观察者设备。

支持 PAST 过程对 PADVB 来说是可选的,对 PAwR 是必须的。

信道的使用

信道选择是通过使用信道选择算法 #2 完成的,并且在每个周期广播子事件中进行(参见 2.3 调度)。在子事件中传输的 PDU 的响应使用相同的信道。这包括对AUX_SYNC_SUBEVENT_IND PDU 的响应中发送的 AUX_SYNC_SUBEVENT_RSP PDU 以及对 AUX_CONNECT_REQ PDU 的响应中发送的 AUX_CONNECT_RSP PDU。

调度

与其他广播模式一样,PAwR 的活动发生在“PAwR 事件”中。这些事件以固定的间隔发生,调度中没有随机扰动。每个周期广播间隔 ms 开始一个事件。

每个 PAwR 事件包含多个子事件,在子事件期间传输广播数据包。主机可以配置每个事件的子事件数量,最多 128 个。每个周期广播子事件间隔 ms 开始一个子事件。主机(HOST)使用 HCI 命令 HCI_LE_Set_Periodic_Advertising_Parameters V2(或更高版本),配置每个事件的子事件数量和周期广播子事件间隔。

PAwR events and subevents
图 2. PAwR 事件与子事件

在每个子事件中,广播者传输一个数据包,通常包含一个 AUX_SYNC_SUBEVENT_IND PDU,但也可能包含一个 AUX_CONNECT_REQ PDU。在延迟(称为周期广播响应时隙延迟)之后,在同一子事件中保留了一系列时间间隙,用于接收观察者设备的响应。对AUX_SYNC_SUBEVENT_IND PDU 的响应发送在 AUX_SYNC_SUBEVENT_RSP PDU 中。主机通过 HCI 命令 HCI_LE_Set_Periodic_Advertising_Parameters 配置所需的响应时隙数量。图 3 说明了 PAwR 子事件的结构。

A PAwR subevent with response slots
图 3. PAwR 有响应时间间隙的子事件

同步建立

通用

同步的过程为观察者设备提供了它需要的信息,以便有效地扫描并接收由广播设备传输的相关数据包。在 PAwR 的情况下,这涉及到三个方面:

  • 观察者需要知道 PAwR 事件的发生频率,以及下一个事件何时发生。这些信息包含在一个周期广播间隔参数和 syncPacketWindowOffset 的计算值中;
  • 观察者需要关于子事件的信息,包括它们的发生频率以及每个周期广播带响应事件容纳多少个子事件。它还需要了解与每个子事件中用于响应传输的时间时隙有关的某些详细信息。这些信息包含在 Subevent_Interval、Num_Subevents、Response_Slot_Delay、Response_Slot_Spacing 和 Num_Response_Slots 参数中。
  • 最后,观察者需要知道它应该扫描哪个子事件号,应该使用哪个特定的响应时隙,并在传输的响应数据包中使用哪个接入地址。

(1) 和 (2) 中描述的事件时间信息和子事件信息已被观察者获取,从而得到了 PAwR 广播传输的事件和子事件的完整时序参数和结构描述。但只有当具备 (3) 中的信息时,它才能调度其扫描,以仅接收那些预计包含相关数据的数据包,并安排响应数据包的传输。

(1) 和 (2) 由 PAwR 逻辑传输处理,如蓝牙核心规范中所定义。有两种可选择的程序可用于获取这一级别的同步信息。这两种程序在本文中涵盖在“扫描周期广播同步信息”和“周期广播同步传输(PAST)”章节中。

(3) 必须由应用层处理,并可以在适用的蓝牙配置文件规范中定义,例如电子货架标签(ESL)配置文件。

扫描周期广播同步信息

PAwR 和 PADVB 各自使用类似的过程通过扫描获取周期广播同步信息。

在 PAwR 和 PADVB 中,观察者扫描在次级广播信道上传输的AUX_ADV_IND数据包。AUX_ADV_IND 包括 SyncInfo 字段,其中包含周期广播间隔值以及用于计算称为syncPacketWindowOffset 的变量的一些数据项。获取了这两个值后,观察者可以计算带响应的周期广播事件将何时发生,参见(1)中的概述。

PAwR 还需要有关子事件和响应时隙的信息,参见(2)中的概述,才能完成同步过程。这些信息可以在从中获取周期广播间隔的 AUX_ADV_IND PDU 中找到,但在“周期广播响应定时信息”的广播数据类型(AD 类型)中,该类型本身位于 PDU 的附加控制器广播信息(ACAD)字段中。

周期广播同步传输(PAST)

在使用 PAST 过程时,有时设备在连接上传递同步参数之前会首先代表另一设备进行扫描以获取同步信息。然而,在 PAwR 的情况下,对于 PAST 的支持是强制性的,因此 PAwR 广播器可以通过 LE ACL 连接向观察者传递所需的同步数据。如果采用这种方法,任何设备都不需要进行 AUX_ADV_IND PDU 的扫描。

子事件同步和响应时间时隙分配

子事件同步涉及指示观察者设备应该执行扫描的子事件。一个或多个观察者设备可以同步到同一个子事件。一个观察者可能会同步,以在一个或多个子事件期间接收。

此外,为了使观察者能够发送响应 PDU,它必须有某种依据来确定使用哪个子事件响应时隙。

这两个方面的责任都属于应用层。