本文主要是介绍KaiOS Data PDN 数据建立流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
代码逻辑
APN创建
在 DataCallManager.jsm中,会对所有apnsetting创建一个datacall,其中会包含dataprofile的成员(通过apn参数来创建),在之后的流程用于直接发送到modem建立PDN。
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;
},
2、/gecko/dom/system/gonk/radio/DataCallInterfaceService.jsm
DataCallInterfaceService的setupDataCall
// nsIDataCallInterface
setupDataCall: function(aRadioTechnology, aProfile, aIsRoaming, aAllowRoaming,aCallback) {//发送setupdatacall消息给到RILthis._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);}});},
3、/gecko/dom/system/gonk/radio/RadioInterfaceLayer.jsm
RadioInterfaceLayer.jsm - sendWorkerMessage
完成以下接口操作后,setup datacall的请求已经通过RIL消息发给了mode
这篇关于KaiOS Data PDN 数据建立流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!