1.1 认识ril_event结构体
ril_event结构体定义在hardware/ril/ril_event.h头文件中。
struct ril_event {
struct ril_event *next; //下一个ril_event;
struct ril_event *prev; //上一个ril_event;
int fd; //文件描述符;
int index; //当前ril事件的索引;
bool persist; //保留当前ril事件标志;
struct timeval timeout; //ril事件超时设置;
ril_event_cb func; //ril事件回调函数的指针。
void *param;}
通过上面的结构体定义,ril_event结构体支持双向链表,每一个节点都有向上一节点和下一节点的指针,并且在此头文件中,定义了针对ril_event双向链表操作的6个函数,分别为:
Ril_event_init:ril_event双向链表初始化操作;
Ril_event_set:设置新创建的ril_event事件参数;
Ril_event_add:增加ril_event事件;
Ril_timer_add:增加ril_event计时器事件;
Ril_event_del:删除ril_event事件;
Ril_event_loop:循环处理ril_event事件。
上面ril_event双向链表的6个函数,处理逻辑都在ril_event.cpp文件中实现。
Ril_event.cpp中实现了ril_event.h头文件中定义的ril_event时间的多个处理函数,其作用是配合ril.cpp完成ril事件的封装和处理。
1.2 RIL事件生命周期控制的处理函数
Ril事件的处理中最重要的就是ril_event_init、ril_event_set、ril_event_add、ril_event_del,这四个函数包括了对ril事件的生命周期的控制。
1.2.1 ril_event_init
在启动LibRIL运行环境的时候,调用eventLoop函数时首先会调用ril_event_init方法,初始化ril_event;它会完