RIL 即 Ridio Interface Layer缩写,无线通信接口层,Android 中的实现分为RILJ和RILC两部分。RILJ属于Framework层中的Java部分(后文使用RILJ指代RIL.java ),RILC属于HAL层中的C/C++部分(也就是rild)。RIL负责将AP层用户的通话控制信息传递给BP层Modem端,同时Modem端也会将相关处理结果返回给AP层。另外Modem状态有改变时也会主动上报给RIL层,再逐步向上传递并最终通过界面显示出来。
RILJ的主要作用是将通话控制信息使用socket传递给RILC,RILC再使用AT指令传递给Modem端;RILC通过socket返回的Modem处理结果给RILJ并通知上层应用;可以说RILJ在AndroidTelephony结构中有着承上启下的作用。
MO/MT在RILJ中执行流程:
1. MO在RILJ中流程:
当用户执行MO(去电)时,通过层层判断之后,系统会将相关信息传递到RILJ中,封装好后使用AT指令的方式发送到Modem端,最终由Modem端发起通话请求。在通话接通后Modem端会返回相关AT指令信息给RIL层,RIL层再向上反馈。
整个MO(去电)流程可以简单的归结为两个步骤:
(1). ( Request ) ,即向RILC发起Request,再由RILC向Modem发送相关AT指令,等待Modem处理并反馈结果,如DIAL操作;
(2). (Response),即在对方接通之后,Modem会将状态信息反馈到RILJ中;
2. MT在RILJ中流程:
当Modem端收到来电信息时,会将相关来电信息通过AT指令发送给RILC,再通过RILC使用socket发送给RILJ,逐层向上传递,最终显示来电响铃界面。
MT(来电)与MO(去电)的第二步相同,通过(Response ),即Modem端主动上报状态改变信息;
蓝牙耳机通话相关的处理最终都会通过RILJ发送AT指令的方式到Modem端,最终由Modem端处理,然后Modem端会返回相关AT指令信息给RIL层,RIL层再向上反馈,当手机的CALL STATE 发生改变时,会通过PhoneStateChanged和HFP BluetoothInterface同步CALL STATE,然后发送相应的AT命令给蓝牙耳机。
注意:RIL相关的log在android文件夹下的radio.log文件里。