android ril SMS移植

2 篇文章 0 订阅

关于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
发短信过程中给出的日志信息做个分析。

 

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值