学习笔记:【QC】Android Q : telephony-phone 模块

一、phone init 流程图

高清的流程图参考【高清图,保存后可以放大看】

二、phone MO 流程图

高清的流程图参考:【高清图,保存后可以放大看】

三、phone MT 流程图

高清的流程图参考:【高清图,保存后可以放大看】

四、Log分析(MO_qcril_hal_分析)


1、RILJ请求dial

enqueue进队列,QCRIL-hal pop出来处理,最后还是调用qmi_client_send_msg_async发送给modem
11-07 17:29:23.598  2758  2758 D RILJ    : [3917]> DIAL [SUB1]
11-07 17:29:23.600  1069  1069 D RILQ    : RIL[1][QcrilMainMessageQueue.cpp: 27] [main(1069,1069)] enqueue: [DispatcherModule-MessageQueue]: enqueuing priority(NORMAL) message 0x7cfe197058 Id: RIL_REQUEST_DIAL
11-07 17:29:23.601  1069  1103 D RILQ    : RIL[1][QcrilMainMessageQueue.cpp: 83] [DispatcherModul(1069,1103)] pop: [DispatcherModule-MessageQueue]: msg: 0x7cfe197058

2、RILJ请求SET_SUPP_SVC_NOTIFICATION

enqueue进队列,QCRIL-hal pop出来处理,发送给modem
11-07 17:29:23.603  2758  2758 D RILJ    : [3918]> SET_SUPP_SVC_NOTIFICATION enable = true [SUB1]
11-07 17:29:23.606  1069  1069 D RILQ    : RIL[1][QcrilMainMessageQueue.cpp: 27] [main(1069,1069)] enqueue: [DispatcherModule-MessageQueue]: enqueuing priority(NORMAL) message 0x7cfe059938 Id: com.qualcomm.qti.qcril.android.RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION
11-07 17:29:23.607  1069  1103 D RILQ    : RIL[1][QcrilMainMessageQueue.cpp: 83] [DispatcherModul(1069,1103)] pop: [DispatcherModule-MessageQueue]: msg: 0x7cfe059938

3、RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION响应

收到modem对RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION返回请求结果async_resp,处理完调用qcril_send_request_response->qmi_ril_fw_send_request_response_epilog返回RILJ
11-07 17:29:23.611  1069  1344 D RILQ    : RIL[1][Log.cpp: 49] [VoiceModemEndPo(1069,1344)] d: [ModemEndPointModule]: qmiAsyncCb
11-07 17:29:23.611  1069  1344 D RILQ    : RIL[1][QcrilMainMessageQueue.cpp: 27] [VoiceModemEndPo(1069,1344)] enqueue: [DispatcherModule-MessageQueue]: enqueuing priority(NORMAL) message 0x7cfb8285d8 Id: com.qualcomm.qti.qcril.qmi_async_resp
11-07 17:29:23.611  1069  1103 D RILQ    : RIL[1][QcrilMainMessageQueue.cpp: 83] [DispatcherModul(1069,1103)] pop: [DispatcherModule-MessageQueue]: msg: 0x7cfb8285d8
11-07 17:29:23.613  1069  1103 W RILQ    : (1/1069): RIL[1][(1069,1103)] qcril_send_request_response: UI <--- com.qualcomm.qti.qcril.legacy.event.RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION (0x7cfddf72b0) Complete --- RIL [RID 0, Token id 3918, Success, Len 0 ]
11-07 17:29:23.618  2758  2834 D RILJ    : [3918]< SET_SUPP_SVC_NOTIFICATION  [SUB1]

4、UNSOL_RESPONSE_CALL_STATE_CHANGED

收到modem主动上报的UNSOL_RESPONSE_CALL_STATE_CHANGED,call state CC IN PROGRESS,处理完调用qcril_send_unsol_response_epilog返回RILJ
11-07 17:29:23.611  1069  1344 D RILQ    : RIL[1][Log.cpp: 49] [VoiceModemEndPo(1069,1344)] d: [ModemEndPointModule]: qmiUnsolIndCb
11-07 17:29:23.612  1069  1344 D RILQ    : RIL[1][QcrilMainMessageQueue.cpp: 27] [VoiceModemEndPo(1069,1344)] enqueue: [DispatcherModule-MessageQueue]: enqueuing priority(NORMAL) message 0x7cfe196d58 Id: VOICE_QMI_IND
11-07 17:29:23.619  1069  1103 D RILQ    : RIL[1][QcrilMainMessageQueue.cpp: 83] [DispatcherModul(1069,1103)] pop: [DispatcherModule-MessageQueue]: msg: 0x7cfe196d58
11-07 17:29:23.619  1069  1103 V qcril_qmi_voice: RIL[1][qcril_qmi_voice.cc: 4978] [DispatcherModul(1069,1103)] qcril_qmi_voice_all_call_status_ind_hdlr: > qcril_qmi_voice_all_call_status_ind_hdlr: 
11-07 17:29:23.619  1069  1103 F qcril_qmi_voice: RIL[1][qcril_qmi_voice.cc: 5136] [DispatcherModul(1069,1103)] qcril_qmi_voice_all_call_status_ind_hdlr: call state CC IN PROGRESS for conn id 1
11-07 17:29:23.621  1069  1103 W RILQ    : (1/1069): RIL[1][(1069,1103)] qcril_send_unsol_response_epilog: UI <--- RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED (0x3e9) --- RIL [RID 0, Len 0, (null)]
11-07 17:29:23.623  2758  2834 D RILJ    : [UNSL]< UNSOL_RESPONSE_CALL_STATE_CHANGED [SUB1]

5、RIL_REQUEST_DIAL响应

收到modem对RIL_REQUEST_DIAL返回请求结果async_resp,这边没有返回RILJ
11-07 17:29:23.620  1069  1344 D RILQ    : RIL[1][Log.cpp: 49] [VoiceModemEndPo(1069,1344)] d: [ModemEndPointModule]: qmiAsyncCb
11-07 17:29:23.621  1069  1344 D RILQ    : RIL[1][QcrilMainMessageQueue.cpp: 27] [VoiceModemEndPo(1069,1344)] enqueue: [DispatcherModule-MessageQueue]: enqueuing priority(NORMAL) message 0x7cfb828b18 Id: com.qualcomm.qti.qcril.qmi_async_resp
11-07 17:29:24.352  1069  1103 D RILQ    : RIL[1][QcrilMainMessageQueue.cpp: 83] [DispatcherModul(1069,1103)] pop: [DispatcherModule-MessageQueue]: msg: 0x7cfb828b18
11-07 17:29:23.619  1069  1103 V qcril_qmi_voice: RIL[1][qcril_qmi_voice.cc: 9758] [DispatcherModul(1069,1103)] qcril_qmi_voice_unsol_ind_cb_helper: > qcril_qmi_voice_unsol_ind_cb_helper:
11-07 17:29:24.353  1069  1103 V qcril_qmi_voice: RIL[1][qcril_qmi_voice.cc: 8460] [DispatcherModul(1069,1103)] qcril_qmi_voice_command_cb: > qcril_qmi_voice_command_cb: 
11-07 17:29:24.354  1069  1103 I qcril_qmi_voice: RIL[1][qcril_qmi_voice.cc: 7362] [DispatcherModul(1069,1103)] qcril_qmi_voice_dial_call_resp_hdlr: DIAL CALL RESP : ril_err=0, dial_call_resp_result=0, dial_call_resp_error=0, cc_sups_result_valid=0, cc_result_type_valid=0, cc_result_type=0 
11-07 17:29:24.354  1069  1103 V qcril_qmi_voice: RIL[1][qcril_qmi_voice.cc: 7640] [DispatcherModul(1069,1103)] qcril_qmi_voice_dial_call_resp_hdlr: < qcril_qmi_voice_dial_call_resp_hdlr: 
11-07 17:29:24.354  1069  1103 V qcril_qmi_voice: RIL[1][qcril_qmi_voice.cc: 8621] [DispatcherModul(1069,1103)] qcril_qmi_voice_command_cb: < qcril_qmi_voice_command_cb: 

6、UNSOL_RESPONSE_CALL_STATE_CHANGED

收到modem主动上报的UNSOL_RESPONSE_CALL_STATE_CHANGED,call state CC IN PROGRESS,call state ORIGINATING
11-07 17:29:23.622  1069  1344 D RILQ    : RIL[1][Log.cpp: 49] [VoiceModemEndPo(1069,1344)] d: [ModemEndPointModule]: qmiUnsolIndCb
11-07 17:29:23.622  1069  1344 D RILQ    : RIL[1][QcrilMainMessageQueue.cpp: 27] [VoiceModemEndPo(1069,1344)] enqueue: [DispatcherModule-MessageQueue]: enqueuing priority(NORMAL) message 0x7cfe036dd8 Id: VOICE_QMI_IND
11-07 17:29:24.355  1069  1103 D RILQ    : RIL[1][QcrilMainMessageQueue.cpp: 83] [DispatcherModul(1069,1103)] pop: [DispatcherModule-MessageQueue]: msg: 0x7cfe036dd8
11-07 17:29:24.356  1069  1103 V qcril_qmi_voice: RIL[1][qcril_qmi_voice.cc: 9758] [DispatcherModul(1069,1103)] qcril_qmi_voice_unsol_ind_cb_helper: > qcril_qmi_voice_unsol_ind_cb_helper: 
11-07 17:29:24.356  1069  1103 V qcril_qmi_voice: RIL[1][qcril_qmi_voice.cc: 4978] [DispatcherModul(1069,1103)] qcril_qmi_voice_all_call_status_ind_hdlr: > qcril_qmi_voice_all_call_status_ind_hdlr: 
11-07 17:29:24.356  1069  1103 F qcril_qmi_voice: RIL[1][qcril_qmi_voice.cc: 5110] [DispatcherModul(1069,1103)] qcril_qmi_voice_all_call_status_ind_hdlr: call state ORIGINATING for conn id 1

6.1、DIAL的回调

DIAL的回调是从UNSOL_RESPONSE_CALL_STATE_CHANGED的返回走到qcril_send_empty_payload_request_response,然后qcril_send_request_response返回RILJ
11-07 17:29:24.358  1069  1103 E qcril_qmi_voice: RIL[1][qcril_qmi_voice.cc: 24767] [DispatcherModul(1069,1103)] qmi_ril_voice_ims_command_oversight_handle_event: ccx ril qcril_reqlist_query to deal with RIL_REQUEST_DIAL...
11-07 17:29:24.358  1069  1103 E qcril_qmi_voice: RIL[1][qcril_qmi_voice.cc: 24771] [DispatcherModul(1069,1103)] qmi_ril_voice_ims_command_oversight_handle_event: ccx ril qcril_send_empty_payload_request_response
11-07 17:29:24.358  1069  1103 E RILQ    : (1/1069): RIL[1][(1069,1103)] qcril_send_empty_payload_request_response: ccx ril qcril.c qcril_send_empty_payload_request_response
11-07 17:29:24.358  1069  1103 E RILQ    : (1/1069): RIL[1][(1069,1103)] qcril_send_empty_payload_request_response: ccx ril qcril_send_request_response
11-07 17:29:24.358  1069  1103 W RILQ    : (1/1069): RIL[1][(1069,1103)] qcril_send_request_response: UI <--- com.qualcomm.qti.qcril.legacy.event.RIL_REQUEST_DIAL (0x7cfddf6658) Complete --- RIL [RID 0, Token id 3917, Success, Len 0 ]
11-07 17:29:24.360  2758  2834 D RILJ    : [3917]< DIAL  [SUB1]

6.2、qcril_qmi_voice_all_call_status_ind_hdlr

qcril_qmi_voice_all_call_status_ind_hdlr继续处理,通过qcril_send_unsol_response_epilog返回RILJ
11-07 17:29:24.360  1069  1103 W RILQ    : (1/1069): RIL[1][(1069,1103)] qcril_send_unsol_response_epilog: UI <--- RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED (0x3e9) --- RIL [RID 0, Len 0, (null)]
11-07 17:29:24.362  2758  2834 D RILJ    : [UNSL]< UNSOL_RESPONSE_CALL_STATE_CHANGED [SUB1]


注意:


1.1069  1344 这个是ModemEndPointModule 接收modem返回线程,主动上报:qmiUnsolIndCb;请求返回:qmiAsyncCb ,接收完都enqueue进队列
2.1069  1103,这个是消息处理线程,从队列里面pop出消息进行处理
3.处理完上报给RILJ,data的上报,不是qcril_qmi_voice_dial_call_resp_hdlr,而是从qcril_qmi_voice_all_call_status_ind_hdlr(UNSOL_RESPONSE_CALL_STATE_CHANGED的处理)回调上去的

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/834272.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

提升工作效率,用ONLYOFFICE打造高效团队协作环境

作为一名深耕技术领域已有六七年的开发者&#xff0c;同时又是断断续续进行技术创作将近六年的一个小小作者&#xff0c;我在工作和日常生活中&#xff0c;使用过各色各样的软件。 而在最近几年&#xff0c;一款名为ONLYOFFICE的开源办公套件逐渐走进并融入我的工作与生活&…

paraview 处理 fluent 计算结果

paraview 处理 fluent 计算结果 参考链接&#xff1a;https://zhuanlan.zhihu.com/p/598032490 希望先生的主页也很有价值&#xff1a;https://www.cnblogs.com/Xiwang-Sun/p/14943429.html

如何在适用于 Linux 的 Visual Studio Code 中使用 .NET 8 上的 FastReport Avalonia

我们将继续撰写有关在各种操作系统上的 Visual Studio Code 中使用 FastReport Avalonia 的系列文章。在本文中&#xff0c;我们将详细分析如何使用 Visual Studio Code IDE 在 Linux 操作系统上运行 FastReport Avalonia。 Avalonia UI 是一个积极用于开发跨平台用户界面的 .…

Hyper-V 管理器安装的ubutun扩容磁盘空间说明

一、删除检查点 首先把这个想要扩容的虚拟机停止掉&#xff0c;然后找到检查点&#xff0c;全删除掉&#xff0c;否则没法编辑这个虚拟磁盘。 二、编辑虚拟磁盘 下面截图中下一步不能点击的&#xff0c;只要删除检查点之后就可以点击了。点击下一步然后选择扩容&#xff0c;然后…

组合模式(结构型)

目录 一、前言 二、透明组合模式 三、安全组合模式 四、总结 一、前言 组合模式(Composite Pattern)是一种结构型设计模式&#xff0c;将对象组合成树形结构以表示“部分-整体”得层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 组合模式由以下角色组成…

SpringSecurity源码分析(RemeberMe)

RememberMeServices RememberMeServices 记住我的服务的接口 可以重写实现自己的记住我 public interface RememberMeServices { //建议 org. springframework. security. authentication. RememberMeAuthenticationToken 在大多数情况下使用它&#xff0c;因为它具有相应的身份…

词袋法TFIDF

Tf-idf⽂本特征提取 TF-IDF的主要思想是&#xff1a;如果某个词或短语在⼀篇⽂章中出现的概率⾼&#xff0c;并且在其他⽂章中很少出现&#xff0c;则认为此词或者短语具有很好的类别区分能⼒&#xff0c;适合⽤来分类。TF-IDF作⽤&#xff1a;⽤以评估⼀字词对于⼀个⽂件集或…

OpenAI 发布 AI 生成图片检测器;Meta 推出 AI 广告创意工具;Google 正式发布 Pixel 8a,主打 AI

OpenAI 发布 AI 生成图片检测器 OpenAI 昨日官宣推出专用的 AI 监测工具&#xff0c;用于监测图片是否由其旗下 AI 图片生成工具 DALL-E 生成&#xff0c;准确率高达 98.8%。 不过该公司表示&#xff0c;这个检测工具并非旨在检测 Midjourney 和 Stability 等其他流行生成器生…

安卓使用Fiddler抓包 2024

简介 最近试了一下安卓使用fiddler 抓包&#xff0c;发现https包基本都会丢失。原因是Anandroid 7版本针对ssl安全性做了加强&#xff0c;不认可用户的证书。我们要做的就是把fiddler导出的证书进过处理后放置到系统证书目录下面&#xff0c;这样才能抓包https请求。 这里使用…

https介绍,加密解密(举例+必要性,对称/非对称加密介绍),数字摘要/指纹(介绍,应用(session id,网盘的秒传功能))

目录 https 引入 介绍 加密解密层 介绍 没有绝对的安全 使用ssl的弊端 加密解密 概念 加密 解密 秘钥 举例 现实中 网络中 加密的必要性 常见加密方式 对称加密 特点 非对称加密 特点 数字摘要/指纹 介绍 应用 session id 百度网盘的秒传功能 https …

21_Scala集合_可变数组ArrayBuffer

文章目录 ArrayBuffer1.创建可变数组ArrayBuffer2.增加数据3.删除数据4.修改数据5.查询数据Appendix ArrayBuffer ArrayBuffer可变数组–感觉优点类似于Java的ArrayList 1.创建可变数组ArrayBuffer –请注意下面的mutable import scala.collection.mutable.ArrayBuffer //m…

DuDuTalk:4G桌面拾音设备在银行网点服务场景的应用价值

随着科技的飞速发展&#xff0c;银行业也在不断地寻求创新以提高服务质量和效率。在这个过程中&#xff0c;4G桌面拾音设备作为一种新型的智能设备&#xff0c;其在银行网点服务场景中的应用价值逐渐凸显出来。本文将从多个角度探讨4G桌面拾音设备在银行网点服务场景的应用价值…

英语学习笔记6——What make is it?

What make is it? 它是什么牌子的&#xff1f; make n.&#xff08;产品的&#xff09;品牌名称    v. 制作 区别&#xff1a;model n.&#xff08;产品的&#xff09;型号       n. 模型       n. 模特 make 指的是大的品牌名称&#xff0c; model 是旗下产品…

OpenHarmony 实战开发——南向统一编译的docker镜像来了

由于我自己的南向设备开发平台的需求&#xff0c;我将当前几个不同的 docker 镜像版本进行了整合&#xff0c;经过一段时间的攻关和验证&#xff0c;目前整合已完成&#xff0c;新版本的 Dockerfile 如下&#xff0c;这个不是公共需求&#xff0c;所以没有提交主干&#xff0c;…

Web APIs 学习归纳8---移动端特效

上一节学习了PC端的特效&#xff0c;现在学习移动端的特效。 一、移动端触屏事件 1.1 触屏事件概述 移动端浏览器兼容性较好&#xff0c;我们不需要考虑以前 JS 的兼容性问题&#xff0c;可以放心的使用原生 JS 书写效果&#xff0c;但是移动 端也有自己独特的地方。比如触屏…

容联云孔淼:大模型落地与全域营销中台建设

近日&#xff0c;由金科创新社主办的2024区域性商业银行数智化转型研讨会顺利召开&#xff0c; 容联云产业数字云事业群副总经理、诸葛智能创始人孔淼受邀出席&#xff0c;并分享数智化转型实践经验。 他分享了容联云两大核心产品&#xff0c;“大模型应用容犀Copilot”在金融营…

TypeScript 基础学习笔记:interface 与 type 的异同

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 TypeScript 学习笔记&#xff1a;interface 与 type 的异同&#x1f3a3; 引言&#x1f680; 快速入门1️⃣ Interface&#xff08;接口&#xff09;&#x1f4cb; 定义&#x1f91d; 实现&#x1f4a1; 特点 2️⃣ Type Al…

Android 高版本实现沉浸式状态栏

目前实现的android高版本沉浸式状态栏分为两类&#xff1a; 1、是纯透明状态栏&#xff1b; 2、是纯透明状态栏&#xff0c;但是状态栏字体是黑色&#xff1b; 将状态栏的代码封装到BaseActivity中更方便使用&#xff1a; BaseActivity: public abstract class BaseActivit…

AI一键换装超强电商生产力工具下载

支持win版本&#xff0c;对电脑硬件有一定的要求。建议固态硬盘留足至少30 G的空间&#xff0c;显卡n卡显存至少4G。一些低端独立显卡可能还不如高配cpu集成。 程序文件比较大&#xff0c;因为涉及到大型模型。 下载链接在后面 下载链接&#xff1a; https://pan.baidu.com…

【Linux】如何定位客户端程序的问题

文章目录 1 客户端程序和服务端程序的差别2 问题类型2.1 崩溃(crash)2.2 CPU高2.3 内存高2.4 线程卡死 3 总结 1 客户端程序和服务端程序的差别 客户端程序是运行在终端上&#xff0c;通常都会与业务系统共存&#xff0c;而服务端程序通常会运行在单独的节点上&#xff0c;或者…