android radiooptions简介

来源:互联网 发布:拳皇摇杆 windows 驱动 编辑:程序博客网 时间:2024/06/01 12:18

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/rild   class main    socketrild stream 660 root radio   socket sap_uim_socket1 stream 660 bluetooth bluetooth   socket rild-debug stream 660 radio system   user root   group 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.c LOCAL_SHARED_LIBRARIES := \       liblog\       libcutils\ LOCAL_CFLAGS := \ LOCAL_MODULE:= radiooptionsLOCAL_MODULE_TAGS := debug include $(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

 

原创粉丝点击