赞
踩
在 DataCallManager.jsm中,会对所有apnsetting创建一个datacall,其中会包含dataprofile的成员(通过apn参数来创建),在之后的流程用于直接发送到modem建立PDN。
1、DataCallManager.jsm -dcInterface.setupDataCall
- //RILNetworkInterface.connect()->DataCall.connect->DataCall.setup()
- setup(){
- dcInterface.setupDataCall(
- radioTechnology,
- this.dataProfile,
- //...
- //此处是把建立的datacall(this)中dataprofile属性值发送到RIL,在log中可以通过:“> RIL_REQUEST_SETUP_DATA_CALL”来查看需要建立datacall的dataprofile值。
- dataInfo.roaming,
- this.dataCallHandler.dataCallSettings.roamingEnabled,
- {
- QueryInterface: ChromeUtils.generateQI([Ci.nsIDataCallCallback]),
- notifySetupDataCallSuccess: aDataCall => {
- //回调函数,返回datacall建立结果
- this.onSetupDataCallResult(aDataCall);
- },
- notifyError: aErrorMsg => {
- this.onSetupDataCallResult({ errorMsg: aErrorMsg });
- },
- }
- );
- this.state = NETWORK_STATE_CONNECTING;
- },
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
2、/gecko/dom/system/gonk/radio/DataCallInterfaceService.jsm
DataCallInterfaceService的setupDataCall
- // nsIDataCallInterface
- setupDataCall: function(aRadioTechnology, aProfile, aIsRoaming, aAllowRoaming,
- aCallback) {
- //发送setupdatacall消息给到RIL
- this._radioInterface.sendWorkerMessage("setupDataCall", {
- radioTechnology: aRadioTechnology,
- profile: aProfile,
- isRoaming: aIsRoaming,
- allowRoaming: aAllowRoaming
- }, (aResponse) => {
- if (aResponse.errorMsg) {
- aCallback.notifyError(aResponse.errorMsg);
- } else {
- //如果没有error,返回datacall建立成功
- let dataCall = new DataCall(aResponse.dcResponse);
- aCallback.notifySetupDataCallSuccess(dataCall);
- }
- });
- },
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
3、/gecko/dom/system/gonk/radio/RadioInterfaceLayer.jsm
RadioInterfaceLayer.jsm - sendWorkerMessage
完成以下接口操作后,setup datacall的请求已经通过RIL消息发给了mode
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。