蓝牙配置文件在蓝牙系统中的位置

Location of Bluetooth Profile in Bluetooth System

我的问题非常basic.I 需要知道所有蓝牙配置文件(如 HID、HFP 或 HSP)加载到蓝牙堆栈的何处?它是在主机层还是在 USB dongle/module 等蓝牙硬件芯片组中,还是在主机和芯片组端?

根据我的理解,我们可以使用 BlueZ 等包在主机端实现蓝牙配置文件,但同时连接到主机的蓝牙芯片组内部需要某种固件和逻辑(如 CSVD、A-law)它的芯片组。

在 BlueZ Android 包文档中找到的引述:"Wideband Speech support in HFP it is required that BT chip assumes mSBC codec"。这意味着只有 BT 芯片组提供像 mSBC 这样的低级支持时,主机层才能实现该配置文件。

我的回答是这样的:“如果 BT 芯片组配备支持配置文件 'X' 的下划线低级固件,我们可以在主机层上构建任何蓝牙配置文件 'X'”。请同意或不同意我的理解。

我理解的PFA图 Position of profile and its low-level firmware

我需要 select 与 Raspberry Pi 兼容的 USB 蓝牙加密狗并使用 BlueZ 自定义 HID 和 HFP。

提前感谢所有聪明的头脑!

根据控制器和主机中实现的程度,有多种方法可以在系统中实现蓝牙功能。

  1. 控制器中的所有内容 - 应用程序、上层堆栈、可能会或可能不会 HCI(下层和上层堆栈通过 HCI 命令和事件进行通信)、下层堆栈。示例:大多数蓝牙鼠标、键盘等,其中一个控制器负责一切(蓝牙、RTOS/scheduler、控制设备中的 LED 等)
  2. 主机中的应用程序和控制器中堆栈的下部和上部。可能会也可能不会在控制器中实施 HCI。 示例:我们使用专用蓝牙芯片并将其与设备集成的地方。这里设备会将应用数据传输到专用蓝牙芯片。所有与蓝牙协议相关的事情都将从 BT controller/chip 完成。如果您使用的是 HC-05 模块和 Arduino 模块,Arduino 会将串行数据传输到 HC-05 模块。
  3. 主机中的应用程序和上层堆栈以及控制器中的下层堆栈。 Bluez、Bluedroid 和操作系统中的所有其他堆栈都属于这种类型。这将通过 HCI 命令和事件与控制器通信。 示例:手机、电脑、带蓝牙的电视等(具有强大应用处理器的设备)

所以假设您问的是第三种类型。在这种情况下,您的假设是正确的。这里所有配置文件仅在主机中实现。但是支持它们所需的 protocols/codec 将在控制器(固件或硬件块)中实现。例如,GAP(对于 BR-EDR)在主机中实现,但加密和解密算法在控制器中作为固件或硬件块实现。对于 A2DP 配置文件,音频 codec/decoders 将在控制器中实现。然后 BT 芯片将此音频数据传输到具有 I2S 或其他协议的主机。对于 BLE 安全管理器配置文件,encryption/decryption 算法在主机本身中实现,但是白名单、自动连接等将在控制器中实现。

My Answer is like this: " We can build any Bluetooth Profile say 'X' on Host layer if BT chipset is equipped with underlining Low-level firmware which supports the Profile 'X'".Please agree or disagree with my understanding.

对于 BlueZ 用例,这是正确的。您需要使用具有所需硬件能力(固件+硬件资源)的控制器。

对于场景 1 和 2,配置文件和支持协议将在控制器中实现。