没有合适的资源?快使用搜索试试~ 我知道了~
Android_平台通讯架构研究
5星 · 超过95%的资源 需积分: 19 11 下载量 88 浏览量
2012-08-28
09:50:04
上传
评论
收藏 862KB PDF 举报
温馨提示
试读
21页
本层是基于android源码的telephony机制的从上层到下层的流程进行分析的。
资源推荐
资源详情
资源评论
Android 平台通讯架构(RIL)研究
Research and Implementation of communication architecture on
Android platform
Author
Company
Department
Report Date
WANG Kang,CUI Chun-bo
Lemote
Software
2012-03-28
目录
Android 平台通讯架构(RIL)研究 ............................................................................................. 1
第一章 研究部分 ............................................................................................................................ 1
1 电话系统概述 ............................................................................................................................... 2
2 Android RIL 研究之 RILD ........................................................................................................ 4
2.1 Event Loop .................................................................................................................................. 5
2.2 Read Loop ................................................................................................................................... 8
3 Android RIL 研究之 RIL-Java .................................................................................................. 8
3.1 Command Interface ..................................................................................................................... 9
3.2 Receiver ...................................................................................................................................... 9
3.3 Sender ....................................................................................................................................... 10
3.4 异步通知 ................................................................................................................................ 10
4 Android RIL 研究之 GsmCallTracker...................................................................................... 11
4.1 RIL-Java 中发起的电话连接列表操作 ................................................................................ 12
4.2 在 RILD 中引起 getCurrentCalls 调用 ................................................................................. 13
4.3 handlePollCalls 电话列表刷新 ............................................................................................. 13
第二章 移植与实现部分............................................................................................................... 13
1 Android RIL 移植 ....................................................................................................................... 14
1.1 无线通讯模块驱动加载 .......................................................................................................... 14
1.2 Android RIL 的配置和加载 .................................................................................................. 14
1.3 Android RIL 的编译结构 ...................................................................................................... 15
2 语音通话实现 ............................................................................................................................. 16
2.1 AT 命令简介
[
......................................................................................................................... 17
2.2 通话相关 AT 命令介绍 ........................................................................................................... 17
2.3 通话功能在 RIL 中的具体实现 ............................................................................................. 19
第一章 研究部分
1 电话系统概述
随着无线通讯技术的发展和 3G 网络的普及和覆盖,对于目前的一部智
能手机,其基本功能如下:
(1) 拨打电话、接听电话、挂断电话。
(2) 短信发送和接收。
(3) 3G 上网的网络通路的建立与控制(即用户在不需要 3G 网络时,
可以断开 3G 网络连接)。
(4) 来电时,我们要播出来电铃声,接通时我们要切换到语音通道。
(5) AP 和 BP 的交互是通过 AT 指令的,如何将 AT 指令变成一个具
体的操作函数,如何管理 BP 发给我们的回应,AT 命令通道、数据通道如
何管理。
以上是 Android 电话系统设计者必须要回答的问题。回到电话系统的基
本构成,先从整体上把握一下电话系统的大体框架。如图所示,该框架基
本概括了所有手机电话模块的构成,当然也包括 Android 系统的电话系统构
成。
Virtual serial ports
Command
Cdma2000 1x/EvDo
Rev.A Modem
/dev/ttyUSBx
GSM TS07.10 MUX
VSP for Data
Radio Interface Layer(RIL)
Phone Service
Dialer Message STK Contact
GPRS line discipline
GPRS Network Device
PPP
TCP/IP/UDP
BSD Sockets API
WAP
MMS
Browser Email
HW
Kernel
User
智能机的架构一般是应用处理器+Modem。应用处理器与 Modem 的交
互使用的是虚拟串口,即在一个硬件串口通路上实现控制 Modem 的同时要
实现数据传输,这就需要实现多路复用协议(GSM TS07.10),底层在多路
复用的基础上虚拟了两个串口,一个用于 CMD 通道,一个用于 DATA 通道。
RIL,Radio Interface Layer。本层为一个协议转换层,手机框架需要适
应多种类型的 Modem 接入到系统中,而对于不同的 Modem,AT 指令的格
式或者回应有所不同,但是这种特性在设计应用时不可能完全考虑和兼容,
所以在设计电话系统时,建立了一个虚拟电话系统,并为该虚拟电话系统
规定了标准的功能,上层的电话管理都是建立在这些标准的功能基础之上。
而 RIL 则是将虚拟电话系统的标准功能转化成实际所使用的 Modem 的 AT
指令。
Android 设计者将电话系统设计成三部分。如图所示。
各类电话相关应用
Phone Service(PhoneApp)
AndroidPhone 标准接口
RILD
AT指令
Android 的 Phone Service 其实是 PhoneApp。GSMPhone(CDMAPhone)
是 Phone Service 的核心对象,它包含了如下相关对象。
GsmCallTracker
GsmDataConnectionTracker
SimFileHandler
GSMSMSDispatcher
RIL(CommandInterface)
PhoneNotify
GSMPhone
本文研究的任务就是把这些对象的相互关系,以及对象间数据传递的
关系弄清楚。首先给出 Android 电话系统的框架,然后从数据流的角度和对
象的引用关系来分析整个电话系统。下面是 Android 电话系统的整体框架图。
Phone Service GSMPhone
Notifier
GsmCallTracker
GSMStateTracker
GSMDataConnectionTracker
SimFileHandler
GSMSMSDispatcher
Receiver Sender
RIL Object CommandInterface
Event Loop
RIL AT Channel
RILD
Socket Serial
SOCKET
2 Android RIL 研究之 RILD
Rild 是 Init 进程启动的一个本地服务,这个本地服务并没有使用 Binder
之类的通讯手段,而是采用了 socket 通讯方式。Android 给出了一个 RIL 实
现框架,但由于 Android 开发者使用的 Modem 是不一样的,不同的 Modem
基于不同的网络运营商所采用的网络也不一样,加上各种 AT 指令格式、初
始化序列都可能不一样。为了消除这些差别,Android 系统设计者将 RIL 做
成一个抽象,使用了一个虚拟电话的概念。这个虚拟电话就是 GSMPhone
(CDMAPhone)。 Android 从 1.6 版本(donut)开始,电话部分加入了 CDMA
分支,它是和 GSM 并立的。Phone 对象所提供的功能协议,以及要求下层
的支撑的环境都有一个统一的描述,这个底层描述的实现是靠 RIL 来完成
的。
Android 将 RIL 层分为两个代码空间:RILD 管理框架,AT 相关的
xxx-ril.so 动态链接库(xxx 为厂商的名字)。将 RIL 独立成一个动态链接库
的好处是 Android 系统可以适应不同的 Modem,不同的 Modem 可以有一个
独立的 RIL 与之对应。从这个层面上看,RILD 更多是一个管理框架。
而 RIL 是具体 AT 指令的合成者和应答解析者。从基本的功能来看,
RIL 建立了一个监听 Socket 用于等待客户端的连接,然后从该连接上读取
RIL-JAVA 传递过来的请求并转化成 AT 指令发送给 Modem,并等待 Modem
的回应,然后将回应的结果通过套接口传回到 RIL-JAVA。下图为 RILD 的
基本框架。
Reader Loop
AT解析
串 口
Event Loop
socket
Command Event Handler
at_sent_command
RILD
在 AT 通讯的过程中有两类响应:一种是请求后给出的应答;一种是通
知类,例如来电通知、新短信通知到达,我们称该类通知为 URC。在 RILD
中 URC 和一般的 response 是分开处理的,概念上 URC 由 handleUnsolicited
@atchannle.c 处理,而 Response 由 handleFinalResponse 来处理。
2.1 Event Loop
RILD 管理的核心在 ril.cpp 和 ril_event.cpp 中。Event Loop 的基本工
作就是等待事件端口(socket),一旦有数据到达就根据登记的 Event 回调函
数进行处理。
(1) Event 对象
Event 对象构成在 ril_event.h 中定义如下:
struct ril_event {
struct ril_event *next;
struct ril_event *prev;
int fd;
int index;
bool persist;
struct timeval timeout;
ril_event_cb func;
void *param;
};
其中 fd 为事件相关设备句柄,func 为回调事件处理函数,param 为回调时
的参数。
为了 统一管 理事件, Android 在 ril_event.cpp 中使用 了 三个队 列 :
watch_table、timer_list 和 pending_list,并使用了一个设备句柄池 readFds。
readFds 保存了 RILD 中所有的设备文件句柄,以便利用 select 函数统一的
完成事件的监听。Event 对象管理操作机制如下图所示。
watch_table 为 监 测 时 间 队 列 , 需 要 检 测 的 事 件 都 放 入 该 队 列 中 。
剩余20页未读,继续阅读
资源评论
- zzzzrp2013-09-11好东西,把telephony讲清楚了
- TAGTAGTAGTAGTAG2013-05-01很好的东西,我了解了通讯架构的知识
- liuyh132013-05-13很好的通讯架构的知识,不错不错
迷失华尔街
- 粉丝: 4
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- python-leetcode面试题解之第198题打家劫舍-题解.zip
- python-leetcode面试题解之第191题位1的个数-题解.zip
- python-leetcode面试题解之第186题反转字符串中的单词II-题解.zip
- 一个基于python的web后端高性能开发框架,下载可用
- python-leetcode面试题解之第179题最大数-题解.zip
- python-leetcode面试题解之第170题两数之和III数据结构设计-题解.zip
- python-leetcode面试题解之第168题Excel表列名称-题解.zip
- python-leetcode面试题解之第167题两数之和II输入有序数组-题解.zip
- python-leetcode面试题解之第166题分数到小数-题解.zip
- python-leetcode面试题解之第165比较版本号-题解.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功