同学,别退出呀,我可是全网最牛逼的 Android 蓝牙分析博主,我写了上百篇蓝牙文章,请点击下面了解本专栏,进入本博主主页看看再走呗,一定不会让你后悔的,记得一定要去看主页置顶文章哦。
开始学习蓝牙协议栈的同学,阅读代码时候,遇到的第一个问题就是,当遇到发送event时候,就追踪不到代码了,直接接下来就不知道看啥代码了,小弟曾经初步学习的时候,也遇到过此问题,今天我就根据我多年经验,详细讲解下蓝牙协议栈消息(event)发送机制。
一、今天以搜索设备为例,讲解下蓝牙协议栈消息机制:
void BTA_DmSearch(tBTA_DM_SEARCH_CBACK* p_cback, bool is_bonding_or_sdp) {
81 tBTA_DM_API_SEARCH* p_msg =
82 (tBTA_DM_API_SEARCH*)osi_calloc(sizeof(tBTA_DM_API_SEARCH));
83
84 /* Queue request if a device is bonding or performing service discovery */
85 if (is_bonding_or_sdp) {
86 p_msg->hdr.event = BTA_DM_API_QUEUE_SEARCH_EVT;
87 } else {
88 p_msg->