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服务。
以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下定义了此服务。
qcom的ImsRadio服务为qcril_qmi_ims_radio_service.cpp。
即android定义ImsService,Imsconfig,ImsCallSession,ImsUT aidl服务接口,vendor实现这些接口。qcom vendor是写这些接口,内部定义ImsRadio hidl服务 ,自己实现此服务,转向qcril_qmi通过 qmi命令和modem交互。