我正在尝试了解从蓝牙堆栈到 Android 蓝牙芯片的通信流程。我在这里找到了有关 Android 蓝牙的文档。但是,它没有详细描述通信,尤其是从蓝牙堆栈到芯片的通信。以下是我的问题:
与 BT 芯片及其流程的通信涉及哪些系统模块?
HCI 在上述流程中的作用是什么?
- HCI 是否执行与蓝牙芯片的实际通信(命令和数据传输)?还是只执行记录通信(HCISnoop 日志)。
如果有人可以就我的查询提供清晰的解释或链接,我将不胜感激。
提前致谢。
我正在尝试了解从蓝牙堆栈到 Android 蓝牙芯片的通信流程。我在这里找到了有关 Android 蓝牙的文档。但是,它没有详细描述通信,尤其是从蓝牙堆栈到芯片的通信。以下是我的问题:
与 BT 芯片及其流程的通信涉及哪些系统模块?
HCI 在上述流程中的作用是什么?
如果有人可以就我的查询提供清晰的解释或链接,我将不胜感激。
提前致谢。
与 BT 芯片及其流程的通信涉及哪些系统模块?
通常,蓝牙堆栈(不仅是 Bluedroid)将通过 uart(嵌入式设备,如电话或车载设备)或 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 部分(从代码角度来看),但您也可以说它不属于 HCI 部分(从逻辑角度来看)。