微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 我整理的MTK的事件处理

我整理的MTK的事件处理

时间:10-02 整理:3721RD 点击:
拿BTMMISpp.c的event,SRV_SPP_EVENT_READY_TO_READ来举例
1.srv_spp_set_notify_hdlr函数注册回调mmi_bt_spp_event_handler,注册给了spp_inst_head,srv_spp_instance类型
2.SppSrv.c中,srv_spp_init_event_hdler,注册回调srv_spp_disconnect_ind,event id为MSG_ID_BT_SPP_DISCONNECT_IND,如果收到event MSG_ID_BT_SPP_DISCONNECT_IND,回调srv_spp_disconnect_ind被调用,这个函数会调用srv_spp_notify_app,srv_spp_notify_app里面会调用inst->notifier(evt_id, para);这个函数指针就是mmi_bt_spp_event_handler
3.MSG_ID_BT_SPP_DISCONNECT_IND这个event通过mmi_frm_set_protocol_event_handler函数注册到protocol_event_handler_funcptr这个全局的函数指针数组,mmi_frm_search_event去查找注册到数组的哪个元素
4.mmi_frm_execute_current_protocol_handler用来接收l4层发送过来的消息,调用全局函数指针数组的某个元素,使用mmi_frm_search_event去查找。
具体过程:
  MMI_task() --> OslReceivEMSgExtQ从外部q获取消息,即l4层的消息 --> OslWriteCircularQ将消息放到内部Q --> OslReADCircularQ从内部q拿走一个消息 --> mmi_frm_execute_current_protocol_handler将消息发送到php?mod=tag&id=6090" target="_blank" class="relatedlink">Framework层

感谢分享。

赞一个  

学习了~~~~~~~~~~~~

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top