版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2020/7/6,Android 通信机制及QCRIL原理介绍,Page 2,Android软件栈架构,Page 3,Android应用运行环境,每个Android应用依赖于/system/framework文件夹下的一些核心库,这些核心库用是java编写的。这些应用还依赖于/system/lib文件夹下的动态链接库,这些动态链接库是C / C+编写的。 这些库就是Android应用的环境,还有一些共享库和类库,是运行时动态加载的类库和本地调用(JNI Invoke)。 传统JAVA应用,所有的JAVA应用都运行在同一个JVM中(默认是这样的)。而在Android上,每个应用都运行在自己专有的
2、dalvik虚拟机实例里,这和传统JAVA应用有区别。 Android使用Linux作为HAL( hardware abstraction layer ),Page 4,Android RIL Architecture,Page 5,Android RIL,Dalvik VM (shared):Shared code among all Android VMS RIL.java: Java utility for RIL message/socket handling Telephony Manager Communication between Java and RILD is via co
3、mmands (messages) over sockets RIL.so handles socket and dispatch details RIL.java is corresponding code in Java,Page 6,Android RIL,RILD RILD.soDaemon RIL.soUtility library for RIL message/socket handling QCRIL.soQC RIL implementation cm.so, wms.so, xxx.so QC remote API libs (QC),Page 7,RIL消息类型,有两种类
4、型的RIL消息 Solicited commands (请求消息) 是由上层应用,例如DiIAL、HANGUP等通过RIL lib发起的 Unsolicited commands 是由底层modem侧发起的,向上层报告状态的变化、新的消息等,例如CALL_STATE_CHANGED 、SIM_STATE_CHANGED、NEW_SMS。 Two sets of RIL commands,Page 8,通信机制,RILD和Modem侧的通讯是通过RPC和QMI实现的 RPC用于多CPU之间的通讯,一侧的CPU应用在ONC RPC栈中通过XDR将消息编码成字节流,通过RPC router、共享内存
5、对应传到另一侧CPU的RPC router、 ONC RPC栈中,XDR解码后,得到数据。 XDR即是用于在同平台间实现数据连续表示的编解码机制。 QMI是高通自定义的一种数据接口,用于终端设备的操作系统应用和底层模块的数据通信。数据业务基本通过QCRIL、QMI与底层交互。,Page 9,通信机制,Application是Android应用,是单独的linux进程。 com. android.phone是Android Service,类似于windows的Service,运行于单独的进程,给其他应用提供服务。所有的Service都可以通过IServiceManager接口访问。 例如一次呼
6、叫调用发生,情景大概是如下几步: Application调用android.telephony的接口; Telephony的类根据状态,将呼叫分解成若干个commands,通过IPC,调用Phone Service的接口; Phone Service通过sockets和RILD这个daemon通信; rild将来自Phone Service的命令通过RPC、共享内存,发送给Modem,并接收Modem的返回,打包返回给Phone Service; Phone Service也将返回打包给Application; 呼叫调用完毕。,Page 10,Application和Phone Service
7、的通信,Application和Phone Service之间通过OpenBinder机制通信。但是我们并不需要懂得OpenBinder的原理,因为Android软件栈中的Application Framework层已经提供便捷的接口去调用。 Application Framework层的android.telephony包为 上层应用 提供了调用phone Service的接口,封装、抽象得很好,一个打电话的调用只需要三行代码, IServiceManager sm = ServiceManagerNative.getDefault(); IPhone phoneService = IPho
8、ne.Stub.asInterface(sm.getService(phone); phoneService.call(phoneNumber);,Page 11,同步和异步调用,回调函数: Client 注册一个回调函数,当条件满足时Server返回回调。 回调函数本身是同步的。 在同步调用中,调用者被blocked直到调用被Server Function处理并返回调用者。 在异步调用中,调用请求发送到服务端,并立即返回,Client如果想知道结果必须注册一个监听相应状态返回的回调函数。 另外回调是一次性的,如果想持续地接收server返回的回调,client需要在每一次回调返回后重新注册,
9、或者用某种机制来保证一直接收回调(例如一个event table)。,Page 12,同步调用,Page 13,异步调用,Page 14,Qcril Request,Page 15,Qcril Event/Response,Page 16,QCRIL Functions,RILD向QCRIL发起: onRequest(): Qcril处理请求并立即返回 onRequestComplete(): 操作完成时调用,可以在onRequest()中使用 onStateRequest():Qcril同步返回radio状态 onCancel(RIL_Token t):Qcril尽力去取消队列中的RIL请求,立即返回,完成时调用onRequestComplete(),这个函数只能在不同于RIL请求 的另一个线程中调用。,Page 17,QCRIL Functions,QCRIL向RILD发起: onRequestComplete(): 请求完成或cancel时调用 OnUnsolicitedRes
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026二上数学备课获奖课件
- 小学数学二年级下册“图形的运动(一)”单元复习教学设计
- 知识产权保护法律法规适用合同协议
- 2025届江西省南昌市南师附小四下数学期末联考模拟试题(含答案解析)
- 电动机点动与自锁电路
- 2026年唇亡齿寒成语故事合作意识培养教案
- 2026年初中语文《山坡羊·骊山怀古》元曲咏史教案
- 2022年德育处工作计划
- 2026年口腔技师岗位考核试卷(附答案)
- 其他教学设计中职中职专业课药学类72 医药卫生大类
- 农房安全知识培训课件
- 胡桃夹综合征的超声诊断
- T-CAEPI 102-2025 重金属污染土壤稳定化工程技术指南
- T/CEMIA 032-2022显示面板用氧化层缓冲刻蚀液
- 高中生法制教育
- 运动解剖学课件12 下肢骨连结学习资料
- 幼儿园开学食堂安全培训
- 白内障手术前后护理
- GB/T 4706.23-2024家用和类似用途电器的安全第23部分:室内加热器的特殊要求
- 干式螺杆真空泵培训
- 《功能性食品开发与应用》课程标准
评论
0/150
提交评论