RIL:Radio Interface Layer

相关文件

RIL相关的请求命令与数据结构都定义在/hardware/ril/include/telephony/ril.h

介绍

RIL(Radio Interface Layer),就是将应用程序的通信请求发送给CP的中间层,其包括两个部分,一个是Java层RILJ(RIL Framework),一个是C++层(不妨看作是CP对应的HAL层)RILD

RILJ属于系统Phone进程的一部分,随Phone进程启动而加载;而RILD守护进程是通过Android的Init进程进行加载的

  • RIL Java(RILJ):负责将上层APP的通信请求发送给HAL层;
  • RIL C++(RILD): 系统守护进程,负责将RILJ的请求命令发送给CP(Communication Processor)

RIL结构

  • 最上层的是Application,如通话,短信以及SIM卡管理,它们主要负责将用户的指令发送到RIL Framework(RILJ);
  • RILJ为上层(Application)提供了通用的API,如TelephonyManager(包括通话,网络状态; SubscriptionManager(卡状态)以及SmsManager等;同时RILJ还负责维持与RILD的通信,并将上层的请求发送给RILD;
  • RILD是系统的守护进程。RILD的功能主要功能是将RILJ发送过来的请求继续传递给CP,同时会及时将CP的状态变化发送给RILJ;
  • Linux驱动层:kernel驱动层接受到数据后,将指令传给CP,最后由CP发送给网络端,等网络返回结果后,CP将传回给RILD;
RIL Architecture
https://www.cnblogs.com/ricks/p/9497403.html

也就是RILJ和Modem 之间的通信,RILJ与RILD(RILD与CP的通信)都是通过一个个消息进行数据传递。

消息主要分两种(solicited,unsolicited),定义在/hardware/ril/include/telephony/ril.h文件中。:

  • 一种是RILJ端发请求并需要modem反馈的信息(solicited),常见的有RIL_REQUEST_GET_SIM_STATUS(获取SIM卡状态), RIL_REQUEST_DIAL(拨打电话),RIL_REQUEST_SEND_SMS(发送短信), RIL_REQUEST_GET_CURRENT_CALLS(获取当前通话状态),RIL_REQUEST_VOICE_REGISTRATION_STATE(获取网络状态)
  • 另一种则是从CP主动上报给RIL的消息,如网络状态发生变化时,CP会上报RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED,有新短信时,会上报RIL_UNSOL_RESPONSE_NEW_SMS,有来电时会上报RIL_UNSOL_CALL_RING

Vendor RIL

Vendor也就是供应商,供应厂商定制化原生ril,形成vendor ril。

上一页 -