Android中的蓝牙通信流

时间:2016-09-11 01:15:05

标签: android bluetooth android-hardware hci

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

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

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

  3. HCI是否执行蓝牙芯片的实际通信(命令和数据传输)?或者它只执行记录通信(HCISnoop日志)。
  4. 如果有人可以就我的疑问提供明确的解释或链接,我感激不尽。

    提前致谢。

1 个答案:

答案 0 :(得分:0)

  

与BT芯片和通信相关的系统模块是什么?   它的流程?

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

What is the role of HCI in the above flow?

我不确定您对上述流程中的术语" HCI的意思是什么?我认为您的意思是数据流或其他内容?堆栈将判断从芯片发送的数据包类型,将其划分为HCI事件,用户数据(L2CAP)或其他类型的数据包格式,然后将它们(回叫)转移到上层,例如, RFCOMM或AVDTP。另一方面,上层协议和配置文件将收集数据,然后将其发送到蓝牙芯片。

  

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

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