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

时间:2017-03-06 13:27:34

标签: bluetooth profiles

我的问题非常基础。我需要知道所有蓝牙配置文件在蓝牙堆栈中加载了哪些HID,HFP或HSP?它是在主机层还是蓝牙硬件芯片组中,如USB加密狗/模块或主机和芯片组端?

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

在BlueZ Android软件包doc中找到的引用:“HFP中的宽带语音支持要求BT芯片采用mSBC编解码器”。这意味着只有当BT芯片组提供像mSBC这样的低级支持时,Host层才能实现该Profile。

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

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

我需要选择与Raspberry Pi兼容的USB蓝牙适配器,并使用BlueZ自定义HID和HFP。

提前感谢所有聪明的人!

1 个答案:

答案 0 :(得分:1)

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

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

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

  

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

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

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