android数据业务激活流程

更新时间:2024-01-18 19:11:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数据业务激活流程

数据业务的激活流程是上网的前提,只有经过激活,网络分配了IP地址,DNS等参数,浏览器,Email等应用才能够访问网络

本文主要介绍数据业务的激活流程,通过阅读本文,可以理清从应用开启数据开关一直到发OTA消息到网络侧这一阶段是如何调用的,以及在各个方法的主要工作。

AP侧基于Android4.4,Modem基于高通的MSM8926,网络模式主要是基于UMTS的。因此阅读本文最好有代码,android的代码是开源的,可以从google的网址上下,高通的代码不是开源的,只有手机厂商才有部分权限。因此本文最适合手机厂商的协议开发工程师。因为要解决数据业务的问题,第一步检查的就是是否已经激活,如果不能激活,要查看在哪一步出现问题没有激活,。 对于非手机开发工程师,可以了解一下上网的流程。

要对数据业务架构,可以参考《android数据业务架构(qualcomm平台)》。

下面开始从设置界面点击数据开关开始,一步步说明激活流程的函数调用步骤:

Step1、 ConnectivityManager::setMobileDataEnabled

数据开关的接口,该接口是应用可以直接调用的,在setting里开关数据就是首先调用该接口。主要通过binder调用的是Server端的相应接口,见下一步

Step2、ConnectivityService::setMobileDataEnabled

首先检查权限,调用的进程是否声明了CHANGE_NETWORK_STATE的权限,最后发一个EVENT_SET_MOBILE_DATA的事件以便调用者不阻塞。

处理消息的是方法handleSetMobileData,调用MobileDataStateTracker的setUserDataEnable

Step3、MobileDataStateTracker::setUserDataEnable

通过AsyncChannel,发命令CMD_SET_USER_DATA_ENABLE到dcTrackerBase,在开始初始化的时候就进行关联

Step4、DcTrackerBase::onSetUserDataEnabled

收到发过来的命令,会在DcTrackerBase:handleMessage里处理,然后调用的是onSetUserDataEnable,在这里会保存数据库,通知MobileDataStateTracker apn已经available了,如果是开启数据业务,下一步是调用onTrySetupData

Step5、DcTracker::onTrySetupData

这里调用setupDataOnConnectableApns,而在setupDataOnConnectableApns里,首先变量所有的ApnContext,首先如果状态是FAIL的,则改为IDLE。然后检查ApnContext是否是Connectable,根据当然的状态来判断,如果是已经CONNECTED或者是CONNECTING就不能再请求了;接下来检查DataProfile,并添加到总的列表中,以便后面能找到, 接下来是trySetupData. trySetupData,这里处理单PDP的情况,要先把当前激活的不能处理请求的apn类型,则把低优先级的关闭,如果高优先级的处于激活状态,那么低优先级的不能请求激活;判断是否满足条件发激活请求,满足的话调setupData. setupData, 找到DcAsyncChannel,调用其bringup

step6、DcAsyncChannel::bingup

主要发命令EVENT_CONNECT给DataConnection,DataConnection是一个状态机,会发给对应状态处理函数

本文来源:https://www.bwwdw.com/article/zp5o.html

Top