volte 通话通过什么和modem交互?

普通语音通过ril.java,经IRadio hidl和rild交互,经rild最终和modem交互。

那么volte通话呢?

ImsPhone.dial()

                ->dialInternal()

                    ->ImsPhoneCallTracker.dial()

                           ->dialInternal()

                               ->ImsManager.makeCall()

                                  ->createCallSession

                                  ->ImsCall.start()

                                       ->ImsCallSession.start()

                                          ->IImsCallSession.start()

到这里就是和vendorRil中的IMsCallSession aidl服务沟通。

如下为所有定义的aidl接口。

比较重要的是ImsService,Imsconfig,ImsCallSession,ImsUT服务。

volte 通话通过什么和modem交互?

以qcomvendor为例,ImsCallSession服务在vendor\qcom

propietary\telephony-apps\ims目录下的ImsCallSessionImpl.java。

其start()最终调用:

    ImsSenderRxr->dail

        ->IImsRadio.dial()

ImsRadio 是hidl即hal服务。在vendor\qcom\proprietary\interfaces\radio\ims\1.0下定义了此服务。

volte 通话通过什么和modem交互?

 qcom的ImsRadio服务为qcril_qmi_ims_radio_service.cpp。

   volte 通话通过什么和modem交互?                          

即android定义ImsService,Imsconfig,ImsCallSession,ImsUT aidl服务接口,vendor实现这些接口。qcom   vendor是写这些接口,内部定义ImsRadio hidl服务 ,自己实现此服务,转向qcril_qmi通过 qmi命令和modem交互。