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

Bluetooth 蓝牙配置文件在蓝牙系统中的位置,bluetooth,profiles,Bluetooth,Profiles,我的问题很基本。我需要知道蓝牙协议栈中加载的所有蓝牙配置文件(如HID、HFP或HSP)在哪里?它是在主机层还是在蓝牙硬件芯片组(如USB加密狗/模块)中,还是在主机和芯片组侧 据我所知,我们可以在主机端使用BlueZ之类的软件包实现蓝牙配置文件,但同时,连接到主机的蓝牙芯片组在其芯片组中应该需要某种固件和逻辑(如CSVD、A-law) BlueZ Android软件包文档中有一句话:“HFP中的宽带语音支持要求BT芯片采用mSBC编解码器”。这意味着,只有当BT芯片组提供诸如mSBC之类的低级

我的问题很基本。我需要知道蓝牙协议栈中加载的所有蓝牙配置文件(如HID、HFP或HSP)在哪里?它是在主机层还是在蓝牙硬件芯片组(如USB加密狗/模块)中,还是在主机和芯片组侧

据我所知,我们可以在主机端使用BlueZ之类的软件包实现蓝牙配置文件,但同时,连接到主机的蓝牙芯片组在其芯片组中应该需要某种固件和逻辑(如CSVD、A-law)

BlueZ Android软件包文档中有一句话:“HFP中的宽带语音支持要求BT芯片采用mSBC编解码器”。这意味着,只有当BT芯片组提供诸如mSBC之类的低级支持时,主机层才能实现该配置文件

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

PFA我的理解图

我需要选择与Raspberry Pi兼容的USB蓝牙加密狗,并使用BlueZ定制HID和HFP


感谢所有聪明的头脑

在系统中实现蓝牙功能的方式有多种,具体取决于在控制器和主机中实现的程度

  • 控制器中的所有内容-应用程序、上层堆栈、HCI(下层和上层堆栈通过HCI命令和事件进行通信)、下层堆栈。示例:大多数蓝牙鼠标、键盘等,其中一个控制器负责一切(蓝牙、RTOS/调度程序、控制设备中的LED等)
  • 主机中的应用程序和控制器中堆栈的上下部分。可以或不可以在控制器中实施HCI。 示例:我们使用专用蓝牙芯片并将其与设备集成。在这里,设备将应用数据传输到专用蓝牙芯片。所有与蓝牙协议相关的事情都将通过BT控制器/芯片完成。如果您将HC-05模块与Arduino模块一起使用,Arduino将向HC-05模块传输串行数据
  • 主机中的应用程序和上层堆栈以及控制器中的下层堆栈。Bluez、Bluedroid和操作系统中的所有其他堆栈都属于这种类型。这将通过HCI命令和事件与控制器通信。 示例:手机、电脑、带蓝牙的电视等(具有强大应用程序处理器的设备)
  • 假设你问的是第三种类型。在这种情况下,你的假设是正确的。此处,所有配置文件仅在主机中实现。但支持它们所需的协议/编解码器将在控制器中实现(固件或硬件块)。例如,GAP(对于BR-EDR)在主机中实现,但加密和解密算法在控制器中作为固件或硬件块实现。对于A2DP配置文件,音频编解码器/解码器将在控制器中实现。然后,BT芯片通过I2S或其他协议将这些音频数据传输到主机。对于BLE安全管理器配置文件,加密/解密算法在主机本身中实现,但白名单、自动连接等将在控制器中实现

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

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


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

    到目前为止,希望我的假设如上所述是正确的。