2010年12月20日 星期一

RIL for android

RIL: Radio Interface Layer, RIL控制數據機和提供通訊協定(Protocol)
並且和rild(ril daemon)溝通.
RIL主要是基於AT command來操作,如發命令和response解析等等

*Android ril layer on /hardware/ril
*Android ril 主要分為三塊:
./system/lib/libreference-ril.so
./system/lib/libril.so
./system/bin/rild

reference:http://miox.cc/2009/07/android-gsmrild.html
1. rild:
僅實現一main函數作為整個ril層的入口點,負責完成初始化。

2. libril.so:
與 rild結合相當緊密,是其共享庫,編譯時就已經建立了這一關係。組成部分為ril.cpp,ril_event.cpp。libril.so駐留在 rild這一守護進程中,主要完成同上層通信的工作,接受ril請求並傳遞給librefrence_ril.so, 同時把來自librefrence_ril.so的反饋回傳給調用進程。

3. librefrence_ril.so:
rild通過手 動的dlopen方式加載,結合稍微鬆散,這也是因為librefrence.so主要負責跟Modem硬件通信的緣故。這樣做更方便替換或修改以適配更 多的Modem種類。它轉換來自libril.so的請求為AT命令,同時監控Modem的反饋信息,並傳遞迴libril.so。在初始化時, rild通過符號RIL_Init獲取一組函數指針並以此與之建立聯繫。

4. radiooptions:
radiooptiongs通過獲取啟動參數, 利用socket與rild通信,可供調試時配置Modem參數。



./ril/
|-- CleanSpec.mk
|-- include
| `-- telephony
| |-- ril.h
| `-- ril_cdma_sms.h
|-- libril
| |-- Android.mk
| |-- MODULE_LICENSE_APACHE2
| |-- NOTICE
| |-- ril.cpp
| |-- ril_commands.h
| |-- ril_event.cpp
| |-- ril_event.h
| `-- ril_unsol_commands.h
|-- reference-cdma-sms
| |-- Android.mk
| |-- reference-cdma-sms.c
| `-- reference-cdma-sms.h
|-- reference-ril
| |-- Android.mk
| |-- MODULE_LICENSE_APACHE2
| |-- NOTICE
| |-- at_tok.c
| |-- at_tok.h
| |-- atchannel.c
| |-- atchannel.h
| |-- misc.c
| |-- misc.h
| `-- reference-ril.c
`-- rild
|-- Android.mk
|-- MODULE_LICENSE_APACHE2
|-- NOTICE
|-- radiooptions.c
`-- rild.c


./ril/
|-- CleanSpec.mk
|-- include
| `-- telephony
| |-- ril.h
| `-- ril_cdma_sms.h
|-- libril
| |-- Android.mk
| |-- MODULE_LICENSE_APACHE2
| |-- NOTICE
| |-- ril.cpp
| |-- ril_commands.h
| |-- ril_event.cpp
| |-- ril_event.h
| `-- ril_unsol_commands.h
|-- reference-cdma-sms
| |-- Android.mk
| |-- reference-cdma-sms.c
| `-- reference-cdma-sms.h
|-- reference-ril
| |-- Android.mk
| |-- MODULE_LICENSE_APACHE2
| |-- NOTICE
| |-- at_tok.c
| |-- at_tok.h
| |-- atchannel.c
| |-- atchannel.h
| |-- misc.c
| |-- misc.h
| `-- reference-ril.c
`-- rild
|-- Android.mk
|-- MODULE_LICENSE_APACHE2
|-- NOTICE
|-- radiooptions.c
`-- rild.c

沒有留言:

張貼留言