【问题标题】:Bluetooth Communication flow in AndroidAndroid中的蓝牙通信流程
【发布时间】:2017-01-18 19:25:57
【问题描述】:

我正在尝试了解从蓝牙堆栈到 Android 蓝牙芯片的通信流程。我找到了有关 Android 蓝牙 here 的文档。但是,它没有详细描述通信,尤其是从蓝牙堆栈到芯片的通信。以下是我的问题:

  1. 与BT芯片通信涉及的系统模块有哪些 及其流程?

  2. HCI 在上述流程中的作用是什么?

  3. HCI 是否执行与蓝牙芯片的实际通信(命令和数据传输)?还是只执行记录通信(HCISnoop 日志)。

如果有人可以就我的查询提供清晰的解释或链接,我将不胜感激。

提前致谢。

【问题讨论】:

  • 蓝牙主要通过Socketsteams通信
  • @cricket_007 感谢您的回复。我相信 Socket 位于上层。我有兴趣了解 BT stack 和 BT Chip 之间所涉及的通信流程和模块。

标签: android bluetooth android-hardware hci


【解决方案1】:

与BT芯片通信涉及的系统模块有哪些? 它的流程?

通常蓝牙堆栈(不仅是 Bluedroid)会通过 uart(嵌入式设备,如手机或车载设备)或 USB(大多数用于 PC)与芯片通信,然后在一个线程上用于从芯片读取(使用 H4 协议或BCSP),我们可以将写线程作为一个线程(也是相同的协议)。 流程就像在初始化过程中一样,蓝牙芯片会上电(使用 rfkill 例如在 Linux 或 Android 上),堆栈会打开硬件接口,例如UART,写入一些配置文件(例如本地蓝牙地址)和补丁文件,然后热休息芯片。之后芯片和堆栈可以正常工作:正常:。

What is the role of HCI in the above flow?

我不确定“上述流程中的 HCI”一词是什么意思,我假设您是指数据流或其他内容?堆栈会判断芯片发出的数据包类型,分为HCI事件、用户数据(L2CAP)或其他类型的数据包格式,然后将它们传输(回调)到上层,例如RFCOMM 或 AVDTP。另一方面,上层协议和配置文件将收集数据然后将其发送到蓝牙芯片。

HCI 是否执行与蓝牙芯片的实际通信(命令和数据传输)?还是它只执行记录 通信(HCISnoop 日志)。

HCI 实际上只是主机和控制器之间的接口,所以首先是的,它们的某些部分代码会在某处生成 btsnoop 日志,关​​于实际通信,您可以说它属于 HCI 部分(从代码角度来看)但是您也可以说它不属于HCI部分(从逻辑角度)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多