zoukankan      html  css  js  c++  java
  • 移动4G插卡注网

    本文根据插入移动4G单卡到注册4G网络过程的mtklog分析。

    插卡动作:

     

    从以上信息无法区分单卡还是双卡,通过ATR参数判断:

     

    注网流程,此过程未开启4G数据连接:

    [MS->NW] ESM_MSG_PDN_CONNECTIVITY_REQUEST (PTI:5, EBI:0)

     

    [MS->NW] EMM_Attach_Request(EPS attach type="EMM_ATTACH_TYPE_COMBINED_ATTACH")

     

    [NW->MS] ESM_MSG_ESM_INFORMATION_REQUEST (PTI:5, EBI:0)

     

    [MS->NW] ESM_MSG_ESM_INFORMATION_RESPONSE (PTI:5, EBI:0)

     

    [NW->MS] EMM_Attach_Accept(EPS attach result="EMM_ATTACH_RESULT_COMBINED_ATTACHED")

     

    [NW->MS] ESM_MSG_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_REQUEST (PTI:5, EBI:5)

     

    [MS->NW] ESM_MSG_ACTIVATE_DEFAULT_EPS_BEARER_CONTEXT_ACCEPT (PTI:0, EBI:5)

     

    [MS->NW] EMM_Attach_Complete

     

    上报信号强度事件(Ril.cpp):

     

     

    RILJ 的处理函数(Ril.java):

     

     

    mSignalStrengthRegistrant 对象的创建(BaseCommands.java):

     

     

    setOnSignalStrengthUp() 函数在ServiceStateTracker 类的构造函数中调用:

     

    通过传入this,EVENT_SIGNAL_STRENGTH_UPDATE消息由该类或其子类处理,该处理函数在GSMServiceStateTracker 类中:

     

    mSignalStrengthChangedRegistrants 通知者对象的初始化:

     

    向该通知者添加监听对象方法:

     

    分析该方法暂未被调用,所以没有需通知的监听对象。

    继续分析onSignalStrengthResult() 函数处理上报的信号:

     

    setGsm() 设置phone标识;isGsm = true,代表Gsm、Lte;否则代表Cdma

    函数validateInput() 对信号区间做一个判断:

     

    notifySignalStrength() 更新信号强度:

     

    判断当前信号强度与上次保留的信号强度值,获取信号强度等级:

    继续分析PhoneBase 类的 notifySignalStrength() 函数:

     

    mNotifer 是 PhoneNotifer 接口的对象,notifySignalStrength() 方法的实现在 DefaultPhoneNotifier 类中:

     

    方法如下:

     

    mRegistry 对象的创建:

     

    类TelephonyRegistry 继承自 ITelephonyRegistry.Stub,作为Service运行在system_server进程中,它会通知注册者。

    上面的DefaultPhoneNotifier运行在com.Android.phone进程中,当信号强度值变化时,通过Service进行通知(service被感兴趣的注册者调用了listen,添加了回调函数。

     

    通知上层信号强度变化。

    可参考:http://blog.csdn.net/feitian_666/article/details/52879929

  • 相关阅读:
    C#如何给Listbox添加右键菜单
    [GraphQL] Query Lists of Multiple Types using a Union in GraphQL
    [GraphQL] Query GraphQL Interface Types in GraphQL Playground
    [GraphQL] Reuse GraphQL Selection Sets with Fragments
    [Dart] final vs const
    [GraphQL] Set variable and default value & alias
    [置顶] 【Git入门之十一】标签管理
    poj 3182 The Grove bfs
    hdu1166敌兵布阵
    <WinForm_1>初识WinForm编程
  • 原文地址:https://www.cnblogs.com/kaifyou/p/6282435.html
Copyright © 2011-2022 走看看