继续蓝牙系列的研究。
在上篇博客,通过阅读BTStack的源码,大体了解了其框架,对于任何一个BTStack的应用程序都有一个main函数,这个main函数是统一的。这个main函数做了某些初始化之后,最终会调用到应用程序提供的btstack_main,在btstack_main里面首先做一些初始化,然后调用hci_power_on函数去打开蓝牙模块。
一. 数据类型
运行BTStack程序时,会生成hci_dump.pklg文件,可以使用WireShark打开此文件,截图如下:
怎么理解上图中的数据呢?
BTStack中涉及的数据有2类:
1.从硬件上获得的数据、发给硬件的数据
2.为更新系统状态而虚构的数据
1. 跟硬件相关的数据有4类:
① 发送给蓝牙控制器的Command
② 从蓝牙控制器获得的Event,蓝牙控制器收到Command后会回复Event
③ ACL数据,这涉及收、发两个方向
④ SCO数据