蓝牙广告数据

Bluetooth Advertising Data

我想了解蓝牙的基础知识。我对经典和低功耗蓝牙的扫描和广告几乎没有疑问。

  1. 是从GAP profile中读取的EIR数据(经典蓝牙扩展查询响应)和AD数据(蓝牙低功耗扫描响应)。 GAP 配置文件的数据存储在哪里?它是在主机上还是在控制器上?

  2. 是否有不同的经典 GAP 配置文件和不同的 LE GAP 配置文件?

  3. 当我们使用hcitool cmd启用广告(低功耗)或启用可发现模式(经典蓝牙)时,控制器如何获取所有广告信息(扫描响应/扩展查询响应)?它存储在控制器上吗?

  4. 如蓝牙规范4.2 section 7.8.8 LE Set Scan Response Data命令中所述,可用于为扫描数据包提供数据。这与 GAP 不同吗?

  5. Gatt 服务器 运行 是否在连接形成之前?如果不是,那么 GAP 配置文件(用于广告)在连接之前如何相关?

  6. EIR 数据和 AD 数据中的相同字段(例如设备名称)可以不同吗?

  1. 是的,EIR 和 AD 元素均由 GAP 配置文件定义。这是在主机中管理的。

  2. 不,同一个GAP配置文件适用于经典和BLE。但是,设备可以支持其中之一或两者。我的意思是,如果您有一个仅限经典的设备,那么资格将针对经典的 GAP 配置文件,而如果您有一个仅限 LE 的设备,那么资格将针对仅限 LE 的 GAP 配置文件。换句话说,就蓝牙资格而言,这两个 GAP 配置文件似乎是分开的,但在设备本身上它是一个 GAP 配置文件。

  3. 理论上,与 GAP 相关的信息在主机层进行管理,然后传递给 to/from 下层(参见下图蓝牙核心规范)。然后控制器获取信息并以蓝牙规范为 EIR/AD 数据指定的数据包格式将其发送出去。

  1. 这要看你说的GAP是什么意思?为避免混淆,GAP 可以是您的 GATT table 中的一项服务,但这与 GAP 配置文件并不完全相同。位于 GATT table 中的 GAP 服务是 GAP 配置文件的一个子集,因为它包含一些关于 GAP 配置文件的信息,但不是 1:1 直接反映。扫描响应数据本身由 GAP 配置文件定义,但通常不包含在 GAP 服务中。以下是扫描响应数据 (SRD) 的所有 mandatory/optional 字段的列表。您可以在 Supplement to the Core Specification.
  2. 中找到此信息和更多信息

  1. 是的,在建立连接之前应该形成GATT服务器(也称为GATT table)。但是,GATT table 可以在已经建立连接时更新。在这种情况下,我相信您指的是与 GAP 配置文件略有不同的 GAP 服务。

  2. 不,EIR/AD数据中相同的字段应该有相同的值。这反映在核心蓝牙规范 v5.3,第 3 卷,C 部分,第 3.2.2.1.1 节中的设备名称描述中:-

A BR/EDR/LE device type shall have a single Bluetooth Device Name which shall be identical irrespective of the physical channel used to perform the name discovery procedure.

如果您还没有这样做,我强烈建议您阅读蓝牙核心规范 v5.3,第 3 卷,C 部分(第 1230 页)- 通用访问配置文件,因为它将回答所有这些问题等等。

以下是一些额外的有用资源:-