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

标签 bluetooth profiles

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

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

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

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

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

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

提前感谢所有聪明的人!

最佳答案

根据 Controller 和主机中实现的程度,有多种方式如何在系统中实现蓝牙功能。

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

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

    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 用例,这是正确的。您需要使用具有所需硬件功能(固件+硬件资源)的 Controller 。

    对于场景 1 和 2,配置文件和支持协议(protocol)将在 Controller 中实现。

    关于bluetooth - 蓝牙配置文件在蓝牙系统中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42626885/

    相关文章:

    security - 使用散列和盐通过 SSL 进行身份验证

    iphone - 同时播放两种声音,其中一种通过蓝牙发送 - iOS 和 Android

    c# - 将具有配置文件的网站转换为 Web 应用程序项目

    java - 子模块中不会继承 Maven 配置文件

    java - Android:在蓝牙应用程序的单个 APK 上支持多个 API 级别

    iOS和蓝牙

    Flutter 蓝牙打印到 Zebra

    python - Django - 如何以最佳方式编写用户和配置文件处理?

    ios - 当我在带有iOS 9.2的phone6s中安装企业应用程序时,但是找不到常规配置文件?

    java - pom 中的 Maven 配置文件