Android RIL结构分析与移植(2)

 

Android RIL结构分析与移植(2)

2.Android RILWindowsMobile RIL

Android RILWindowsMobile RIL 在设计思路上都是作为一个radio的抽象,为上层提供电话服务,但在实现方式上两者有着一定的差异,这种差异的产生主要是源自操作系统机制的不同。 

Android RIL被实现为HAL,相对于windows mobile中被实现为驱动的方式,Android RIL模块的内聚性更为理想,可维护性也将更强,你也可以把Android Ril 看做一个中间件。Android RIL部分的开发工作,只需要拿到相应的radio文件描述符,就可以进行操作,无需关注radioI/O驱动实现。

2.1两者在与应用通信上的实现对比

WindowsMobile RIL在实现与应用的通信时提供了RIL Proxy,在这个层面中它定义了大量的RIL_***()函数来作为电话服务请求。这一点与Android RIL的实现比较相似,Android RIL中在ril.h内提供了一系列的宏来定义电话服务请求。

Android中的rild功能类似于windows mobile RILRIL proxy。它同样也是起到一个中介的作用,为上层接口向下传递请求,并上传回响应。在windows mobile RIL中要为每一个应用程序客户提供一份Ril Proxy实例。

对于这两种操作系统平台,RIL所定义的所有请求是不可更改的。

   

2.2两者在线程结构与回调机制上的对比

windows mobile的设计中,requestresponse被设计为异步执行的,他们分别使用两个队列来对它们的异步行为进行管理,执行命令下发和上报命令处理的过程也互不影响,下发命令与命令的相应响应之间的依赖关系由应用程序来捏合。

android ril中的requestresponse设计与windows mobile不同,它的命令与响应之间是同步的过程。也就是说一条命令被下发后,将等待执行结果,并进行处理,再上向上层发。而不是直接异步的进行处理和向上发送。

3.Android RIL porting

3.1.命名

要实现某个无线模块的RIL,需要创建一个实现了所有请求方法的共享库,保证Android能够响应无线通信请求。所有的请求被定义ril.h中。

不同的Modem使用不同的端口,这个在init.rc中设置。

  Android提供了一个参考Vendor RILRIL参考源码在reference-ril

  将你自己的Vendor RIL实现编译为共享库形式:
                    libril-<companyname>-<RIL version>.so


  比如:
                    libril-techfaith-124.so

       其中:
                   libril:所有vendor RIL的开头
                  <companyname>:公司缩写
                  <RIL version>RIL版本number
                  so:文件扩展

3.2.Android RIL的配置与加载

init.rc文件中,将通过这种方式来进行Android RIL的加载。

service ril-daemon /system/bin/rild -l /system/lib/libreference-ril.so -- -d /dev/ttyS0 

也可以手动加载:

/system/bin/rild -l /system/lib/libreference-ril.so -- -d /dev/ttyS0

这两种方式,都将启动rild守护进程,然后通过-l参数将libreference-ril.so共享库链入,libreference-ril.so的参数-d是指加载一个串口设备,/dev/ttyS0则是这个串口设备的具体设备文件,除了参数-d外,还有-s代表加载类型为socket的设备,-p代表回环接口。

3.3.Android RIL的编译结构

rild:

被编译成可执行文件,rild以守进程的形式执行。

libril:

将被编译为共享库,并被链入rild

Vendor RIL:

可以以两种方式来运行,如果定义了RIL_SHLIB,那么它将被编译成共享库,如果没定义RIL_SHLIB宏,它将以守护进程程序的方式被调用执行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值