我试图了解从蓝牙堆栈到Android的蓝牙芯片之间的通信流程。我为安卓这里找到了有关蓝牙的文档。然而,它没有详细描述通信,特别是从蓝牙堆栈到芯片之间的通信。以下是我的问题:
如果有人能为我的查询提供明确的解释或链接,我将不胜感激。
提前谢谢。
发布于 2016-09-12 04:54:07
与BT芯片的通信涉及哪些系统模块及其流程?
通常,蓝牙协议栈(不仅仅是Bluedroid)将通过uart(嵌入式设备如电话或carkit)或USB(大多数在PC上使用)与芯片进行通信,然后在一个用于从芯片读取的线程(使用H4协议或BCSP)上,我们可以将写入线程作为一个线程(也可以是相同的协议)。流程就像初始化过程中一样,蓝牙芯片将启动(在Linux或Android上使用rfkill ),堆栈将打开硬件接口(如UART ),编写一些配置文件(例如本地蓝牙地址)和补丁文件,然后将芯片加热。在此之后,芯片和堆栈可以正常工作:
HCI在上述流程中的作用是什么?
我不知道您对“上述流程中的HCI”一词是什么意思,我想您指的是数据流还是其他东西?栈将判断从芯片发送的数据包类型,将数据包划分为HCI事件、用户数据(L2CAP)或其他类型的数据包格式,然后将它们(回叫)传输到上层,如RFCOMM或AVDTP。另一方面,上层协议和配置文件会收集数据,然后发送到蓝牙芯片。
HCI是否执行与蓝牙芯片的实际通信(命令和数据传输)?或者它只执行记录通信(HCISnoop日志)。
HCI实际上只是主机和控制器之间的接口,所以首先是它们的一些部分代码会在某个地方生成btsnoop日志,对于实际的通信,您可以说它属于HCI部分(从代码的角度来看),但是您也可以说它不属于HCI部分(从逻辑角度)。
https://stackoverflow.com/questions/39431990
复制相似问题