uicc详解-3(uicc在UE端的软件架构及命令流程-续)
来源:互联网 发布:电子账单软件 编辑:程序博客网 时间:2024/04/30 02:37
上篇文章中主要介绍了qmi接口到sim命令传输的过程,相反本文将会介绍从sim卡到qmi的传输过程。
先把上文的软件架构图贴出来:
接下来分析uim到qmi uim的过程。
1.先看串口的中断注册函数
该函数注册了uimIntctrlIsr回调函数,接下来依次调用
uimIntctrlIsr->uim_rx_isr->uimdrv_rx_event_cb->uimdrv_rx_state_machine->uim_rx_isr_proc_procedure_bytes->
uim_rx_isr_process_sw2_byte->uim_command_response_callback
在uim_command_response_callback函数中uim_ptr->card_cmd.resp_buf_ptr即为ue收到sim卡的数据,该指针在上文中讲到指向uim_ptr->command.rsp_buf。接下来会设置信号让uim主task来处理响应数据。
回到uim主task中,参考上篇文档可知调用了uim_handle_cmd_rsp_sig,代码如下
uim_handle_cmd_rsp_sig->uim_process_card_response->uim_command_response->
uim_generic_command_response->uim_generic_command
在uim_generic_command会处理下一条命令。直到状态变为UIM_DONE_ST。
在uim_process_generic_response函数中会根据最初发送到命令id来执行对应函数,然后填充cmmand.rpt_buf,调用rpt_function,在上章中讲到在gsdi发送给uim数据的时候将mmgsdi_uim_report赋值给rpt_function,所以在这里调用了mmgsdi_uim_report回调函数。
在mmgsdi_uim_report函数中调用了mmgsdi_cmd_ext函数,在该函数中通过信号队列方式把命令发送给gsdi task。gadi task收到该信号后,调用mmgsdi_handle_queue_sig函数来处理,mmgsdi_handle_queue_sig函数取出队列数据然后调用mmgsdi_process_response函数,mmgsdi_process_response根据cmd id调用了mmgsdi_process_get_all_pin_status_rsp函数,接着在mmgsdi_process_get_all_pin_status_rsp函数中调用mmgsdi_uicc_rsp_pin_status,
在该函数中调用mmgsdi_util_get_client_request_table_info用来拷贝存放之前qmi发送下来的全局变量mmgsdi_client_req_table_info_ptr。
然后调用函数mmgsdi_cnf_build_and_queue给gsdi发送命令(为了统一接口,所以自己给自己发送)。gsdi收到该命令后进入mmgsdi_handle_queue_sig->mmgsdi_process_cnf,在该函数中调用了cnf_ptr->client_req_cb,该函数在上文中qmi发送过来的处理函数中注册过,
即qmi_sim_internal_mmgsdi_response_callback,然后调用qmi_sim_internal_send_get_all_pin_status_ind->qmi_csi_send_ind。
到此,发送给qmi,整个循环完成。
- uicc详解-3(uicc在UE端的软件架构及命令流程-续)
- uicc详解-2(uicc在UE端的软件架构及命令流程)
- uicc详解-4(uicc在UE端的初始化过程)
- UICC
- UICC
- UICC
- uicc详解-1(常识介绍)
- uicc详解-1(常识介绍)
- android telephony 工作流程(一)--UICC概述及SIM卡文件系统
- android telephony 工作流程(二)--UICC上层实现框架
- android telephony 工作流程(三)--UICC CARD & APP 更新
- UICC之UICC框架
- android telephony 之 UICC 卡数据读写及 UICC 框架结构
- android telephony 之 UICC 卡数据读写及 UICC 框架结构
- Uicc之UiccController(原)
- Uicc之UiccCard(原)
- Uicc之UiccCardApplication(原)
- Uicc之IccFileHandler(原)
- SQL 存储过程或语句获取月份简写
- 高德地图车机版API演示程序
- 高德地图车机版API演示程序
- ubuntu下的eclipse中android sdk manager无法打开问题
- 图片编辑
- uicc详解-3(uicc在UE端的软件架构及命令流程-续)
- 页面之间传值乱码
- 如何使用CMD命令行打开文件夹
- 正则表达式 [\w]+ \w+ [\w+]区别
- JavaScript学习笔记之Date的常用方法
- 在drawable下的xml文件中layer-list的用法一:直接指定已有图片资源
- jboss6 Http11NioProtocol 不能调试问题
- 代码笔记 | PHP支持断点续传,分块下载的类
- php数组函数