android 短信ril移植,将Android平台的RIL层移植到基于LINUX的通用平台的研究与实现...

摘要:本文通过对Android RIL层代码分析,将android RIL层功能在纯LINUX平台上实现,完全脱离了Android系统.为基于LINUX的通用平台实现一套成熟的RIL层代码,并开发出相应的框架层,以便基于LINUX的平台能快速成熟的向3G网络发起相关业务.在OpenWrt系统上验证了移植后的RIL层代码正常工作.

1.课题研究的背景和意义

1.1 Android RIL简介

Android RIL(Radio Interface Layer)提供了无线基带Modem与电话应用之间的抽象层.在Android RIL层中,完善的考虑了电话应用的各种情况,如:双SIM卡;电话,短信,彩信,PS DATA业务,PIN/PUK码等各种3G网络业务.

RIL层在Android系统中,处于硬件抽象层,运行在一个独立的守护进程中,主要为框架层和基带接口提供适配,具有良好的独立性.其中的通信机制,与框架层接口主要使用Socket通信,内部线程主要使用管道,与基带接口默认使用AT命令.且其代码均由C和C++来完成,依赖第三方库较少,所以,Android RIL层具有良好的移植性.

1.2 移植Android RIL的意义

目前很多基于L I N U X平台的系统,如:

PC(LINUX操作系统),QT,路由器平台(如O p e n W r t系统)等等,都对连接3 G网络有需求,但在这些平台原生的功能中,没有独立的RIL接口层,所以开发一套基于LINUX的独立应用,用来支持与基带发起各种3G网络相关业务是很有意义的.Android RIL具有良好的稳定性,独立性,以及对3G网络业务的完整性,所以将其移植成一个独立的,供LINUX通用平台使用的RIL层,可方便所有的基于LINUX的平台完成各种电话应用的开发.

2.Android系统中RIL层分析

2.1 RIL层在Android系统中的位置

RIL在Android系统中,处于硬件抽象层位置.主要通过SOCKET通信连接框架层,将框架层下发的消息解析后,向基带下发相应的AT指令,并将从基带返回的AT指令的响应,封装成消息,返回给框架层.位置如图1所示.

00d57bb8c949e9ae6004b2b93abad4c0.png

2.2 Android RIL工作原理

2.2.1 Android RIL代码说明

RIL主要由RILD(radio interface layerdaemon)守护进程和两个动态库:librefrence_ril.so和libril.so组成.Android工程源代码目录中,RIL代码包含于hardware/ril目录中,主要文件说明如表1所示.

2.2.2 Android RIL工作原理

rild以一个main函数作为整个RIL层的入口点,负责完成初始化.libril.so库包含了主要的消息循环流程,主要负责与框架层进行交互,在接收框架层命令后,调用相应函数处理,然后将命令响应结果传回客户进程.

librefrence_ril.so主要提供各个具体业务的AT指令的封装和解析接口,供libril调用,向下通过AT_COM和基带进行交互.具体工作线程如图2所示.

7e99d6e1e342c6979db4bd9c9b35786e.png

3.移植Android RIL层功能

通过对Android RIL层代码分析, 在RIL层主要使用了基于linux的POSIX Thread(pthread)多线程编程和socket IPC通信,这些在移植过程中是无须考虑的.需要移植的是RIL层依赖于Android系统的功能.

3.1 移植Android系统属性

系统属性系统的一个重要特性.属性数据由init进程维护,用于管理系统全局配置和状态,每个属性对应一对键值.

在RIL层中对系统属性的依赖比较小,所以不需要将Android系统属性机制全部移植.RIL层主要在RILD初始化过程中需要从系统属性读取reference-ril.so路径.AT设备路径,网卡设备等信息,以及运行过程中将从网络中动态获取的IP和DNS等信息写入对应系统属性中.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值