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

提交評論