Android-RIL層剖析(一家網(wǎng)站上找的)_第1頁
Android-RIL層剖析(一家網(wǎng)站上找的)_第2頁
Android-RIL層剖析(一家網(wǎng)站上找的)_第3頁
Android-RIL層剖析(一家網(wǎng)站上找的)_第4頁
Android-RIL層剖析(一家網(wǎng)站上找的)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

././android_pdk/telephony.html這個(gè)上的是文還有英文Android無線接口層〔RadioLayerInterface目錄:1、介紹

2、RIL初始化

3、RIL交互

3.1主動(dòng)請(qǐng)求

3.2被動(dòng)請(qǐng)求

4、實(shí)現(xiàn)RIL

RIL初始化

5、RIL函數(shù)

5.1RIL主動(dòng)命令請(qǐng)求

5.2RIL被動(dòng)請(qǐng)求的命令1介紹Android的無線接口層〔RIL提供了Android服務(wù)〔android.telephony與無線電硬件之間的抽象層。RIL是通訊無關(guān)的,提供基于GSM的網(wǎng)絡(luò)支持。

下圖顯示了RIL位于Android系統(tǒng)架構(gòu)中的位置。圖1實(shí)線框表示Android部分,虛線框表示合作伙伴所專用的部分。RIL包含兩個(gè)基本部件:

RIL守護(hù)進(jìn)程〔RILDaemon:RIL守護(hù)進(jìn)程初始化VendorRIL,管理所有來自Android通訊服務(wù)的通訊,將其作為被請(qǐng)求的命令〔solicitedcommands調(diào)度給VendorRIL。

VendorRIL:ril.h文件中的無線電專用VendorRIL掌管著所有和無線電硬件的通訊,并且通過未被請(qǐng)求的命令〔unsolicitedcommands分發(fā)給RIL守護(hù)進(jìn)程。2RIL初始化Android在啟動(dòng)時(shí)初始化通訊棧和VendorRIL,描述如下:

1.RIL守護(hù)進(jìn)程讀取rild.lib路徑和rild.libargs系統(tǒng)參數(shù),決定應(yīng)該使用的VendorRIL庫和向VendorRIL提供的初始化參數(shù)2.RIL守護(hù)進(jìn)程加載VendorRIL庫,執(zhí)行RIL_Init初始化RIL并為RIL函數(shù)獲取參數(shù)。

3.RIL守護(hù)進(jìn)程調(diào)用Android通訊棧中RIL_register,為VendorRIL函數(shù)提供參考。

RIL守護(hù)進(jìn)程源碼請(qǐng)參考//device/commands/rild/rild.c3RIL交互RIL句柄提供了兩種交互方式:主動(dòng)請(qǐng)求命令〔Solicitedcommands:主動(dòng)請(qǐng)求命令來自RILlib,比如DIAL和HANGUP。

被動(dòng)請(qǐng)求命令〔Unsolicitedresponses:被動(dòng)請(qǐng)求命令來自基帶,比如CALL_STATE_CHANGED和NEW_SMS。3.1主動(dòng)請(qǐng)求以下代碼片段屬于主動(dòng)請(qǐng)求命令

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

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

有超過60個(gè)主動(dòng)請(qǐng)求命令:

*SIMPIN,IO和IMSI/IMEI〔11

*狀態(tài)和動(dòng)作〔撥號(hào),應(yīng)答,靜音…〔16

*網(wǎng)絡(luò)狀態(tài)查詢〔4

*網(wǎng)絡(luò)設(shè)置〔禁止,轉(zhuǎn)發(fā),選擇…〔12

*短信〔3

*PDP連接〔4

*電源和復(fù)位〔2

*輔助服務(wù)〔5

*供應(yīng)商定義及其支持〔4下圖表明了Android系統(tǒng)一個(gè)主動(dòng)請(qǐng)求的過程,圖23.2被動(dòng)請(qǐng)求以下代碼片段屬于被動(dòng)請(qǐng)求命令:

voidOnUnsolicitedResponse<intunsolResponse,void*data,size_tdatalen>;有超過10條被動(dòng)請(qǐng)求命令:

*網(wǎng)絡(luò)狀態(tài)改變〔4

*新短信通知〔3

*新USSD通知〔2

*信號(hào)強(qiáng)度和時(shí)間改變〔2下圖表明Android系統(tǒng)中一個(gè)被動(dòng)請(qǐng)求的過程:圖34實(shí)現(xiàn)RIL為了實(shí)現(xiàn)一個(gè)通訊專用RIL,需要執(zhí)行一系列函數(shù)以創(chuàng)建一個(gè)共享庫,保證Android能夠響應(yīng)無線通信請(qǐng)求。所需要的函數(shù)被定義在RIL頭部〔/include/telephony/ril.h

Android通訊接口是通訊無關(guān)的,VendorRIL可以使用任意協(xié)議進(jìn)行無線通訊。Android提供了一個(gè)參考VendorRIL,使用的是賀式〔HayesAT命令設(shè)備,可作為一個(gè)商用的快速入門指導(dǎo)以及通訊測試使用。RIL參考源碼在/commands/reference-ril/。

通常將你自己的VendorRIL編譯為以下形式:

libril-<companyname>-<RILversion>.so

比如:libril-acme-124.so

其中:

libril:所有vendorRIL的開頭;

<companyname>:專用公司縮寫

<RILversion>:RIL版本number

so:文件擴(kuò)展4.1RIL初始化特定的VendorRIL必須定義一個(gè)初始化函數(shù),提供一系列句柄函數(shù)以處理每一個(gè)通訊請(qǐng)求。AndroidRIL守護(hù)進(jìn)程會(huì)在啟動(dòng)時(shí)調(diào)用RIL_Init以初始化RIL。

RIL_RadioFunctions*RIL_Init<RIL_Env*env,intargc,char**argv>;RIL_Init返回一個(gè)RIL_RadioFunctions結(jié)構(gòu)體包含無線電函數(shù)指針。

typestructure{

intRIL_version;

RIL_RequestFunconRequest;

RIL_RadioStateRequestonStateRequest;

RIL_Supportssupports;

RIL_CancelonCancel;

RIL_GetVersiongetVersion;

}RIL_RadioFunctions;5RIL函數(shù)ril.h定義了RIL狀態(tài)和變量,比如RIL_UNSOL_STK_CALL_SETUP,RIL_SIM_READY,RIL_SIM_NOT_READY,具體函數(shù)描述見下表。忽略頭文件</device/include/telephony/ril.h>細(xì)節(jié)。5.1RIL主動(dòng)命令請(qǐng)求VendorRIL必須提供下表中的函數(shù)用以發(fā)送主動(dòng)命令。RIL主動(dòng)命令請(qǐng)求類型定義在ril.h的RIL_REQUEST_prefix中。函數(shù)1:void<*RIL_RequestFunc><intrequest,void*data,size_tdatalen,RIL_Tokent>;描述:RIL主動(dòng)命令入口指針,必須能夠處理各種RIL主動(dòng)請(qǐng)求〔定義于ril.h的RIL_REQUEST_prefix。*request是一種RIL_REQUEST_*

*data是一個(gè)指向RIL_REQUEST_*數(shù)據(jù)的指針

*t應(yīng)當(dāng)被用于RIL_onResponse的后續(xù)調(diào)用

*datalen由調(diào)用者所有,應(yīng)當(dāng)由被調(diào)者修改或釋放必須調(diào)用RIL_onRequestComplete<>函數(shù)完成通訊。RIL_onRequestComplete<>在這個(gè)函數(shù)返回前或之后可能被任意線程調(diào)用。這個(gè)函數(shù)總會(huì)調(diào)用同一個(gè)線程,因此返回到這里意味著無線通訊準(zhǔn)備去處理其他命令〔無論前面命令是否完成傳輸。函數(shù)2:RIL_RadioState<*RIL_RadioStateRequest><>;描述:這個(gè)函數(shù)應(yīng)該返回當(dāng)前通訊同步狀態(tài)函數(shù)3:int<*RIL_Supports><intrequestCode>;描述:如果提供指定RIL_REQUEST代碼,返回1,否則返回0.函數(shù)4:void<*RIL_Cancel><RIL_Tokent>;描述:本函數(shù)用來指示取消一個(gè)待處理請(qǐng)求。函數(shù)將被一個(gè)獨(dú)立線程所調(diào)用,而不是RIL_RequestFunc函數(shù)。一旦取消,被調(diào)用者應(yīng)當(dāng)盡量放棄請(qǐng)求并在這之后調(diào)用RIL_onRequestComplete函數(shù)的RIL_ErrnoCANCELLED。響應(yīng)請(qǐng)求后調(diào)用RIL_onRequestComplete并產(chǎn)生其他結(jié)果是可以被接受的,但會(huì)被忽略<理應(yīng)忽略被取消的請(qǐng)求>。RIL_Cancel調(diào)用應(yīng)該被立刻返回,不需要等待取消。函數(shù)5:constchar*<*RIL_GetVersion><void>;描述:向你的VendorRIL返回版本字符串VendorRIL使用以下回調(diào)函數(shù)與AndroidRIL守護(hù)進(jìn)程通訊。函數(shù)1:voidRIL_onRequestComplete<RIL_Tokent,RIL_Errnoe,void*response,size_tresponselen>;描述:*t是之前通訊傳遞至RIL_Notification的參數(shù)

*如果e!=SUCCESS,則可以沒有相應(yīng),并且被忽略

*response由調(diào)用者所有,應(yīng)當(dāng)由被調(diào)用者修改或者釋放。

*RIL_onRequestComplete將盡快返回函數(shù)2:voidRIL_requestTimedCallback<RIL_TimedCallbackcallback,void*param,conststructtimeval*relativeTime>;描述:用戶指定的回調(diào)函數(shù)的線程中,RIL_RequestFunc函數(shù)被調(diào)用。如果指定了relativeTime,那么回調(diào)前將等待一個(gè)一個(gè)特定的時(shí)間值。如果relativeTime為空,或者指針指向了一個(gè)空的結(jié)構(gòu)體,回調(diào)函數(shù)會(huì)盡快被執(zhí)行。5.2RIL被動(dòng)命令下表函數(shù)是VedorRIL使用的回調(diào)函數(shù),用來喚醒被動(dòng)命令在Android平臺(tái)的相應(yīng)機(jī)制。具體細(xì)節(jié)看ril.h函數(shù):voidRIL_onUnsolicitedResponse<intunsolResponse,constvoid*data,size_tdatalen>;描述:*unsolResponse是RIL_UNSOL_RESPONSE_*其中之一

*data是指向RIL_UNSOL_RESPONSE_*數(shù)據(jù)的指針

*data被調(diào)用者所有,應(yīng)當(dāng)由被調(diào)用者修改或者釋放reference-ril.c文件存放路徑:wangkdebian:~/JWT/Android-JWT/hardware/ril/reference-ril$所在目錄結(jié)構(gòu):/hardware/ril/|--ril

〔無線電抽象層

|

|--include

〔頭文件

|

|--libril

〔庫

|

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

|

|--reference-ril

〔ril參考

|

|--rild

〔ril后臺(tái)服務(wù)程序RadioInterfaceLayer<RIL>和UI框架結(jié)構(gòu)RIL介紹背景知識(shí)介紹,AT命令和pppRIL的工作原理和涉及的系統(tǒng)服務(wù)RIL的呼叫過程和ppp激活過程UI的surface框架[AndroidRIL開發(fā)]目標(biāo):熟悉androidril架構(gòu),能夠開發(fā)簡

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論