当前位置:   article > 正文

bluedroid末期总结

bluedroid

 

1. 前言: 1

2. bluedroid的初始化 1

2.1. 调用关系图: 2

2.2. 运行结果: 2

2.3. 线程buif_task()启动: 3

2.3.1. 调用关系图: 3

2.3.2. 运行结果: 4

3. bluedroid启动(enable) 4

3.1. 调用关系图: 5

3.2. 运行结果: 5

3.3. bt_hc_worker_thread线程启动:收发HCI事件 6

3.3.1. 调用关系图: 6

3.3.2. 运行结果: 6

3.4. Btu_task线程启动:等待并分发消息给profile模块 7

3.4.1. 调用关系图: 7

3.4.2. 运行结果: 8

4. bluedroid扫描设备(start_discovery) 10

4.1. 调用关系图: 11

4.2. 运行结果: 12

 

1. 前言:

在移植bluedroid的过程中,以下是我总结的移植代码的方法:

 

1、首先必须搞清楚程序的逻辑模块;

2、掌握程序的起始和终止函数;

3、添加所有头文件;

4、注释所有函数体内容,从起始函数开始一步一步添加。

 

 

2. bluedroid的初始化

init----->启动buif_task()任务:等待并处理来自BTA消息):

 

2.1. 调用关系图:

 

 

 

 

 

 

2.2. 运行结果:

 

 

 

2.3. 线程buif_task()启动:

 

等待并处理来自BTA消息

 

1、因为我们已经要开始等待事件了,因此要通知JAVA/JNI层,记得刚刚我们有注册了回调,那么就通过宏HAL_CBACK(bt_hal_cbacks, thread_evt_cb, ASSOCIATE_JVM);来通知JNI

2、进入for(;;)

3、调用GKI_wait,等待一个事件的返回

4、判断事件 event == BT_EVT_TRIGGER_STACK_INIT,如果是,就调用BTA_EnableBluetooth(bte_dm_evt)初始化蓝牙芯片组

5、判断事件event & EVENT_MASK(GKI_SHUTDOWN_EVT,如果是,就对出任务循环

6、判断事件event & TASK_MBOX_1_EVT_MASK 判断是否是1mbox里面的事件。

7、如果第6步满足判断事件,那么判断事件 event  & BT_EVT_CONTEXT_SWITCH_EVT,如果是,调用btif_context_switched(p_msg)切换上下文

8、回第三步

 

2.3.1. 调用关系图:

 

 

 

2.3.2. 运行结果:

 

3. bluedroid启动(enable)


创建线程btu_task()bt_hc_worker_thread()

bt_hc_worker_thread():收发HCI事件

btu_task():等待并分发消息给profile模块 

 

3.1. 调用关系图:

 

         

3.2. 运行结果:

 

 

 

3.3. bt_hc_worker_thread线程启动:收发HCI事件

 

3.3.1. 调用关系图:

  

 

3.3.2. 运行结果:

 

 

 

 

 

 

 

3.4. Btu_task线程启动:等待并分发消息给profile模块 

1btu_init_core(); 初始化核心control block,比如BTU, BTM, L2CAP, and SDP

2BTE_InitStack();初始化BTE控制块,比如RFCOMM, DUN, SPP, HSP2, HFP, OBX, BIP

3#if (defined(BTU_BTA_INCLUDED) && BTU_BTA_INCLUDED == TRUE)  //初始化BTA

   bta_sys_init();
   #endif 

4#if ( BT_USE_TRACES==TRUE )  //此宏用于调试,是否设置?

     BTE_InitTraceLevels();  
     #endif

5、进入for(;;)

6、处理事件的列表://为什么不是全部?

     TASK_MBOX_0_EVT_MASK

     TIMER_0_EVT_MASK

     TIMER_1_EVT_MASK

     TIMER_2_EVT_MASK

     RPCGEN_MSG_EVT

     TASK_MBOX_2_EVT_MASK

     EVENT_MASK(APPL_EVT_7) //APPL_EVT_7事件

 

3.4.1. 调用关系图:

 

 

 

 

 

 

 

3.4.2. 运行结果:

 

 

 

 

 

 

4. bluedroid扫描设备(start_discovery)

 

4.1. 调用关系图:

 

 

Btu_task:从邮箱中读取参数并调用bta_sys_event()根据注册的事件及相应的事件处理函数进行处理:直接贴运行结果:

 

4.2. 运行结果:

 




 

 

完成通过hci_h4_send_msg()将查询命令发送给蓝牙模块!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/820343
推荐阅读
相关标签
  

闽ICP备14008679号