基于android平台的通信系统设计与实现
2011-04-13董思博周园园王禄禄
董思博,周园园,王禄禄
沈阳师范大学物理科学与技术学院,辽宁 沈阳 110034
随着移动通信的发展以及互联网向移动终端的普及,网络和用户对移动终端的要求越来越高,而Symbian,Windows Mobile,Iphone OS等手机平台过于封闭。随着通信产业的不断发展,智能手机也向集通话,上网,多媒体,邮件多功能于一体的掌上电脑方向发展。Android支持wifi,采用webKit浏览器,拥有pushmail,Google地图和搜索等众多网络应用,它的出现让人耳目一新,它的发展更是手机与互联网结合的必然趋势。Android包括操作系统、中间件和一些关键的平台应用,是一款真正意义的开放性的移动设备综合平台。Android是允许所有厂商和个人在其基础上进行开发,由Linux+Java构成的开源软件。Android平台的开放性特点既有助于降低开发成本,由能促进技术的创新,更可使运营商能方便的定制自己的特色化产品,具有相当强大的市场发展潜力。
Android在框架结构的设计包含一组核心应用程序的应用层,提供包括系统各式组建的库层、应用层需API接口的应用程序框架层,android的核心库提供Java类库提供的绝大部分功能,每个Android应用都运行在自己的进程上。最下面是提供安全、内存管理、进程管理、网络组、驱动模块的和硬件抽象层的内核层。
为了简化通讯模块设计的复杂性,Android的通讯模块的设计采用分层的模式,这样使各层相互独立而又相互高效的协调工作,当其中一层发生变化时,其他上下两层均不受到任何影响,这样各层更加灵活,更加独立,各层只用提供标准化的接口,方便了模块间的替换,增强了其平台代码的可移植性。目前市面上的智能机在硬件上多采用双CPU的架构,一个是应用处理器,运行操作系统和各种应用程序,另一个是基带处理器,主要处理语音信号的编码,数字信号以及GSM,WCDMA的通信协议。基带处理器、射频和其他外围芯片作为一个模块,成为GSM/GPRS,WCDMA modem,提供AT命令接口。我们需要在AP系统中有一个负责数据的可靠传输、AT命令的发送以及response的解析的模块。Android系统提供了RIL这样一个模块来满足我们的要求。通信系统的构架框图如图1。
图1
通信系统的构架主要包括电话应用层、应用框架层、库层、内核层、基带层五部分。电话应用层,主要为电话,联系人,短信,以及上网等跟电话相关的应用程序,负责完成通过调用framework的借口,人机调用,实现引用等各个功能。应用框架层则是将电话应用层传下来的数据通过Phone相关借口封装,通过CommandInterface发送给RIL,RIL负责将数据打包,通过socket传送给下层的RILD(Radio Interface Layer Deamon)层,并且从RILD接收反馈信息传送给应用层。内核层存在于在通信框架中,内核含有软件与基带通信的驱动,作为硬件与软件之间的抽象层。基带层则为独立的通讯模块,其实现了无线通讯功能。可以把它看作一个硬件设备,通过标准的RSR232串口连接,用标准的AT指令命令控制,可以更换。
Android包括操作系统、中间件和一些关键的平台应用,是一款真正意义的开放性的移动设备综合平台。他是一组面向移动设备的软件包,由操作系统,中间和关键应用程序组成。由于Android的RIL和RILD的通讯是负责连接上层应用程序和底层modem,所以RIL和RILD的通讯时Android通讯的关键技术,对于不同的硬件系带,只要在RILD作对应的修改,既可以完成android通讯功能在不同硬件环境,不同的基带上的实现。Android平台的数据传送方式按照消息可分为两类,第一类是从上层发送数据,然后经过RIL将数据打包,发送到RILD库层,转换成AT命令,发送给modem,处理后,由modem发送反馈信息,通过后由RILD和RIL的反馈到上一层,这样表示一次数据的发送成功,已发送短信为例,其实现流程如下:
1)建立RILSender线程,通过sokcet向rild发送数据;
2)建立dispatch线程,接受由soket发送过来的数据;
3)获取到对应的dispatch函数,然后将数据解析成AT命令;
4)通过onRequest发送请求;
5)writeline写到初始化打开的设备中;
6)建立线程readerLoop监听来自modem的反馈信息,转化成上层能够识别的数据包;
7)将接受的数据和信息网上发,反馈给ril层;
8)建立RILReceiver线程,处理由下层反馈上来的信息,给应用层处理。
第二类是有modem直接上报的消息,通过RILD和RIL将数据发送给上层对应用的应用程序,然后由应用程序解析数据。这一类中,实现过程与上层发送数据之后的反馈过程大致相同,只是这里由OnUnsolicitedResponse()来处理直接由modem上报来的信息。
Android平台的通信系统设计通过RIL(Radio Interface Layer)和RILD(Radio Interface Layer Deamon)连接了上层应用程序和底层的modem,由于RIL和RILD数据通过打包传输,只需根据所用硬件修改RILD对数据的解析以及反馈部分的代码就可以将Android移植到不同的modem和不同的硬件环境,既可以保证通信的顺利进行,所以,本文对android到不同硬件环境以及modem的移植做了较为诠释。
[1]McGraw Hill.Android A Programmers Guide[M].Bettina Faltermeier,2008,7.
[2]胥袁,刘乃琦,郝玉洁.基于Symbian操作系统的套接字通信研究[D].电子科技大学,2008.
[3]黄佳荃,陈伟.基于Symbian OS的串行通信模块研究[D].武汉理工大学,2008.
[4]Tuukka Karvonen.Implementation of the GSM 07.10 Linux Device Driver,2004.