第12章 Reference-RIL运行框架

时间:2020-02-18 20:56:46   收藏:0   阅读:75

Reference-RIL完成两部分处理逻辑:

Reference-RIL的运行机制

主要涉及以下几个方面:

RIL_init函数初始化Reference-RIL

RIL_init函数完成的Reference-RIL初始化工作,包括三个操作:

s_callbacks是静态变量,在首次访问reference-ril.cpp时,就会完成其初始化操作。其中包含五个指向函数的指针。
通过函数指针,可以在LibRIL中调用Reference-RIL中定义的函数。

例如:在LibRIL中处理,RILJ中发来的命令形成的ril_event时,会调用s_callbacks.onRequest方法实现与Modem的交互。

onRequest接收LibRIL的请求调用

LibRIL接收到RILJ发来的请求后,
通过s_callbacks.onRequest调用Reference-RIL中的函数,
通过与Modem的交互,处理RIL请求。主要执行两项处理:

在Reference-RIL的onRequest函数中,会根据RIL请求类型调用requestGetCurrentCalls、requestDial、requestHangup等不同函数,完成相应的处理逻辑。
这些函数都完成两件事:

onRequest函数调用的requestXXX函数共有12个,这些函数中的处理逻辑与大概都是以下的步骤:

UnSolicited消息的处理逻辑

mainLoop函数

在RIL_Init函数中启动了以mainLoop函数为入口函数的子线程。
函数中完成两个关键动作:

at_open函数

at_open函数位于atchannel.c文件中,主要处理逻辑有两点:

readerLoop函数的处理逻辑可分为两大部分:

AT命令的处理分为两个大的分支:

onUnsolicited函数

调用LibRIL提供的RIL_onUnsolicitedResponse函数发出不同类型的UnSolicited Response消息通知。

RIL_onUnsolicitedResponse函数

关键点如下:

AT命令

涉及到了如何扩展新 AT 命令,暂时忽略这部分。

Android RIL层运行框架和机制总结

关于RILJ、LibRIL和Reference-RIL的总结:

RILJ、LibRIL、Reference-RIL、Modem之间交互的通道:

总结Solicited消息的处理流程

Solicited消息分为:Solicited Request和Solicited Response,成对出现。
相关要点有:

总结Unsolicited消息的处理流程

Unsolicited消息,仅有Response,没有Request。
处理流程中的关键点有:

本章小结

原文:https://www.cnblogs.com/lijianming180/p/12327478.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!