- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Framework中的Ril源码分析
Framework中的Ril源码分析目录(?)[-]一概述二RILRequest三发送子线程如何把数据发送到mSenderThreadmSenderThread子线程把请求发送给RILC四接收子线程接收数据的过程数据的处理流程URC消息处理流程非URC消息处理流程 为了区别RIL层中的RIL.cpp,我们约定framework中的RIL.java文件描述为RILJ,而hardware中的RIL.cpp描述为RILC。一、概述 所有上层对RIL层的请求,最终都需要在RILJ中转换为RIL层可识别的命令,然后通过Socket通道传输下去;同时,RIL层数据的上报,也要通过 RILJ进行解码,还原为上层容易识别的格式。因此,RILJ是framework与RIL层交互的通道。 RILJ有两个主要特点: 1、开启了两个独立线程分别负责发送数据和接收数据 2、数据的发送和接收是异步的 第一个特点很容易理解,而对于第二个特点有衍生出来了另一个问题:既然是异步的消息机制,也就是说发送者在发送完数据后就可以返回,那么当得到回应后,就要有一种方法去找到当初的请求者,并把结果返回给他。那么这个方法是什么呢? 这个方法就是令牌系统,我们将在第二节介绍。 有了以上简要的认识,我们从RILJ的入口开始展开我们的分析,也就是RILJ的构造函数: [java]view plaincopy@RIL.java public RIL(Context context, int preferredNetworkType, int cdmaSubscription) { super(context); //发送子线程 mSenderThread = new HandlerThread(RILSender); mSenderThread.start(); Looper looper = mSenderThread.getLooper(); //mSender是发送子线程的Handler,通过他可以发送数据 mSender = new RILSender(looper); //接收子线程 mReceiver = new RILReceiver(); mReceiverThread = new Thread(mReceiver, RILReceiver); mReceiverThread.start(); } 可以看到,在构造函数中开启了两个独立的子线程:mSenderThread用于给RILC发送数据,而mReceiverThread用于接收RILC上报的数据。 下面我们分析两个子线程的处理流程。而在介绍他们之前,我们先来介绍以下在RIL层中传递的消息的格式:RILRequest。二、RILRequest 我们单独拿出一小节来介绍RILRequest对象,是因为里面包含了我们在文章开始地方介绍的“消息异步传输”的秘密。 首先来看他的属性:class RILRequest {},说明这是一个独立的类,没有继承任何的父类或接口。他也在RIL.java中,同时也是RIL.java中除了RIL外唯一的类。 我们再来看一下RILRequest的构成: [java]view plaincopyclass RILRequest { //令牌 int mSerial; int mRequest; Message mResult; Parcel mp; RILRequest mNext; //生成一个RILRequest的消息对象 static RILRequest obtain(int request, Message result) { } //释放资源 void release() { } //构造函数,内容为空 private RILRequest() { } //重置令牌 static void resetSerial() { sNextSerial.set(sRandom.nextInt()); } //用于调试 String serialString() { } //异常处理 void onError(int error, Object ret) { } } 这个类并不复杂,主要的包括一些成员变量和两个重要的成员函数:用于生成消息对象的obtain方法和用于释放对象的release方法。我们先来介绍他的成员变量: mSerial:这个变量就是一个令牌,每生成(obtain)一个新的请求,都将产生一个递增的、唯一的mSerial,当从RILC得到一个数据后, 我们将通过mSerial找到当初发送这个请求的对象。这也就是异
您可能关注的文档
- 2014年最新版PEP小学五年级英语第五单元知识点.doc
- 2012大副航海英语真题61.doc
- 江苏省2016届高三高考冲刺卷(二)英语试题 Word版含答).doc
- 2016华南农业大学数据库考试+答案.doc
- 酒店餐饮部食物中毒应急程序.doc
- the history boys 诗歌.doc
- 交通事故英语词句.doc
- 2014—2015学年度武汉市部分学校九年级元月调考英语试卷及答案.doc
- 文献综述写法及格式.doc
- 25个最常弄错含义的词.docx
- PART 77—SAFE, EFFICIENT USE, AND PRESERVATION OF THE NAVIGABLE AIRSPACE.doc
- 51CTO下载-GNS3常见故障及排成.doc
- install gaussian in linuxGaussian 03 Opteron系统安装指南.doc
- 企业会计准则第27号-石油天然气开采-中英.docx
- Negotiation Tips1-7 english version.英文版.docx
- 叉车安全操作程序.doc
- 高考维“升”素14.doc
- 《国际贸易实务》课程论文张文翠.doc
- 外贸业务员理论卷.doc
- ORCAD使用中常见问题汇集及答案 (全).doc
最近下载
- TB-T 2491-1994 扣件组装疲劳试验方法.pdf VIP
- 短节段融合内固定治疗成人退变性脊柱侧凸并发症-中国骨与关节杂志.pdf VIP
- 2025年银行纪检笔试题目及答案.doc VIP
- 《企业经营决策讲义》课件.ppt VIP
- 中小学生牛奶配送项目 投标方案.docx
- 2024年贵州省黔东南苗族侗族自治州凯里市鸭塘镇招聘社区工作者真题及参考答案详解.docx VIP
- 样板工程验收记录.docx
- YY_T 0466.1-2023 医疗器械 用于制造商提供信息的符号 第1部分通用要求.pdf
- 七年级数学新课标下的单元教学设计实践研究.docx VIP
- 燃气发生器结构和系统详解.ppt VIP
文档评论(0)