安卓RILC流程简单分析
2018-06-03 本文已影响3人
fall4u
本文以以下三个方向梳理安卓RILC的工作流程,不贴代码,只通过流程图的方式帮助同学们建立一个整体认识。
整体框架
![](https://img.haomeiwen.com/i9502134/91bf52c2277488ca.jpg)
初始化
![](https://img.haomeiwen.com/i9502134/36a8901a63abbd49.jpg)
初始化完成主要完成两个工作,第一是创建一个读线程处理来自硬件的数据,这个数据一类是硬件主动上报的数据,这里理解为事件,另外一类是硬件对上层命令的响应。
初始化完成的另外一个工作是创建RIL EVENT多路IO复用线程,用来读取来自上层JAVA的命令。
数据发送
![](https://img.haomeiwen.com/i9502134/103a7fdfe70ba84b.jpg)
上层发送数据的时候,如需要底层响应,则会休眠等待底层设备响应。流程图中红色步骤所示
从底层获取event数据
![](https://img.haomeiwen.com/i9502134/3ea69c1a077f9bc5.jpg)
命令响应返回
![](https://img.haomeiwen.com/i9502134/52a62be511080cf1.jpg)
读线程在获取到硬件数据之后,分析数据帧,发现是命令响应帧,则会唤醒在RIL EVENT中发送命令等待的线程(虚线所示)