android radiooptions简介
android radiooptions簡介
?
RILD負責modem和RILJ端的通信,信息分兩種:unsolicited和solicited,前者是由modem主動上報的,諸如時區更新、通話狀態、網絡狀態等消息,后者是RILJ端發請求并需要modem反饋的信息
?
Android系統提供了radiooptiongs,通過獲取啟動參數,利用socket與rild通信,可供調試時配置Modem參數
?
使用radiooptions來切換Radio狀態, 它把傳遞過來的參數寫入UNIX本地socket("/dev/socket/rild-debug"),不做其他操作。rild守護進程會監聽該socket,當有數據到達時,會調用相應的回調函數,解析發送過來的命令,并轉換為相應的AT命令寫入AT接口設備。具體過程是:在radiooptions這一側,先判斷參數個數,然后逐個將它們寫入socket。在守護進程側,守護進程注冊回調函數RIL_RadioFunctions時,會監聽該套接字,當套接字上有連接請求時,就調用ril.cpp文件中的回調函數debugCallback,接受連接請求,獲取得到的數據,然后調用issueLocalRequest函數發送請求,即向AT接口設備發送AT命令。
?
Radiooptiongs的源代碼目錄hardware\ril\rild,在系統啟動的時候被執行,hardware\ril\rild\rild.rc
service ril-daemon /system/bin/rildclass mainsocketrild stream 660 root radiosocket sap_uim_socket1 stream 660 bluetooth bluetoothsocket rild-debug stream 660 radio systemuser rootgroup radio cache inet misc audio log readproc wakelock qcom_diag由hardware\ril\rild\Android.mk下面相關內容可以看出radiooptions編譯成為一個可執行文件
# For radiooptions binary # ======================= include $(CLEAR_VARS)LOCAL_SRC_FILES:= \radiooptions.cLOCAL_SHARED_LIBRARIES := \liblog\libcutils\LOCAL_CFLAGS := \LOCAL_MODULE:= radiooptions LOCAL_MODULE_TAGS := debuginclude $(BUILD_EXECUTABLE)編譯生成radiooptions在out\target\product\msm8937_64\system\bin下,調試的時候只需要編譯mmm hardware/ril/rild,然后把生成的radiooptionspush到設備的/system/bin目錄下即可。
?
在設備下對應下圖的rild-debug這個socket
?
然后可以通過執行radiooptions這個應用程序,此程序通過rild-debug這個socket來和modem通訊,rild-debug目前支持的功能, \hardware\ril\rild\radiooptions.c下的print_usage()可以看出來
?
比如,掛斷電話的測試ratiooptions 10 1 0,其中10是END_CALL,1是SIM2
?
通過adb logcat -b radio >E:\test\radio.log可以抓取到radio的信息。
?
參考鏈接:
Android7.0 Rild工作流程
http://blog.csdn.net/u014386544/article/details/52997651
android-ril 分析-radiooption
http://blog.csdn.net/cainiao413/article/details/6309810
深入理解Android Telephony 之RILD機制分析
http://blog.csdn.net/mathcompfrac/article/details/53967907
?
總結
以上是生活随笔為你收集整理的android radiooptions简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高通平台java层操作NV数据的方法
- 下一篇: 9soc sensor与bayer se