没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Ril 代码分析
Android 电话系统之概述篇
首先抛开Android 的一切概念来研究一下电话系统的最基本的描述。我们的手机首先
用来打电话的,随后是需要一个电话本,随后是PIM,随后是网络应用,随后是云计算,
随后是想我们的手机无所不能,替代PC。但是作为一个电话的基本功能如下:
1. 拨叫电话,接听电话,挂断电话,发送短信,网络连接,PIM 管理
2. 由于电话运营商为我们提供了呼叫等待,电话会议等补充业务,所以我们的手机需要
管理多路通话,如何管理?
3. 来电时,我们要播出来电铃声,接通时我们需要切换语音通道,这个又跟多媒体系统
打上了交道,例如有耳机插上了,有蓝牙耳机连上了,系统该做如何的管理和切换?
4. 上网的网络通路建立(例如 GSM GPRS),如何 PPP 连接并连接到 LinuxSocket 通
道上的?系统如何管理数据连接?
5. AP 跟 Modem 通讯时通过 AT 指令的,如何将 AT 指令变成一个个具体的操作函数,
如何管理 Modem 发给我们的回应,AT 命令通道,数据通道如何管理?
6. sim 卡的电话本如何管理?
上面的关于手机的基本问题,Android 电话系统设计者必须要解答的问题。该设如何
的管理框架,提出什么概念来表达?所以要分析Android 的电话部分,还是需要理解电话
实现的背景知识,通讯协议,大体框架。
我们回到电话系统基本构成上,先从整体上 去把握一下电话模块的大体框架,先从空
中
俯瞰。我给出的图是一般的智能手机的框架,该框架基本能够概括所有手机电话模块的构
成,当然也包括 Android 的电话系统构成。
智能机架构一般是应用处理器+Modem。应用处理器与Modem 的连接使用串口或者
USB。在一个硬件串口通路上实现为了要同时实现数据传输并同时实现控制Modem,就需
要
实现多路复用协议(GSM TS07.10),在底层我们在多路复用的基础上虚拟了两个串口,
一
个用于CMD 通道,一个用于DATA 通道。电话的所有控制通路都是在这连个通道上。
RIL,Radio Interface Layer。本层为一个协议转换层,手机框架需要适应多类型的
Modem
接入到系统中,而对于不同的Modem 有不同的特性,AT 指令的格式或者回应有所不同,
但是这种特性在设计应用时不可能完全考虑和兼容。所以设计者在设计电话系统时,建立
了
一个虚拟电话系统,为该虚拟电话系统规定了标准的功能,上层的电话管理都是建立在这
些
标准的功能基础之上。而RIL 则是将虚拟电话系统的标准功能转换成实际的所使用的
Modem 的AT 指令。
Android 设计者将电话系统设计成了三部分。
Andoird 的Phone Service 其实是PhoneApp。GSMPhone(CDMAPhone)是Phone
Service
核心的对象,他包含了如下的相关对象。
我们的分析任务就是要把这些对象的相互关系,及其对象间数据传递关系弄清楚。
首先我们给出以下的Android 电话系统的框架,以便对Android 电话系统有个概要的认识,
然后从数据流的角度,以及对象的引用关系来分析系统。下面是android 电话系统整体框
架
图。
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,不同
的Modem 可以有一个独立的Rild 与之对应。从这个层面上看,Rild 更多是一个管理框架。
而rild 是具体的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
剩余22页未读,继续阅读
资源评论
- yinghao19792015-01-26可以参考,谢谢,分值较高
ahaochina
- 粉丝: 24
- 资源: 63
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功