FiRa标准——蓝牙OOB规范(二)
  fgEzWBuBS8L1 2023年11月12日 26 0

本文针对FiRa标准中,蓝牙设备的广播发现流程进行描述。

其中,CP为FiRa Bluetooth Connector Primary, 主连接器的简称;

CS为FiRa Bluetooth Connector Secondary,辅助连接器的简称。

1、蓝牙设备发现

基于蓝牙GAP和GATT角色,有以下一些示例需要考虑:

  • FiRa设备具有匹配的单个蓝牙GAP角色(GAP广播者/外设角色,或GAP扫描/Central 角色)
  • FiRa设备具有单个蓝牙GAP广播/外设角色,vs FiRa设备具有两个蓝牙GAP角色。
  • FiRa设备具有单个蓝牙GAP扫描器/Central角色,vs FiRa设备具有两个蓝牙GAP角色。
  • 所有FiRa设备都具有两个蓝牙GAP角色(广播者/外设角色,或扫描器/Central 角色)

关于蓝牙CSR的角色:广播者(Advertiser)、扫描者(Scanner)、从设备(Slave)、主设备(Master)、发起者(Initiator)。

由于几种情况有一定的相似性,重点对第一种情况和第4种情况进行了描述。

1.1 设备发现情形一

1.1.1 CPR Advertiser行为

广播方,支持SCAN_REQ/SCAN_RSP流程(对主动扫描的响应)。

应使用扩展广播通道/PDUs,如果实现上支持。

Advertiser应公开在蓝牙核心规范补充V10中定义的CP UUID。

Advertiser可以在“Service Data”中公开附加参数,AD type。

1.1.2 CSR Scanner行为

Scanner应支持主动扫描流程(通过SCAN_RSP/SCAN_REQ方法)。如果可能,Scanner应支持扩展广播信道/PDUs。

Scanner负责实际设备的发现流程,因为其可以检测广播者,此外还应建立蓝牙连接的初始化(在蓝牙链路层作为Master),基本算法如下:

  1. 扫描者等待检测广播者(接收ADV_IND包);
  2. 扫描者应执行主动扫描,收集附加数据。(SCAN_REQ/SCAN_RSP包)
  3. 广播者通过公开UUID,指示CP(Connector Primary,主连接器)的存在。
  1. 扫描者搜寻UWB Indication data,若检测到,扫描者获取接收包的RSSI值,若该值高于或等于设定的蓝牙RSSI门限指示,则作为蓝牙GAP Central设备初始化连接。否则,继续执行发现算法。
  2. 若“UWB Indication data”没有提供,扫描者可以根据供应商的内部策略初始化连接(基于RSSI门限)或继续设备发现算法。
  1. 在广播者没有指示主连接器(CP)存在的情况下,扫描者可以根据供应商的内部策略初始化连接,或继续设备发现算法。

case 2/case 3默认按照case 1来执行。

1.2 设备发现case 4

1.2.1 主连接器(CP)广播者行为

在该配置中,CPR设备的广播者/外设角色行为与case 1中描述的完全相同,除了“UWB指示数据”字段中的蓝牙GAP角色指示放置到FiRa “Service Data”AD类型对象中。


1.2.2 CS广播者行为

广播者应支持SCAN_REQ/SCAN_RSP流程(应答主动扫描)。

广播者应使用扩展广播信道/PDUs,如果在实现中支持。


广播者应公开在蓝牙核心规范供应(Bluetooth Core Specification Supplement v10)CS UUID。

相关“Service Data”AD type结构体定义如表5所示。(基本与CP UUID的AD type相似)


1.2.3 CP扫描者行为

Scanner应支持主动扫描流程(通过SCAN_RSP/SCAN_REQ方法)。在蓝牙中,当广播者收到Scanner的SCAN_RSP/SCAN_REQ之后,可以广播应答。

如果可能,Scanner应支持扩展广播信道/PDUs。

Scanner负责实际的设备发现流程,因为其可以检测广播者,并负责建立蓝牙连接的初始化(在蓝牙链路层作为Master,即Central角色)。在双模情况下,CP端(Connector Primary,主连接器)的算法如下:

  1. 扫描者等待检测广播者(接收ADV_IND包);
  2. 扫描者应执行主动扫描,获取附加数据。(SCAN_REQ/SCAN_RSP包)
  3. 在双模情况下,广播者通过公开UUID,指示CS(Connector Client)的存在
  1. 扫描者在CS UUID的“Service Data”AD type对象中搜寻UWB Indication data,若检测到,扫描者获取来自特定广播者的接收包的RSSI值,若该值高于或等于设定的蓝牙RSSI门限指示,则作为蓝牙GAP Central设备初始化连接。否则,继续执行发现算法。——即信号强度要满足门限,才启动连接。
  2. 若“UWB Indication data”没有提供,扫描者可以根据供应商的内部策略初始化连接(如基于任意RSSI阈值)或可以继续从头执行设备发现算法。
  1. 在广播者没有指示CS存在的情况下,扫描者可以根据供应商的内部策略初始化连接,或继续执行设备发现算法。

CP侧的扫描者可以在连接CS之后停止广播。如果决定使用GAP Central角色进行实际数据交换,也可以拒绝/中止来自CS侧的任何传入/正在进行的连接。

1.2.4 CS扫描者行为

CS设备的操作与示例1的设备发现一致,仅一个例外:如若来自CP的广播对象中,“UWB指示数据”字段中指示双重GAP角色支持(BIT0,设置为0b1),则应限制连接到此类设备。相反,可以继续发现过程,以便发起与另一个设备的连接。

如果CS扫描者检测到这样的CP广播者,则可以增加广播频率或信号强度,以便从CP侧触发蓝牙连接。


补充信息

GAP,Generic Access Profile,保证不同的蓝牙产品可以互相发现对方并建立连接。GAP定义了蓝牙设备如何发现和建立与其他设备的安全/不安全连接。

在BLE下,GAP Role有四种:

  • Broadcaster : 发送advertising events的设备(有Transmitter, 可能有Receiver)
  • Observer : 接收advertising events的设备(可能有Transmitter, 有Receiver)
  • Peripheral : 物理链路上接受连接的设备, 在LL层Connection State为Slave(有Transmitter和Receiver)
  • Central : 物理链路上发起连接的设备, 在LL层Connection State为Master(有Transmitter和Receiver)



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  fgEzWBuBS8L1   2023年11月02日   142   0   0 UWBAndroid
  fgEzWBuBS8L1   2023年11月02日   72   0   0 FiRa无线通信
  fgEzWBuBS8L1   2023年11月02日   61   0   0 UWBios
fgEzWBuBS8L1