subscription open fllow

1、开始一个新的事务时mmoc_info_ptr->trans_state=MMOC_TRANS_STATE_NULL

surbscription change
的话最先的subsc_chgd.chg_type=MMOC_SUBSC_CHG_SUBSC_AVAIL与其相对应的是MMOC_SUBSC_CHG_NAM_SEL

此时的一些手机参数状态如下:

mmoc_info_ptr->is_sd_initialized=0,所以在此要初始化并将其变为1

ph_stat_ptr->is_cdma_subs_avail=1

ph_stat_ptr->oprt_mode=PROT_OPRT_MODE_NULL

 

mmoc_info_ptr->curr_nam = cmd_ptr->param.subsc_chgd.nam;
  mmoc_info_ptr->prot_subsc_chg = cmd_ptr->param.subsc_chgd.prot_subsc_chg;//change_type
  mmoc_info_ptr->hybr_gw_subs_chg = cmd_ptr->param.subsc_chgd.hybr_gw_subs_chg;

 

然后根据mmoc_info_ptr->prot_subsc_chg 里保存的change_type判定哪个subs_avail

    mmoc_info_ptr->is_cdma_subs_avail =
                 cmd_ptr->param.subsc_chgd.cdma.is_subs_avail;//is_cdma_subs_avail
是在这个地方设置的

然后给mc发PROT_PH_STAT_CHG_SUBSC命令,mmoc进入MMOC_TRANS_STATE_WAIT_PH_STAT_CNF状态

 

这个命令在mc里的处理如下:

mc_init_auth

如果ph_stat_ptr->prot_subsc_chg=PROT_SUBSC_CHG_CDMA的话要设置cdma.is_cdma_subs_avail = ph_stat_ptr->is_cdma_subs_avail=1

绕后mcc_powerup_load        //Reload the subscription information.

 

这个命令处理完返回到mmoc后的处理如下:Initialize sd with the new subscription information.

调用sd_nam_sel3(...)其里面的一些参数设置如下:

mmoc_info_ptr->trans_info.subsc_chgd.nam=0   //nam没有发生变化

mmoc_info_ptr->trans_info.subsc_chgd.orig_mode = SD_SS_ORIG_MODE_NONE

mmoc_info_ptr->trans_info.subsc_chgd.mode_pref = SD_SS_MODE_PREF_DIGITAL

mmoc_info_ptr->trans_info.subsc_chgd.prl_pref = SD_SS_PRL_PREF_ANY

mmoc_info_ptr->trans_info.subsc_chgd.roam_pref = SD_SS_ROAM_PREF_ANY

mmoc_info_ptr->trans_info.subsc_chgd.hybr_pref = SD_SS_HYBR_PREF_CDMA_HDR

mmoc_info_ptr->trans_info.subsc_chgd.domain_pref = SD_SS_SRV_DOMAIN_PREF_CS_ONLY

mmoc_info_ptr->trans_info.subsc_chgd.acq_order_pref = SD_SS_ACQ_ORDER_PREF_AUTO

mmoc_info_ptr->trans_info.subsc_chgd.is_gw_subsc_avail

mmoc_info_ptr->trans_info.subsc_chgd.is_cdma_subsc_avail = 1

mmoc_info_ptr->trans_info.subsc_chgd.is_wlan_subsc_avail = 0

mmoc_info_ptr->trans_info.subsc_chgd.tech_pref = 7

好复杂的处理啊

 

MMOC_TRANS_DUAL_STANDBY_CHGD命令的处理

只有在手机操作模式处在PROT_OPRT_MODE_NULL或PROT_OPRT_MODE_ONLINE下才处理这个命令

 

/* Copy new preference to ds_pref,在此处将有几张卡的信息保存在mmoc里面,
如果是一张卡,则要确定是哪张卡
  */

  mmoc_info_ptr->ds_pref = cmd_ptr->param.dual_standby_chgd.ds_pref;
  mmoc_info_ptr->single_stby_ss = cmd_ptr->param.dual_standby_chgd.single_stby_ss;

 

 /* If Dual Standby, then both subscription should be available. If Single Standby,
  ** then selected subscription should be available. If FALSE, then wait for corresponding
  ** Subscription change event to handle Dual Standby preference change
  */
  if(!((mmoc_info_ptr->ds_pref == SYS_MODEM_DS_PREF_DUAL_STANDBY &&
      (mmoc_info_ptr->is_gw_subs_avail == TRUE ||
       mmoc_info_ptr->is_cdma_subs_avail == TRUE) &&
      mmoc_info_ptr->is_gw_hybr_subs_avail == TRUE) ||
     (mmoc_info_ptr->ds_pref == SYS_MODEM_DS_PREF_SINGLE_STANDBY &&
      ((mmoc_info_ptr->single_stby_ss == SD_SS_MAIN &&
       (mmoc_info_ptr->is_gw_subs_avail == TRUE  ||
       mmoc_info_ptr->is_cdma_subs_avail == TRUE)) ||
      (mmoc_info_ptr->single_stby_ss == SD_SS_HYBR_2 &&
       mmoc_info_ptr->is_gw_hybr_subs_avail == TRUE)))))
  {
    return mmoc_clear_transaction( mmoc_info_ptr );清楚这个事务
  }

mmoc_dual_standby_pref_chgd判断卡的情况是否发生了改变,如果没改变则清楚这个事务的处理

如果改变了,mmoc进入MMOC_TRANS_STATE_PROT_DEACT_ENTER状态此时协议都还没打开,所以直接进入MMOC_TRANS_STATE_DS_STAT_CHGD_ENTER

如果卡的信息变化了hdrmc_standby_pref_chgd_cmd      /* Inform DS stat chgd cmd to HDR */

将有几张卡的信息半寸在db里面,DB_DSDS_STATUS卡的数量对应,1表示有两张卡

mmoc进入MMOC_TRANS_STATE_WAIT_DS_STAT_CHGD_CNF,接到这个认证后变为MMOC_TRANS_STATE_DS_STAT_CHGD_ENTER,此时手机还处在开机状态,清除事务的处理

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yiqingyang2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值