上一篇有提到rild,这里做我个人的理解来分析rild:
参考达人B的文章,链接:http://blog.csdn.net/qitaosong/article/details/5069823

1.rild.c结构:

2.各个函数分析:

2.1>RIL_register
extern void RIL_register (const RIL_RadioFunctions *callbacks);
该函数在ril.cpp里有实现,RIL_RadioFunctions 在ril.h里定义为:

  typedef struct {     int version; /* set to RIL_VERSION */     RIL_RequestFunc onRequest;     RIL_RadioStateRequest onStateRequest;     RIL_Supports supports;     RIL_Cancel onCancel;     RIL_GetVersion getVersion;     } RIL_RadioFunctions; 
其中onRequest,指令请求会在reference-ril.c里实现:
static void onRequest (int request, void *data, size_t datalen, RIL_Token t){...}
接口里用switch分支判断请求号request,调用at_send_command等发送相应的at指令
RIL_register:启动名为 rild 的监听端口,等待 java 端通过 socket 进行连接

2.2>RIL_onRequestComplete
extern void RIL_onRequestComplete(RIL_Token t, RIL_Errno e,void *response, size_t responselen)、RIL_onUnsolicitedResponse、
RIL_requestTimedCallback和RIL_startEventLoop函数同上,都在ril.cpp里有实现。

2.3>main(守护进程)

编译之后是个rild可执行文件,在/init.rc里面打开rild服务,会随系统一起运行。
1>首先和phone.apk服务建立socket连接,句柄为fd:

 fd = socket_local_client(                            QEMUD_SOCKET_NAME,                            ANDROID_SOCKET_NAMESPACE_RESERVED,                            SOCK_STREAM );

2>加载/system/lib/libreference-ril.so动
dlHandle = dlopen(rilLibPath, RTLD_NOW);

3>启动eventLoop线程,开始执行RIL消息队列

不小心网上发现 有个完整的ril分析

http://blog.csdn.net/hare_lee/article/details/6903460


Android RIL结构分析与移植

http://blog.csdn.net/fengkehuan/article/details/6203076

(ril_commands.h)

http://blog.csdn.net/ace1985/article/details/7051522

http://blog.csdn.net/hare_lee/article/details/6903962

Android GSM驱动模块(rild)详细分析

http://blog.csdn.net/qitaosong/article/details/5069823

Android RIL 调试(二)

http://www.eoeandroid.com/thread-109142-1-1.html

Android电话系统之-rild


更多相关文章

  1. Android(安卓)Native层Binder.transact()函数调用 Binder.onTran
  2. Android(安卓)Webkit中DocumentWriter模块分析
  3. Android游戏引擎《Rokon》:常见问题汇总(2010.11.15更新)
  4. Android布局文件的加载过程分析:Activity.setContentView()源码
  5. Android(安卓)NDK&JNI开发之Native崩溃日志分析方法
  6. Android磁盘管理-之vold源码分析(4)
  7. Android之回调函数
  8. Android(安卓)display架构分析(一)
  9. android sms接收流程(ril分析)

随机推荐

  1. android:init.c
  2. Android中获取IMEI号
  3. Android 线程池使用
  4. Android学习(三)Spinner实现
  5. 为什么我写的Android闹钟到时间时却不会
  6. Android实现拨号器电话
  7. Android(安卓)学习 笔记_12. Spinner的简
  8. 在Fragment中使用BaiduMap SDK
  9. SQlite Android数据库的应用 Android SQL
  10. NDK Stack