LibRIL 运行机制
来源:互联网 发布:单片机最小系统是什么 编辑:程序博客网 时间:2024/06/05 02:13
RILJ 与 LibRIL 建立socket连接过程
1、Android 手机启动过程加载 Phone 应用, 同时构造 RILJ 对象,在RILJ 的构造方法中,主动发起 rild 的socket连接;
2、LibRIL 在ril_event_loop 函数中的 select 响应 s_listen_event 的RIL 请求;
3、通过ril_event->func 函数发起Callback 回调操作,而 s_listen_event->func 为 listenCallback 函数,该函数响应 RILJ 发起 rild 端口的 socket 请求操作;
4、listenCallback 函数主要逻辑:
接受socket连接请求,建立与RILJ 的socket 连接;
增加s_command_event 监听;
Solicited 消息的交互流程和处理机制
1、RILJ 与 LibRIL建立socket连接后,LibRIL 的watch_table 数组增加了一个事件监听: s_commands_event ;
2、RILJ 基于 rild 端口的socket 向 LibRIL 发起Solicited Request 消息请求时,s_commands_event通过 func 发起 RILJ 事件的Callback函数调用;
3、即调用 processCommandsCallback 函数处理RILJ 发起的 request请求;
在ril_commands.h头文件中定义了107个RIL请求的处理函数和回调函数;
4、RILJ在发起RIL请求后,在这里通过RIL请求类型获取请求处理和返回处理的函数;
比如发起拨号请求,LibRIL匹配CommandInfo的请求调用函数为dispatchDial,返回调用函数为responseVoid;当LibRIL发起pRI->pCI->dispatchFunction函数调用时,实际调用的是dispatchDial函数;
5、LibRIL请求调用函数,最终是通过Reference-RIL提供的s_callbacks发起onRequest函数的调用;
6、Reference-RIL接收到LibRIL的请求,根据请求类型转换成对应的AT命令,向modem发起AT指令;接着便会调用LibRIL提供的RIL_onRequestComplete函数,完成RIL请求处理完成后的回调;
7、RIL_onRequestComplete函数逻辑:
responseFunction函数调用,完成不用返回的Parcel数据设置;
sendResponse函数调用,通过socket连接发生Parcel数据,即RILJ接收此数据;
同样发起拨号请求后,pRI->pCI->responseFunction函数调用,实际是responseCallList函数调用;
- LibRIL 运行机制
- RILC系统结构及LibRIL运行机制
- [Android6.0] RILC 系统结构及 LibRIL 运行机制
- 运行机制
- 计算机病毒运行机制
- java运行机制
- Cookie运行机制
- Subscriptions 运行机制
- CLR运行机制
- .NET运行机制
- Subscriptions 运行机制
- session运行机制
- javascript 运行机制
- windows 运行机制
- JSP运行机制
- struts2运行机制
- jsp运行机制
- java运行机制
- Java-面向对象(基础篇)--static关键字
- Python tornado
- 快学Big Data
- Reducing the Dimensionality of Data with Neural Networks:神经网络用于降维
- Java注解总结
- LibRIL 运行机制
- enum 枚举的作用
- android 动态加载框架 快速使用
- Hadoop的容错性
- python 操作MySQL数据库
- C++学习笔记4--表达式
- CI框架教程1——优化验证码机制(或验证码辅助函数)
- CRC的校验原理及硬件、软件算法实现
- OpenCV 基本函数和类型总结