ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2012年1月3日 星期二

android code trace : rild

mainLoop(){ for(;;){ open /dev/ttyXXX at_open( ); // 設定好 at command 的 read back thread. RIL_requestTimedCallback(initializeCallback, NULL, &TIMEVAL_DELAYINIT); // delay 一段時間, call initializeCallback waitForClose(); // 會停在這,一直到 device 被關掉,發出 signal } } 這個 mainLoop( ) 就是 rild 的主體。

initializeCallback() 負責送出 modem 的初始化 at command (有一堆)。

所以 at_open( ) 會先執行,然後才是 modem initialize commands。

at_open 實際呼叫時: at_open(fd,onUnsolicited)

這裡的 onUnsolicited 是 function : 負責處理 還沒送出 initialize command 前, modem 自己送回來得 command。
-- 所以一定是 unsolicited



Service 的 socket interface 部份。

在RIL_register( ) 開始。
這是在 mainLoop() 前就執行的。



ril 好像有兩種啟動方法:
  1. 直接由 reference-ril 的 main 啟動
  2. 由 rild 呼叫 RIL_Init( ) 啟動
在 init.rc 中好像是用 rild 呼叫 RIL_Init 。

這樣的話..
RIL_Init ( ) 只做:
  1. start uevent monitor -- probe usb device..
  2. 取得 device, data port,開啟 mainLoop( ) thread.
  3. 執行 RIL_register

沒有留言:

標籤

網誌存檔