android电话系统,Android电话系统之-rild.doc

Android电话系统之-rild.doc

Android电话系统之-rild

Rild是Init进程启动的一个本地服务,这个本地服务并没有使用Binder之类的通讯手段,而是采用了socket通讯这种方式。RIL(Radio Interface Layer)

Android 给出了一个ril实现框架。由于Android开发者使用的Modem是不一样的,各种指令格式,初始化序列都可能不一样,GSM和CDMA就差别更大 了,所以为了消除这些差别,Android设计者将ril做了一个抽象,使用一个虚拟电话的概念。这个虚拟电话对象就是 GSMPhone(CDMAPhone),Phon对象所提供的功能协议,以及要求下层的支撑环境都有一个统一的描述,这个底层描述的实现就是靠RIL来 完成适配。

Andoid将RIL层分为两个代码空间:RILD管理 框架,AT相关的xxxril.so动态链接库。将RIL独立成一个动态链接库的好处就是Android系统适应不同的Modem,不同的Mode可以有 一个独立的Ril与之对应。从这个层面上看,Rild更多是一个管理框架。

而ril是具体的AT指令合成者和应答解析者。从最基本的功能来讲,ril建立了一个侦听Socket,等待客户端的连接,然后从该连接上读取RIL- Java成传递来的命令并转化成AT指令发送到Modem。并等待Modem的回应,然后将结果通过套接口传回到Ril-Java层。下图是Ril-D的 基本框架:

下面的数据流传递描述图表描述了RIL-JAVA层发出一个电话指令的5 步曲。

在 AT通讯的过程中有两类响应:一种是请求后给出应答,一种是通知类,即为不请自来的,例如短信通知达到,我们称该类通知为URC。在Rild中URC和一 般的Response是分开处理的,概念上URC由handleUnsolicited@Atchannel.c处理,而Response由 handleFinalResponse来处理。

1 Event Loop

Rild 管理的真正精髓在ril.cpp,ril_event.cpp中,在研究的过程中,可以看到设计者在抽象上所下的功夫,设计得很优美。Event Loop的基本工作就是等待在事件端口(串口,Socket),一旦有数据到达就根据登记的Event回调函数进行处理。现在来看Ril设计者是如何建立 一套管理框架来完成这些工作的?

1.1 Event对象

Event对象构成:(fd,index,persist,func,param)

fd事件相关设备句柄。例如对于串口数据事件,fd就是相关串口的设备句柄index persist如果是保持的,则不从watch_list中删除。func回调事件处理函数param回调时参数 为了统一管理事件,Android使用了三个队列:watch_list,timer_list,pending_list,并使用了一个设备句柄池readFDS。

readFDS:是Linux的fd_set,readFDS保存了Rild中所有的设备文件句柄,以便利用select函数统一的完成事件的侦听。

watch_list:监测时间队列。需要检测的事件都放入到该队列中。

timer_list:timer队列

pending_list:待处理事件队列,事件已经触发,需要所回调处理的事件。

事件队列队列的操作:ril_event_add,ril_event_del, ril_timer_add

在添加操作中,有两个动作:

(1) 加入到watch_list

(2) 将句柄加入到readFDS事件句柄池。

1.2 ril_event_loop()

我们知道对于Linux设备来讲,我们可以使用select函数等待在FDS上,只要FDS中记录的设备有数据到来,select就会设置相应的标志位并 返回。readFDS记录了所有的事件相关设备句柄。readFDS中句柄是在在AddEvent加入的。所有的事件侦听都是建立在linux的 select readFDS基础上。

ril_event_loop 利用select等待在readFDS(fd_set)上,当select设备有数据时,ril_event_loop会从select返回,在 watch_list中相应的Event放置到pend_list,如果Event是持久性的则不从watch_list中删除。然后 ril_event_loop遍历pengding_list处理Event事件,发起事件回调函数。

1.3 几个重要的Event

上面分析了ril-d的框架,在该框架上跑的事件有什么

(1)s_listen_event- (s_fdListen,listenCallback)

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

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

相关文章

android出现错误,在做一个安卓的一个登陆操作的时候,出现错误

源代码如下:/**//*author Administrator**/package com.example.login;//import org.testng.annotations.Test;//import org.testng.annotations.BeforeClass;//import org.testng.annotations.AfterClass;import io.appium.java_client.AppiumDriver;import io.app…

android中svn插件安装,AndroidSDK安装SVN插件问题解决

工具版本信息:Eclipse4.2ADT23.0Subclipse1.10,插件安装地址:http://subclipse.tigris.org/update_1.10.x问题一报错信息如下:Cannot complete the install because one or more required items could not be found.Software being installed: Subversion Revision Graph 1.1.1…

android 点击空白退出,Android 点击空白处隐藏键盘

方法一:使用android的分发机制(代码稍微有点多)/*** 实现点击空白处,软键盘消失事件* param ev* return*/Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if (ev.getAction() MotionEvent.ACTION_DOWN) {// 获得当前得到焦点的View&#…

鸿蒙系统的变化,鸿蒙系统没变化的背后

原标题:鸿蒙系统没变化的背后鸿蒙系统发布以后被很多人吐槽,说是没什么变化,和之前体验的安卓系统简直一模一样,真的失望至极。其实,鸿蒙系统还是从底层做出了改变,只不过没有变了界面和运行方式而已。那么…

三星s2 硬刷Android 8,三星T710(GALAXY Tab S2 8.0)一键救砖教程,轻松刷回官方系统...

三星T710(GALAXY Tab S2 8.0)手机变砖了怎么办?对于经常刷机的安卓玩家来说,碰到刷机失败导致三星T710(GALAXY Tab S2 8.0)手机无法启动甚至无法进入recovery都是在所难免的事,这个时候我们就需要用到奇兔线刷大师线刷救砖功能了,它能轻松实…

鸿蒙工业互联网,工业互联网 3D 展示平台

原标题:工业互联网 3D 展示平台项目简介产业园区占地约为 158.46 亩,现有生产车间两栋、研发楼一栋、检测楼一栋、食堂及倒班楼一栋、废品库一栋、门卫室两处、综合站房一处。主要从事电缆、电线的生产与加工。产业园区综合管理平台项目开发内容复杂&…

基于android的交流平台,基于Android的移动学习交流平台的设计与实现

摘要:随着移动互联网技术的不断发展,智能手机的不断普及,现在越来越多的人通过手机等智能设备来进行学习和交流。为了满足教师和学生实时的沟通交流,提高学生的学习兴趣和效率,本文设计了基于Android的移动学习交流系统。本文首先通过Openfire完成了客户端与服务器端…

weex监听android返回键,weex使用手册

Native DOM APIsUpdated time: 14/06/2017Weex 在 JS 引擎中,为每个页面都提供了一套 Native DOM APIs,这套接口和 HTML DOM APIs 非常接近,利用这套接口我们可以通过 JavaScript 控制 native 的渲染逻辑。而且 Weex 上层的 Vue 2.0 也是基于…

lean软件Android有吗,leanchat-android

LeanChat Android 客户端简介LeanChat 是 LeanCloud 实时通信 组件的 Demo,通过该应用你可以学习和了解 LeanCloud 实时通信功能。效果截图Leanchat 项目构成如果你从 github clone 速度很慢,可以从 这里 下载项目源码压缩包。部署创建应用注册并登录 Le…

华为系统10.0是鸿蒙吗,暂时忘记鸿蒙!华为EMUI 10.0发布时间确认:这才是主角...

原标题:暂时忘记鸿蒙!华为EMUI 10.0发布时间确认:这才是主角华为鸿蒙系统由于顶着“自研”的光环,自曝光以来便受到科技圈的追捧,虽并未推出但已经有“众星捧月”的迹象。媒体追逐鸿蒙系统自然是为了热度和流量&#x…

a4纸在html的像素,打印常识:A4纸张在显示器上应该要多少像素?

A4纸的尺寸是210mm*297mm,也就是21.0cm*29.7cm,而1英寸2.54cm,如果屏幕DPI分辨率为72像素/英寸,换算一下:相当于1cm可呈现 (72px/2.54cm) 28.34px下面是一些常用分辨率下A4纸在屏幕上的像素尺寸:分辨率是7…

用HTML编写教学评估系统,在线教学质量评价系统的设计与实现

《在线教学质量评价系统的设计与实现.doc》由会员分享,可免费在线阅读全文,更多与《在线教学质量评价系统的设计与实现》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。1、MWEAVERMA入门与提高[M]清华大学出版社,[]李国涛SQLS…

微型计算机方面的论文,微型计算机论文.doc

计算机指令系统与中国CPU的发展本学期我们大致了解了一些微型计算机的基本原理,包括微机处理器、微型计算机和微型计算机系统的定义、微处理器的发展概况,以及微机处理器的分类。其中我们比较全面的学习了指令系统一 计算机指令系统1 计算机指令系统的发…

辩论计算机未来不能取代书本的问题,电脑不能取代书本辩论会材料.doc

辩论会材料NO.1资料收集:沉默可以 注意文明:要多点开花,引用一些名言等,千万不要胡搅蛮缠,揪住一个小点不放,这会给评委不好的印象!资料准备一定要充分,最好直接反驳对方,不行就坚持…

计算机通信事业单位专业知识点,事业单位计算机专业知识招考大纲

事业单位计算机专业知识招考大纲对照复习事半功倍(一)计算机类计算机科学技术基础第一章计算机基础知识一、计算机的特点、分类及其应用二、信息编码与数据表示;数制及其转换;算术运算和逻辑运算三、计算机硬件系统的组成及其基本工作原理四、计算机软件…

自学计算机软件及应用,[计算机软件及应用]JavaEE自学材料.pdf

[计算机软件及应用]JavaEE自学材料目录隔行变色表格——jQuery 实现 2隔行变色表格——javascript 实现4提示框HelloWorld——jQuery 实现5改变文字背景的颜色——jQuery 实现 6jQuery-添加元素7jQuery-页面信息隐藏及显示 10jQuery-导航菜单 11jQuery-全选&反选 13利用ser…

wether.html5.qq.com,人教版英语九年级全一册Unit 1单元测试卷及参考答案解析(含听力...

UNIT 1 达标测试卷时间:120分钟 满分:150分第一卷 听力部分(30分)一、关键词语选择(共5小题;每小题1分,满分5分)1. A. note B.nose C. notice2. A. repair B. report C.repeat3. A. widely B. quickly C.wisely4.A. screen B.s…

世界上覆盖范围最广的计算机网络是 ( ),世界上覆盖范围最广的计算机网络是()。...

摘要:部会天翼自动格将俱乐取消员资客户,世界上覆下列情况哪些出现时。围最包单包工总承责任单位对分安全程的承担位和分包生产。计算机网包分政基作业工分建筑础设程施为(劳务和市)和房屋分包施工。...部会天翼自动格将俱乐取消员资客户,世界…

vb.net提取html网址,如何提取网页代码中指定内容

怎么提取网页代码中指定内容?某数据库网页结构如下:html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">2015年9月6日 17:18农业药械: 瞬时流量:175.30 m3/h 累计…