Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1069591
  • 博文数量: 169
  • 博客积分: 12306
  • 博客等级: 上将
  • 技术积分: 1299
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-29 14:55
文章分类

全部博文(169)

文章存档

2012年(18)

2011年(78)

2010年(15)

2009年(1)

2008年(11)

2007年(39)

2006年(7)

我的朋友

分类: 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”就能正确解码,该值是有效期)

阅读(3902) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-01-02 11:59:44

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com

chinaunix网友2011-01-02 11:59:44

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com