Android源码中,hardware/ril目录中包含着Android的telephony底层源码。这个目录下包含着三个子目录,下面是对三个子目录的具体分析。 一、目录hardware/ril/include分析: 只有一个头文件ril.h包含在此目录下。ril.h中定义了76个如下类型的宏:RIL_REQUEST_XXX ,这些宏代表着客户进程可以向Android telephony发送的命令,包括SIM卡相关的功能,打电话,发短信,网络信号查询等。 二、目录hardware/ril/libril分析: 本目录下代码负责与客户进程进行交互。在接收客户进程命令后,调用相应函数进行处理,然后将命令响应结果传回客户进程。在收到来自网络端的事件后,也传给客户进程。 文件ril_commands.h:列出了telephony可以接收的命令;每个命令对应的处理函数;以及命令响应的处理函数。 文件ril_unsol_commands.h:列出了telephony可以接收的事件类型;对每个事件的处理函数; 文件ril_event.h/cpp:处理与事件源(端口,modem等)相关的功能。ril_event_loop监视所有注册的事件源,当某事件源有数据到来时,相应事件源的回调函数被触发(firePending -> ev->func()) 在Android系统中,Telephony模块是负责处理手机通信功能的核心组件。硬件抽象层(HAL)下的`hardware/ril`目录包含了实现这些功能的底层源码。这个目录主要分为三个子目录,分别是`include`、`libril`和`reference-ril`。 1. **目录`hardware/ril/include`分析**: - 在`include`目录下,关键的头文件是`ril.h`,它定义了76个`RIL_REQUEST_XXX`宏,这些宏代表了客户端(如电话应用)能够向Android Telephony服务发送的不同命令。这些命令涵盖了SIM卡操作、通话、短信以及网络状态查询等一系列功能。 2. **目录`hardware/ril/libril`分析**: - `libril`目录中的代码处理与客户端之间的通信。当接收到客户端的命令,它调用相应的处理函数进行处理,并将结果返回给客户端。同时,当接收到网络端的事件时,也会传递给客户端。 - `ril_commands.h`列出所有可接收的命令,每个命令对应的处理函数以及响应处理函数。 - `ril_unsol_commands.h`定义了Telephony能接收的事件类型,以及每个事件的处理函数。 - `ril_event.h/cpp`处理与事件源(如端口或Modem)相关的功能。`ril_event_loop`监控所有注册的事件源,当事件源有数据到来时,触发相应的回调函数(`firePending -> ev->func()`)。 - `ril.cpp`中,`RIL_register`打开监听端口接收客户端命令,`listenCallback`在连接建立时被调用,`processCommandsCallback`处理客户端的命令请求,`dispatch`系列函数执行具体命令处理,`RIL_onUnsolicitedResponse`和`RIL_onRequestComplete`分别处理网络端的事件和命令响应,而`response`系列函数则封装这些响应并转发给客户端。 3. **目录`hardware/ril/reference-ril`分析**: - `reference-ril`目录的代码主要与Modem交互。`reference-ril.c`是核心文件,`onRequest`函数将`RIL_REQUEST_XXX`请求转化为AT命令发送给Modem,等待响应后通过`RIL_onRequestComplete`发送给客户端。`onUnsolicited`函数处理Modem收到的网络事件,如信号变化、来电和短信,然后通过`RIL_onUnsolicitedResponse`传递给客户端。 - `atchannel.c`文件提供了与Modem进行读写的实现,读写操作分别由主线程和读取线程处理,确保了数据传输的效率和同步。 Android Telephony模块通过`hardware/ril`实现了与Modem的通信,并为上层应用程序提供了一套标准的API接口,使得应用程序可以方便地执行各种电话和网络相关的操作。`libril`层作为中间件,协调客户端和Modem间的通信,而`reference-ril`则是实际与Modem硬件交互的实现。这个层次化的架构设计使得Android的Telephony功能既具有良好的可扩展性,又保证了与不同硬件平台的兼容性。
- zhuchenkun2014-03-08不错的资料,对于ril的介绍很详细。
- 粉丝: 1
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助