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 好像有兩種啟動方法:
- 直接由 reference-ril 的 main 啟動
- 由 rild 呼叫 RIL_Init( ) 啟動
這樣的話..
RIL_Init ( ) 只做:
- start uevent monitor -- probe usb device..
- 取得 device, data port,開啟 mainLoop( ) thread.
- 執行 RIL_register
沒有留言:
張貼留言