分类: LINUX
2010-12-27 16:16:01
下面就对RIL 中SMS 的移植做个小结吧,如果有什么不到位的地方,望不吝赐教,谢谢!
先提供一些官方的文档手册,作为了解。
如何获取android 某个分支一份拷贝,你最好为其准备5G的空间:
android.com/download
android 模拟器,以及开发文档,在调试过程中模拟器是个好东西
http://developer.android.com/sdk/1.5_r3/index.html
关于android ril整体架构的介绍
android/mydroid/development/pdk/docs/telephony.html
ril的一些相关介绍
在上篇文章中,曾提到,android ril只对GSM提供支持,对于CDMA EVDO需要对android原有ril的一些实现进行改造。
先确定一下主要任务是什么,涉及到哪些内容?
先看看:
$adb shell logcat -b radio
对发短信过程中给出的日志信息做个分析。
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下串尾符并能标示内容的结束,而且还经常出现)。因此在移植过程中对串尾符的处理是需要解决的问题之一。
信息内容的编解码
(给出了在pdu mode下发短信和收短信时的信息编码方式)
~amurariu/SMS%20and%20PDU%20format.htm(一个在线的pdu编解码工具,不过有一点需要注意,你用logcat工具dump出来的短信内容并不能通过该软件正确解码,原因出在android在编码信息时少了一个octet,只要在pdu帧短信内容长度前加“aa”就能正确解码,该值是短信有效期)
chinaunix网友2011-01-02 11:59:44
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com
chinaunix网友2011-01-02 11:59:44
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com