android ril详细总结及流程图

android ril详细总结及流程图

ID:5398173

大小:350.00 KB

页数:31页

时间:2017-11-10

android ril详细总结及流程图_第1页
android ril详细总结及流程图_第2页
android ril详细总结及流程图_第3页
android ril详细总结及流程图_第4页
android ril详细总结及流程图_第5页
资源描述:

《android ril详细总结及流程图》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、AndroidRilElvisRIL简介RIL(RadioInterfaceLayer)RIL是Android的无线接口层.负责提供电话服务.是上层应用和下层硬件modem之间的中间层。负责数据的可靠传输、AT命令的发送以及响应(response)的解析.Android的RIL驱动模块,在hardware/ril目录下,一共分rild,libril.so以及librefrence_ril.so三个部分。RIL执行流程rild:main函数作为整个ril层的入口点,用dlopen打

2、开libreference-ril.so库,RIL_startEventLoop();创建客户端事件监听线程。RIL_register()注册事件处理接口,并创建socket监听事件。libril.so:组成部分为ril.cpp,ril_event.cpp。主要完成同Framework层通信的工作,接受ril请求并传递给librefrence_ril.so,同时把来自modem的response通过librefrence_ril.so的反馈回传给调用进程。librefrence_ril.so:rild通过dlopen方式加载

3、librefrence_ril.so,这是因为librefrence.so主要负责跟Modem硬件通信。这样做方便替换或修改以适配更多的Modem种类。它转换来自libril.so的请求为AT命令,同时监控Modem的反馈信息,并传递回libril.so。在初始化时,rild通过符号RIL_Init获取一组函数指针并以此与之建立联系。RIL_startEventLoopRIL_startEventLoop在ril.cpp中实现,它的主要目的是通过pthread_create(&s_tid_dispatch,&attr,eve

4、ntLoop,NULL)建立一个dispatch线程,入口点在eventLoop.在eventLoop中,会调ril_event.cpp中的ril_event_loop()函数,建立起消息队列机制。具体步骤进入RIL_startEventLoop后首先创建一个eventloop线程。建立起消息队列机制。ril_event_init完成后,通过ril_event_set来设置一个新ril_event,并通过ril_event_add加入队列之中,add会把队列里所有ril_event的fd,放入一个fd集合readFds中。然

5、后进入ril_event_loop()执行select(),这样ril_event_loop能通过一个多路复用I/O的机制(select)来等待这些fd,如果任何一个fd有数据写入,则进入分析流程processTimeouts(),processReadReadies(&rfds,n),firePending()。在队列创建之前,利用pipe创建了一个无名管道,并且将管道的读端放入了select的队列中,将管道的写端放入了rilEventAddWakeup()中,rilEventAddWakeup()包含ril_event_

6、add(ev);triggerEvLoop();两个函数,ril_event_add(ev)就是将事件加入到队列中,而triggerEvLoop()的作用就是将select函数唤醒,因为在这个函数中会向管道的写端写入数据,这样被select监听的管道读端就可读,那么select函数就会解阻。所以当有一个新的事件加入到队列中,那么就会用pipe的机制将新事件的文件描述符加入到select监听中。所以pipe的作用就是刷新select监听的内容。当select监听到readFds中的某个文件描述符可读或者超时时,就会解除阻塞,执

7、行processTimeouts();processReadReadies(&rfds,n);firePending();这三个函数,首先检查是不是有时间超时,如果有就将事件放入firePending();中,然后检查有哪些事件可读,也将这些事件放入firePending();中,然后执行firePending();,执行对应事件的回调函数ev->func(ev->fd,0,ev->param);RIL_register1.RIL_register注册一组函数指针RIL_RadioFunctions。2.打开接受上层命令的s

8、ocket通道。在RIL_register中,首先是打开与上层通信的socket。并且将它变成监听的套接字,等待上层的连接。s_fdListen=android_get_control_socket(SOCKET_NAME_RIL);ret=listen(s_fdListen,4);将这个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。