1、RIL 全称:
Radio Interface Layer,Android的无线接口层,负责提供电话服务.是上层应用和下层硬件modem之间的中间层。负责数据的可靠传输、AT命令的发送以及响应的解析。
2、RIL的三部分:
3、Rild:
Main函数作为整个ril层的入口点,用dlopen打开libreference-ril.so库,RIL_startEventLoop()创建客户端事件监听线程。RIL_register()注册事件处理接口,并创建socket监听事件。
4、Libril.so:
组成部分为:ril.cpp,ril_event.cpp。主要完成同Framework层通信的工作,接受ril请求并传递给libreference_ril.so,同时把来自modem的response通过libreference_ril.so的反馈回传给调用进程。
5、RIL_startEventLoop:
6、PIPE:
在创建队列之前,先创建一个PIPE无名管道,读端放入select队列中,写端放入rilEventAddWakeup()中。rilEventAddWakeup()包含ril_event_add(ev)和triggerEvLoop()两个函数,ril_event_add(ev)将事件加入队列中,triggerEvLoop()唤醒select()函数,pipe的作用就是刷新select监听的内容。
7、三个队列:
8、RIL事件处理流程图:

9、RIL_register:
10、RIL_init 处理流程图:

11、总体流程图:

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220124.html原文链接:https://javaforall.net
