Android之通信RIL模块分析

Android RIL的原生代码包括四个主题:

 

1.Android RIL框架介绍

2.Android RIL WindowsMobile RIL

3.Android RIL porting

4.Android RILjava框架

 

在本文档中将Android代码中的重要模块列出进行分析,并给出了相关的程序执行流程介绍,以加深对模块间交互方式的理解。

 

对于java代码部分,这里仅进行简单的介绍。如果需要深入了解,可以查看相关参考资料。

 

本文档中还对Android RILPorting部分内容进行了描述和分析。

 

针对对unix操作系统环境并不熟悉的读者,本文档中所涉及到的相关知识包括:

  Unix file system

  Unix socket

  Unix thread

  Unix I/O多路转接

 

以上信息可以在任意一份描述Unix系统调用的文档中找到。

 

1.Android RIL 框架介绍 术语:

fd                       unix文件描述符

pipe                      unix管道

cond                      一般是condition variable的缩写

tty                       通常使用tty来简称各种类型的终端设备

unsolicited response         被动请求命令来自baseband

event loop                 android的消息队列机制,由unix的系统调用select()实现

init.rc                     init守护进程启动后被执行的启动脚本。

HAL                     硬件抽象层(Hardware Abstraction LayerHAL

1.1.Android RIL 概况:

Android RIL提供了无线硬件设备与电话服务之间的抽象层。

 


androidril位于应用程序框架与内核之间,分成了两个部分,一个部分是rild,它负责socket与应用程序框架进行通信。另外一个部分是Vendor RIL,这个部分负责向下是通过两种方式与radio进行通信,它们是直接与radio通信的AT指令通道和用于传输包数据的通道,数据通道用于手机的上网功能。

 

对于RILjava框架部分,也被分成了两个部分,一个是RIL模块,这个模块主要用于与下层的rild进行通信,另外一个是Phone模块,这个模块直接暴露电话功能接口给应用开发用户,供他们调用以进行电话功能的实现。

1.2.Android RIL 目录结构:

Android的RIL模块位于Android/hardware/ril文件夹,有三个子模块:rild , libril , reference-ril

 

●include文件夹:

包含RIL头文件,最主要的是ril.h

 

●rild文件夹:

RIL守护进程,开机时被init守护进程调用启动,里面仅有main函数作为入口点,负责完成RIL初始化工作。

 

在rild.c文件中,将完成ril的加载过程,它会执行如下操作:

  动态加载Vendor RIL的.so文件

  执行RIL_startEventLoop()开启消息队列以进行事件监听

  通过执行Vendor RIL的rilInit()方法来进行Vendor RIL与libril的关系建立。

 

在rild文件夹中还包括一个radiooptions.c文件,它的作用是通过串口将一些radio相关的参数直接传给rild来对radio进行配置。

 

●libril文件夹:

在编译时libril被链入rild,它为rild提供了event处理功能,还提供了在rild与Vendor RIL之间传递请求和响应消息的能力。

Libril提供的主要功能分布在两个主要方法内,一个是RIL_startEventLoop()方法,另一个是RIL_register()方法

RIL_startEventLoop()方法所提供的功能就是启用eventLoop线程,开始执行RIL消息队列。

RIL_register()方法的主要功能是启动名为 rild 的监听端口,等待java 端通过socket进行连接。

 

●reference-ril文件夹:

Android自带的Vendor RIL的参考实现。被编译成.so文件,由于本部分是厂商定制的重点所在。所以被设计为松散耦合,且可灵活配置的。在rild中通过opendl()的方式加载。

librefrence.so负责直接与radio通信,这包括将来自libril的指令转换为AT指令,并且将AT指令写入radio中。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值