RIL 驅動

RIL是移動通訊核心(cellcore)和無線硬件設備(modem)之間通訊的控制接口,由此集成GSM, CDMA等不同Modem設備,適應不同無線網絡。RIL由兩部分組成:RIL proxy和RIL driver。RILproxy是一個基於CE的動態鏈接庫(DLL)  --- ril.dll,微軟已經提供,它簡化上層各個應用對驅動的訪問。 而RIL driver即流驅動需要自己實現。RILdriver向系統提供無線服務,包括語音、 數據和SMS。RILdriver同時也通知無線狀態的改變,例如服務區(coverage)、信息強度和來電等。 RIL模型類同音頻模型,ril proxy好比waveapi, ril driver好比wave流驅動。

RIL結構和接口】

 

一:串口驅動。

最下層是串口硬件和串口驅動。Modem串口連接最普遍的說法是需要用到9pin的全功能串口,我的看法,在RIL驅動中對DCD配置的修改,使用3線串口也是可以的,但是在完整的產品還是要通過3線之外的其他io來輔助,不然會犧牲掉硬件流控以及喚醒,通知等功能。

 

二:可選的mux驅動。

考慮到modem不僅有at控制通道,還有數據傳輸通道,而串口是無協議的接口,所以從軟件實現和性能考慮,最好的方式當然是2個串口分別提供。但實際中常見的都是1個串口的,支持gsm0710協議的modem能夠實現在1個物理串口基礎上虛擬多路串口。怎麼判斷是否支持多路複用? modemAT+CMUX命令來完成多路複用協議。Cellcore裏面Gsm 07.10協議已經提供源碼實現mux07_10.dll,默認的虛擬出2個串口COM7COM9.典型應用中,COM7作爲AT命令通道,COM9作爲數據通道,這樣意味着在gprs狀態下語言短信業務有可能可以同時使用,不必退出data模式。如果你的modem本身就已經有2路物理串口,那麼710mux驅動是不需要的。如果你的modem並不支持GSM 07.10協議,只有+++退出data模式了。

 

三:RIL驅動。

710mux驅動之上就是ril驅動了。MS已經抽象了大部分ril驅動的功能,通過了MDD源碼,所以寫一個ril驅動就是把自己modem相關的代碼和MDD鏈接成一個流驅動rilgsm.dllril驅動與串口驅動的最大不同在於,ril是同時支持多個應用使用的,每次opennew一個Instance對應。

  1. DWORD RIL_Open(DWORD dwData, DWORD dwAccess, DWORD dwShareMode)
  2. {
  3.    pDevice = (CRilHandle)dwData;
  4.    pHandle = new CRilInstanceHandle;
  5.    pHandle->Init(pDevice);
  6.    pDevice->AddToList(pHandle);
  7.    return (DWORD)pHandle;
  8. }
複製代碼

上層應用打開RIL之後就可以使用RIL流驅動的IOCTL來使用RIL驅動。

 

四:RIL代理層

直接使用ril驅動顯得不方便,所以MS繼續封裝了一個RILProxy的層,由它來和驅動打交道,這個RIL Proxy的實體是ril.dll,函數形式都是RIL_XXX(),函數聲明在ril.h文件。基本上所有的應用都是使用代理層來實現。

 

五:應用層

RIL Proxy的上層是TAPI/ExTAPI SIM管理程序,SMS管理程序,電話,以及是基於gprs的網絡應用程序。如圖1,這些頂層的應用也許並沒有直接和RIL驅動打交道,中間還有一些代理層,如下面列出的celltsp.dll, sms.dll等。


tapi-> tsp(celltsp.dll) -> ril代理(ril.dll) –> rilgsm.dll

 

Sim -> sim api(cellcore.lib) -> ril.dll ->rilgsm.dll

 

Sms -> sms api(sms.dll) -> sms provider(sms_provider.dll) ->smsdrv.dll -> ril.dll -> rilgsm.dll

 

再往上,還有connection manager(CE6 R3包含)連接管理器api ATCIAssisted tapi這些。 ATCI是保留給應用一條對modem直接發AT命令的管道,但只在wm中有ce並沒有包含。Assisted Tapice6的文檔僅僅包含tapiRequestMakeCall,按照理解,這個是提供給系統撥號軟件之外的第三方軟件一個請求撥號的接口,會轉發到系統的撥號軟件處理。至於connection manager0910月發佈R3版本中的新增內容,如同wm中的CM模塊,這對應用而言是很有吸引力的模塊,具有自動完成各種網絡連接,自動選擇網絡,自動重撥,永遠在線按需使用等功能,遺憾的是根據我目前實驗,因爲DMProcessConfigXMLCE無實現,CM配置存在困難,如您有答案不吝賜教。

http://www.study-bbs.com/thread-29359-1-1.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章