android 8.0 ril.java_Android 8.0 RIL源码分析(一)

1.去电流程三中跟踪到最后的时候可以看到其调用了RIL的dail方法

这里继续以此分析其从RIL到Modem的流程

@Override

public void dial(String address, int clirMode, UUSInfo uusInfo, Message result) {

//获取radio对象

IRadio radioProxy = getRadioProxy(result);

if (radioProxy != null) {

//构建RIL请求消息

RILRequest rr = obtainRequest(RIL_REQUEST_DIAL, result,

mRILDefaultWorkSource);

Dial dialInfo = new Dial();

dialInfo.address = convertNullToEmptyString(address);

dialInfo.clir = clirMode;

if (uusInfo != null) {

UusInfo info = new UusInfo();

info.uusType = uusInfo.getType();

info.uusDcs = uusInfo.getDcs();

info.uusData = new String(uusInfo.getUserData());

dialInfo.uusInfo.add(info);

}

if (RILJ_LOGD) {

// Do not log function arg for privacy

riljLog(rr.serialString() + "> " + requestToString(rr.mRequest));

}

try {

//调用dial方法

radioProxy.dial(rr.mSerial, dialInfo);

} catch (RemoteException | RuntimeException e) {

handleRadioProxyExceptionForRR(rr, "dial", e);

}

}

}

1.1使用单例模式通过获取Radio对象,可以看到其获取的是HIDL的对象,并且设置的回复方法mRadioResponse,可以参见RIL架构分析。

protected IRadio getRadioProxy(Message result) {

...

try {

//获取HIDL的服务并设置setResponseFunctions

mRadioProxy = IRadio.getService(HIDL_SERVICE_NAME[mPhoneId == null ? 0 : mPhoneId]);

if (mRadioProxy != null) {

mRadioProxy.linkToDeath(mRadioProxyDeathRecipient,

mRadioProxyCookie.incrementAndGet());

//设置mRadioResponse和mRadioIndication

mRadioProxy.setResponseFunctions(mRadioResponse, mRadioIndication);

} else {

riljLoge("getRadioProxy: mRadioProxy == null");

}

} catch (RemoteException | RuntimeException e) {

mRadioProxy = null;

riljLoge("RadioProxy getService/setResponseFunctions: " + e);

}

...

}

可以看到其通过HIDL方式获取到Radio对象后,进一步调用此对象的dial方法

继续查找远端的Radio类

发现RadioImpl继承了IRadio

struct RadioImpl : public V1_1::IRadio

2.在 ril_service 中实现了dial方法,继续跟进此方法

Return RadioImpl

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值