话说ril这东西,whans也是刚刚开始接触,当初谁也没想到目前会从事这个事。不过从事什么都差不多,至少还算是技术活。
下面就对RIL 中SMS 的移植 做个小结吧,如果有什么不到位的地方,望不吝赐教,谢谢!

先提供一些官方的文档手册,作为了解。

如何获取android 某个分支一份拷贝,你最好为其准备5G的空间:
http://source.android .com/download

android 模拟器,以及开发文档,在调试过程中模拟器是个好东西
http://developer.android .com/sdk/1.5_r3/index.html

关于android ril整体架构的介绍
http://www.netmite.com/android /mydroid/development/pdk/docs/telephony.html

ril的一些相关介绍
http://en.wikipedia.org/wiki/Radio_Interface_Layer

在上篇文章中,曾提到,android ril只对GSM提供支持,对于CDMA EVDO需要对android 原有ril的一些实现进行改造。
先确定一下主要任务是什么,涉及到哪些内容?
先看看:
$adb shell logcat -b radio
过程中给出的日志信息做个分析。

2009-08-09-173353_398x543_scrot

2009-08-09-173434_593x241_scrot

logcat 输出的ril日志信息
1、你需要修改AT命令;2、你需要重新对信息进行编、解码,这里主要是pdu与text之间编码的互换。由于目前只是调试sms所以主要的工作还是在信息的编、解码上;3、你需要改变一些状态,来绕过应用层对modem状态的判断,这样才能够始你的代码顺利运行起来。

framework层,用java实现,代码结构相对复杂,对于sms模块,主要关注:frameworks/base/telephony/java/com/android /internal/telephony/下以SMS开头的代码以及RIL.java,这个是framework与ril通信的主要实现。
对ril层,主要关注:hardware/ril/reference-ril,从上面google官方的文档也可以知道,ril层移植 主要涉及的内容。

从logcat日志的内容,可以确定framework层发给ril的 内 容采用的是pdu编码,而CDMA EVDO目前并不支持pdu编码的信息,对此我们可以有两种选择:1、修改framework层,把下发给ril的信息改为text mode的信息;2、修改ril,把pdu mode的信息还原成text mode的内容再发送。当然从效率上讲,第二种方式肯定低,不过考虑的源码代码都是对字符串的处理,如果修改framework层,则必将导致很多问题的 出现,比如strlen、asrpintf等调用都会出问题(在text
mode下串尾符并能标示内容的结束,而且还经常出现)。因此在移植 过程中对串尾符的处理是需要解决的问题之一。

信息内容的编解码
http://www.dreamfabric.com/sms/ (给出了在pdu mode下发 和收 时的信息编码方式)
http://stud.usv.ro/~amurariu/SMS%20and%20PDU%20format.htm(一个在线的pdu编解码工具,不过有一点需要注意,你用logcat工具dump出来的 内容并不能通过该软件正确解码,原因出在android 在编码信息时少了一个octet,只要在pdu帧 内容长度前加“aa”就能正确解码,该值是 有效期)

就先简单的介绍这些吧!