Android通信機制及QCRIL原理介紹-華為_第1頁
Android通信機制及QCRIL原理介紹-華為_第2頁
Android通信機制及QCRIL原理介紹-華為_第3頁
Android通信機制及QCRIL原理介紹-華為_第4頁
Android通信機制及QCRIL原理介紹-華為_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、HUAWEI TECHNOLOGIES CO., LTDHuawei Confidential Security Level: 2022-3-6Android Android 通信機制及通信機制及QCRILQCRIL原理介紹原理介紹HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential Page 2Android軟件棧架構(gòu)HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential Page 3Android應(yīng)用運行環(huán)境l每個每個Android應(yīng)用依賴于應(yīng)用依賴于/system/framework文件夾下的一些核心庫

2、,這些文件夾下的一些核心庫,這些核心庫用是核心庫用是java編寫的。這些應(yīng)用還依賴于編寫的。這些應(yīng)用還依賴于/system/lib文件夾下的動態(tài)鏈接文件夾下的動態(tài)鏈接庫,這些動態(tài)鏈接庫是庫,這些動態(tài)鏈接庫是C / C+編寫的。編寫的。l這些庫就是這些庫就是Android應(yīng)用的環(huán)境,還有一些共享庫和類庫,是運行時動態(tài)加應(yīng)用的環(huán)境,還有一些共享庫和類庫,是運行時動態(tài)加載的類庫和本地調(diào)用載的類庫和本地調(diào)用(JNI Invoke)。l傳統(tǒng)傳統(tǒng)JAVA應(yīng)用,所有的應(yīng)用,所有的JAVA應(yīng)用都運行在同一個應(yīng)用都運行在同一個JVM中(默認(rèn)是這樣的)。中(默認(rèn)是這樣的)。而在而在Android上,每個應(yīng)用都運行

3、在自己專有的上,每個應(yīng)用都運行在自己專有的dalvik虛擬機實例里,這和虛擬機實例里,這和傳統(tǒng)傳統(tǒng)JAVA應(yīng)用有區(qū)別。應(yīng)用有區(qū)別。lAndroid使用使用Linux作為作為HAL( hardware abstraction layer )HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential Android RIL ArchitectureAndroid RIL ArchitecturePage 4HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential Android RILAndroid RILlDalvik

4、 VM (shared):Shared code among all Android VMSlRIL.java: Java utility for RIL message/socket handling lTelephony ManagerlCommunication between Java and RILD is via commands (messages) over socketslRIL.so handles socket and dispatch detailslRIL.java is corresponding code in JavaPage 5HUAWEI TECHNOLOG

5、IES CO., LTD.Huawei Confidential Android RILAndroid RILlRILDlRILD.soDaemon lRIL.soUtility library for RIL message/socket handlinglQCRIL.soQC RIL implementation lcm.so, wms.so, xxx.so QC remote API libs (QC) Page 6HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential RILRIL消息類型消息類型l有兩種類型的有兩種類型的RIL消息消息lSol

6、icited commands (請求消息請求消息)l是由上層應(yīng)用,例如是由上層應(yīng)用,例如DiIAL、HANGUP等通過等通過RIL lib發(fā)起的發(fā)起的lUnsolicited commandsl是由底層是由底層modem側(cè)發(fā)起的,向上層報告狀態(tài)的變化、新的消息等,側(cè)發(fā)起的,向上層報告狀態(tài)的變化、新的消息等,例如例如CALL_STATE_CHANGED 、SIM_STATE_CHANGED、NEW_SMS。lTwo sets of RIL commandsPage 7HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential 通信機制lRILD和和Mode

7、m側(cè)的通訊是通過側(cè)的通訊是通過RPC和和QMI實現(xiàn)的實現(xiàn)的lRPC用于多用于多CPU之間的通訊,一側(cè)的之間的通訊,一側(cè)的CPU應(yīng)用在應(yīng)用在ONC RPC棧中通過棧中通過XDR將消息編碼成字節(jié)流,通過將消息編碼成字節(jié)流,通過RPC router、共享內(nèi)存對應(yīng)傳到另一、共享內(nèi)存對應(yīng)傳到另一側(cè)側(cè)CPU的的RPC router、 ONC RPC棧中,棧中,XDR解碼后,得到數(shù)據(jù)。解碼后,得到數(shù)據(jù)。lXDR即是用于在同平臺間實現(xiàn)數(shù)據(jù)連續(xù)表示的編解碼機制。即是用于在同平臺間實現(xiàn)數(shù)據(jù)連續(xù)表示的編解碼機制。lQMI是高通自定義的一種數(shù)據(jù)接口,用于終端設(shè)備的操作系統(tǒng)應(yīng)用是高通自定義的一種數(shù)據(jù)接口,用于終端設(shè)備的

8、操作系統(tǒng)應(yīng)用和底層模塊的數(shù)據(jù)通信。數(shù)據(jù)業(yè)務(wù)基本通過和底層模塊的數(shù)據(jù)通信。數(shù)據(jù)業(yè)務(wù)基本通過QCRIL、QMI與底層交互與底層交互。Page 8HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential Page 9通信機制lApplication是是Android應(yīng)用,是單獨的應(yīng)用,是單獨的linux進程。進程。lcom. android.phone是是Android Service,類似于,類似于windows的的Service,運行于,運行于單獨的進程,給其他應(yīng)用提供服務(wù)。所有的單獨的進程,給其他應(yīng)用提供服務(wù)。所有的Service都可以通過都可以通過IS

9、erviceManager接口訪問。接口訪問。l例如一次呼叫調(diào)用發(fā)生,情景大概是如下幾步:例如一次呼叫調(diào)用發(fā)生,情景大概是如下幾步:lApplication調(diào)用調(diào)用android.telephony的接口;的接口;lTelephony的類根據(jù)狀態(tài),將呼叫分解成若干個的類根據(jù)狀態(tài),將呼叫分解成若干個commands,通過,通過IPC,調(diào)用,調(diào)用Phone Service的接口;的接口;lPhone Service通過通過sockets和和RILD這個這個daemon通信;通信;lrild將來自將來自Phone Service的命令通過的命令通過RPC、共享內(nèi)存,發(fā)送給、共享內(nèi)存,發(fā)送給Modem

10、,并接,并接收收Modem的返回,打包返回給的返回,打包返回給Phone Service;lPhone Service也將返回打包給也將返回打包給Application;l呼叫調(diào)用完畢。呼叫調(diào)用完畢。HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential Page 10Application和Phone Service的通信lApplication和和Phone Service之間通過之間通過OpenBinder機制通信。但是我們并不需機制通信。但是我們并不需要懂得要懂得OpenBinder的原理,因為的原理,因為Android軟件棧中的軟件棧中的Ap

11、plication Framework層已經(jīng)提供便捷的接口去調(diào)用。層已經(jīng)提供便捷的接口去調(diào)用。lApplication Framework層的層的android.telephony包為包為 上層應(yīng)用上層應(yīng)用 提供了調(diào)用提供了調(diào)用phone Service的接口,封裝、抽象得很好,一個打電話的調(diào)用只需要三行的接口,封裝、抽象得很好,一個打電話的調(diào)用只需要三行代碼,代碼,lIServiceManager sm = ServiceManagerNative.getDefault();lIPhone phoneService = IPhone.Stub.asInterface(sm.getServic

12、e(phone);lphoneService.call(phoneNumber);HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential 同步和異步調(diào)用l回調(diào)函數(shù):回調(diào)函數(shù):lClient 注冊一個回調(diào)函數(shù),當(dāng)條件滿足時注冊一個回調(diào)函數(shù),當(dāng)條件滿足時Server返回回調(diào)。返回回調(diào)。l回調(diào)函數(shù)本身是同步的?;卣{(diào)函數(shù)本身是同步的。l在同步調(diào)用中,調(diào)用者被在同步調(diào)用中,調(diào)用者被blocked直到調(diào)用被直到調(diào)用被Server Function處理并處理并返回調(diào)用者。返回調(diào)用者。l在異步調(diào)用中,調(diào)用請求發(fā)送到服務(wù)端,并立即返回,在異步調(diào)用中,調(diào)用請求發(fā)送到服務(wù)端

13、,并立即返回,Client如果如果想知道結(jié)果必須注冊一個監(jiān)聽相應(yīng)狀態(tài)返回的回調(diào)函數(shù)。想知道結(jié)果必須注冊一個監(jiān)聽相應(yīng)狀態(tài)返回的回調(diào)函數(shù)。l另外回調(diào)是一次性的,如果想持續(xù)地接收另外回調(diào)是一次性的,如果想持續(xù)地接收server返回的回調(diào),返回的回調(diào),client需要在每一次回調(diào)返回后重新注冊,或者用某種機制來保證一直接需要在每一次回調(diào)返回后重新注冊,或者用某種機制來保證一直接收回調(diào)(例如一個收回調(diào)(例如一個event table)。)。Page 11HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential 同步調(diào)用Page 12HUAWEI TECHNOLOG

14、IES CO., LTD.Huawei Confidential 異步調(diào)用Page 13HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential Qcril RequestPage 14HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential Qcril Event/ResponsePage 15HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential QCRIL FunctionslRILD向向QCRIL發(fā)起:發(fā)起:lonRequest(): Qcril處理請求并立即返回處

15、理請求并立即返回lonRequestComplete(): 操作完成時調(diào)用,可以在操作完成時調(diào)用,可以在onRequest()中使中使用用lonStateRequest():Qcril同步返回同步返回radio狀態(tài)狀態(tài)lonCancel(RIL_Token t):Qcril盡力去取消隊列中的盡力去取消隊列中的RIL請求,立即返請求,立即返回,完成時調(diào)用回,完成時調(diào)用onRequestComplete(),這個函數(shù)只能在不同于,這個函數(shù)只能在不同于RIL請請求求 的另一個線程中調(diào)用。的另一個線程中調(diào)用。Page 16HUAWEI TECHNOLOGIES CO., LTD.Huawei Confidential QCRIL FunctionslQCRIL向向RILD發(fā)起:發(fā)起:lonRequestComplete(): 請求完成或請求完成或cancel時調(diào)用時調(diào)用lOnUnsolicitedResponse():Qcril收到底層發(fā)來的響應(yīng)時調(diào)用收到底層發(fā)來的響應(yīng)時調(diào)用lRequestTimedCallback():Qcril一定時間后去向一定時間后去向RILD線程請求回調(diào),線程請求回調(diào),這個線程是這個線程是RILD發(fā)起請求的線程。發(fā)起請求的線程。Page 17HUAWEI TE

溫馨提示

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

評論

0/150

提交評論