bluedroid中的start discovery代码流程

本文详细解析了Android 4.4系统中蓝牙搜索的代码流程,从JNI层的startDiscoveryNative函数开始,经由bluetoothInterface的start_discovery入口,深入到btif_dm_start_discovery函数,设置搜索参数并调用BTA_DmSearch执行蓝牙设备搜索。
摘要由CSDN通过智能技术生成

    之前看到某位大神的博客android -- 蓝牙 bluetooth (三)搜索蓝牙,介绍了Android中蓝牙的搜索过程,从framework到service,再到JNI、bluetooth stack,大致的流程讲得很清楚。这里我了解了一下Android4.4中bluetooth stack中的代码流程,总结如下。

    在JNI层中调用startDiscoveryNative函数,最终指向stack层bluetoothInterface(bluetooth.c)结构的成员函数start_discovery,这便是stack层的入口。在btif_dm_start_discovery(btif_dm.c)函数中设置了discovery的相关参数,并调用BTA_DmSearch(&inq_params, services, bte_search_devices_evt)来执行。这个函数的内容如下:

void BTA_DmSearch(tBTA_DM_INQ *p_dm_inq, tBTA_SERVICE_MASK services, tBTA_DM_SEARCH_CBACK *p_cback)
{

    tBTA_DM_API_SEARCH    *p_msg;

    if ((p_msg = (tBTA_DM_API_SEARCH *) GKI_getbuf(sizeof(tBTA_DM_API_SEARCH))) != NULL)
    {
        memset(p_msg, 0, sizeof(tBTA_DM_API_SEARCH));

        p_msg->hdr.event = BTA_DM_API_SEARCH_EVT;
        memcpy(&p_msg->inq_params, p_dm_inq, sizeof(tBTA_DM_INQ));
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值