Android-RIL层剖析(一家网站上找的)_第1页
Android-RIL层剖析(一家网站上找的)_第2页
Android-RIL层剖析(一家网站上找的)_第3页
Android-RIL层剖析(一家网站上找的)_第4页
Android-RIL层剖析(一家网站上找的)_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

././android_pdk/telephony.html这个上的是文还有英文Android无线接口层〔RadioLayerInterface目录:1、介绍

2、RIL初始化

3、RIL交互

3.1主动请求

3.2被动请求

4、实现RIL

RIL初始化

5、RIL函数

5.1RIL主动命令请求

5.2RIL被动请求的命令1介绍Android的无线接口层〔RIL提供了Android服务〔android.telephony与无线电硬件之间的抽象层。RIL是通讯无关的,提供基于GSM的网络支持。

下图显示了RIL位于Android系统架构中的位置。图1实线框表示Android部分,虚线框表示合作伙伴所专用的部分。RIL包含两个基本部件:

RIL守护进程〔RILDaemon:RIL守护进程初始化VendorRIL,管理所有来自Android通讯服务的通讯,将其作为被请求的命令〔solicitedcommands调度给VendorRIL。

VendorRIL:ril.h文件中的无线电专用VendorRIL掌管着所有和无线电硬件的通讯,并且通过未被请求的命令〔unsolicitedcommands分发给RIL守护进程。2RIL初始化Android在启动时初始化通讯栈和VendorRIL,描述如下:

1.RIL守护进程读取rild.lib路径和rild.libargs系统参数,决定应该使用的VendorRIL库和向VendorRIL提供的初始化参数2.RIL守护进程加载VendorRIL库,执行RIL_Init初始化RIL并为RIL函数获取参数。

3.RIL守护进程调用Android通讯栈中RIL_register,为VendorRIL函数提供参考。

RIL守护进程源码请参考//device/commands/rild/rild.c3RIL交互RIL句柄提供了两种交互方式:主动请求命令〔Solicitedcommands:主动请求命令来自RILlib,比如DIAL和HANGUP。

被动请求命令〔Unsolicitedresponses:被动请求命令来自基带,比如CALL_STATE_CHANGED和NEW_SMS。3.1主动请求以下代码片段属于主动请求命令

voidOnRequest<intrequest_id,void*data,size_tdatalen,RIL_Tokent>;

voidOnRequestComplete<RIL_Tokent,RIL_Errore,void*response,size_tresponselen>;

有超过60个主动请求命令:

*SIMPIN,IO和IMSI/IMEI〔11

*状态和动作〔拨号,应答,静音…〔16

*网络状态查询〔4

*网络设置〔禁止,转发,选择…〔12

*短信〔3

*PDP连接〔4

*电源和复位〔2

*辅助服务〔5

*供应商定义及其支持〔4下图表明了Android系统一个主动请求的过程,图23.2被动请求以下代码片段属于被动请求命令:

voidOnUnsolicitedResponse<intunsolResponse,void*data,size_tdatalen>;有超过10条被动请求命令:

*网络状态改变〔4

*新短信通知〔3

*新USSD通知〔2

*信号强度和时间改变〔2下图表明Android系统中一个被动请求的过程:图34实现RIL为了实现一个通讯专用RIL,需要执行一系列函数以创建一个共享库,保证Android能够响应无线通信请求。所需要的函数被定义在RIL头部〔/include/telephony/ril.h

Android通讯接口是通讯无关的,VendorRIL可以使用任意协议进行无线通讯。Android提供了一个参考VendorRIL,使用的是贺式〔HayesAT命令设备,可作为一个商用的快速入门指导以及通讯测试使用。RIL参考源码在/commands/reference-ril/。

通常将你自己的VendorRIL编译为以下形式:

libril-<companyname>-<RILversion>.so

比如:libril-acme-124.so

其中:

libril:所有vendorRIL的开头;

<companyname>:专用公司缩写

<RILversion>:RIL版本number

so:文件扩展4.1RIL初始化特定的VendorRIL必须定义一个初始化函数,提供一系列句柄函数以处理每一个通讯请求。AndroidRIL守护进程会在启动时调用RIL_Init以初始化RIL。

RIL_RadioFunctions*RIL_Init<RIL_Env*env,intargc,char**argv>;RIL_Init返回一个RIL_RadioFunctions结构体包含无线电函数指针。

typestructure{

intRIL_version;

RIL_RequestFunconRequest;

RIL_RadioStateRequestonStateRequest;

RIL_Supportssupports;

RIL_CancelonCancel;

RIL_GetVersiongetVersion;

}RIL_RadioFunctions;5RIL函数ril.h定义了RIL状态和变量,比如RIL_UNSOL_STK_CALL_SETUP,RIL_SIM_READY,RIL_SIM_NOT_READY,具体函数描述见下表。忽略头文件</device/include/telephony/ril.h>细节。5.1RIL主动命令请求VendorRIL必须提供下表中的函数用以发送主动命令。RIL主动命令请求类型定义在ril.h的RIL_REQUEST_prefix中。函数1:void<*RIL_RequestFunc><intrequest,void*data,size_tdatalen,RIL_Tokent>;描述:RIL主动命令入口指针,必须能够处理各种RIL主动请求〔定义于ril.h的RIL_REQUEST_prefix。*request是一种RIL_REQUEST_*

*data是一个指向RIL_REQUEST_*数据的指针

*t应当被用于RIL_onResponse的后续调用

*datalen由调用者所有,应当由被调者修改或释放必须调用RIL_onRequestComplete<>函数完成通讯。RIL_onRequestComplete<>在这个函数返回前或之后可能被任意线程调用。这个函数总会调用同一个线程,因此返回到这里意味着无线通讯准备去处理其他命令〔无论前面命令是否完成传输。函数2:RIL_RadioState<*RIL_RadioStateRequest><>;描述:这个函数应该返回当前通讯同步状态函数3:int<*RIL_Supports><intrequestCode>;描述:如果提供指定RIL_REQUEST代码,返回1,否则返回0.函数4:void<*RIL_Cancel><RIL_Tokent>;描述:本函数用来指示取消一个待处理请求。函数将被一个独立线程所调用,而不是RIL_RequestFunc函数。一旦取消,被调用者应当尽量放弃请求并在这之后调用RIL_onRequestComplete函数的RIL_ErrnoCANCELLED。响应请求后调用RIL_onRequestComplete并产生其他结果是可以被接受的,但会被忽略<理应忽略被取消的请求>。RIL_Cancel调用应该被立刻返回,不需要等待取消。函数5:constchar*<*RIL_GetVersion><void>;描述:向你的VendorRIL返回版本字符串VendorRIL使用以下回调函数与AndroidRIL守护进程通讯。函数1:voidRIL_onRequestComplete<RIL_Tokent,RIL_Errnoe,void*response,size_tresponselen>;描述:*t是之前通讯传递至RIL_Notification的参数

*如果e!=SUCCESS,则可以没有相应,并且被忽略

*response由调用者所有,应当由被调用者修改或者释放。

*RIL_onRequestComplete将尽快返回函数2:voidRIL_requestTimedCallback<RIL_TimedCallbackcallback,void*param,conststructtimeval*relativeTime>;描述:用户指定的回调函数的线程中,RIL_RequestFunc函数被调用。如果指定了relativeTime,那么回调前将等待一个一个特定的时间值。如果relativeTime为空,或者指针指向了一个空的结构体,回调函数会尽快被执行。5.2RIL被动命令下表函数是VedorRIL使用的回调函数,用来唤醒被动命令在Android平台的相应机制。具体细节看ril.h函数:voidRIL_onUnsolicitedResponse<intunsolResponse,constvoid*data,size_tdatalen>;描述:*unsolResponse是RIL_UNSOL_RESPONSE_*其中之一

*data是指向RIL_UNSOL_RESPONSE_*数据的指针

*data被调用者所有,应当由被调用者修改或者释放reference-ril.c文件存放路径:wangkdebian:~/JWT/Android-JWT/hardware/ril/reference-ril$所在目录结构:/hardware/ril/|--ril

〔无线电抽象层

|

|--include

〔头文件

|

|--libril

〔库

|

|--reference-cdma-sms〔cdma短信参考

|

|--reference-ril

〔ril参考

|

|--rild

〔ril后台服务程序RadioInterfaceLayer<RIL>和UI框架结构RIL介绍背景知识介绍,AT命令和pppRIL的工作原理和涉及的系统服务RIL的呼叫过程和ppp激活过程UI的surface框架[AndroidRIL开发]目标:熟悉androidril架构,能够开发简

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论