首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在BLE中,使用白色列表的自动连接意味着什么?这和直接广告一样吗?

在BLE中,使用白色列表的自动连接意味着什么?这和直接广告一样吗?
EN

Stack Overflow用户
提问于 2022-03-28 13:02:34
回答 1查看 186关注 0票数 0

我已经试验了Bluez 5.50蓝牙堆栈,这里我对使用白名单的过程自动连接有一些困惑。

假设,

设备A-广告器

设备B-扫描仪

configuration

  • If

  • 添加广告商(设备A)蓝牙地址作为扫描设备(设备B)中的白名单,

  • 设备A将使用“可连接的无定向”adv类型和默认adv params

  • 设备B将开始扫描“仅接受来自白名单中的设备的PDU”,而不是明确地B将发送连接请求到A(不发送连接创建命令)

配对设备与白名单设备的基本区别是什么?

EN

回答 1

Stack Overflow用户

发布于 2022-03-28 14:19:59

白名单既可以用于扫描,也可以在连接时使用。

请注意,广告期间的数据包交换是这样的,当中央设备正在扫描时:

ADV_IND.

  • Scanner SCAN_REQ.

  • Advertiser发送
  1. Advertiser发送SCAN_RSP.

当中心设备对外围设备进行挂起启动(即连接尝试)时,分组交换如下:

ADV_IND.

  • Initiator
  1. Advertiser发送CONNECT_IND.
  2. The连接现在是established.

注意,以上流中的数据包之间的定时是150微秒(T_IFS),这是相当快的。如果广告商没有检测到SCAN_REQ,它就不会发送SCAN_RSP。如果它也没有检测到CONNECT_IND,它就不会进入连接状态,而是继续做广告。需要有一个白名单,因为主机不会足够快地决定包是否应该丢弃。因此,白名单直接实现在蓝牙控制器硬件。

使用白名单的中央设备将简单地删除任何具有在白名单中找不到的地址的ADV_IND。因此,在这种情况下不发送SCAN_REQ或CONNECT_IND。

因此,“自动连接”是指发起者不断寻找发件人地址在白名单中的ADV_IND数据包时。如果找到一个,就会发送一个CONNECT_IND并建立连接,从而导致一个"LE connection Complete“事件。使用白名单是拥有两个或多个挂起连接的唯一方法,否则在启动连接时需要指定一个目标地址。(虽然有时在不能使用白名单时会使用变通方法,例如,如果它太小,无法包含所有所需的地址,那就是让中央首先执行扫描,然后启动到目标地址的连接,并且有一些短暂的超时。这会引入延迟,因为至少必须发送两个ADV_INDs。)

成对/键合的设备是完全不同的东西。这意味着这两个设备都存储在其数据库中,有关远程设备的信息,如加密密钥、客户端特征配置描述符状态、gatt db缓存。键合设备通常也会在用户界面中列出。

当在建立连接时使用白名单时,可以在此非键合设备列表中包含地址。您还可以拥有当前不希望连接到的绑定设备,然后这些设备将不包括在白名单中。

我上面写的是一般的BLE,没有任何特定的蓝牙堆栈。当使用白名单时,BlueZ可能有某些条件/流。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71647899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档