代码流程之SERVICE_REQ

目录

一、代码流程图

二、代码详细流程

1.cmregprx_cmd_gwl_activate_protocol()

2.cmregprx_cmd_gwl_activate_protocol2()

3.cmregprx_cmd_proc()

4.cmregprx_activate_prot_hdlr()

5.cmregprx_inact_act_activate_prot_hdlr()

6.cmregprx_process_sd_action()

7.cmregprx_send_service_req_permission()

8.cmregprx_validate_new_srv_req()

9.cmregprx_send_reg_service_req()   

10.reg_state_main()

11.reg_state_process_cm_service_req()

12.reg_mode_start_plmn_selection()

13.start_plmn_selection()

14.reg_mode_determine_first_plmn()

15.reg_send_mmr_reg_req()

16.reg_send_last_mmr_reg_req()

17.mm_emm_normal_msg_handler()

18.mmcoord_route_mm_emm_messages()

19.emm_process_reg_command()

20.emm_process_reg_req()

21.emm_send_rrc_service_req()    

三、主要日志打印


一、代码流程图

             CM                                       REG                                    MM

1.cmregprx_cmd_gwl_activate_protocol()   |------> 10.reg_state_main()           |---> 17.mm_emm_normal_msg_handler()
             ||                          |             ||                       |            ||
			 \/                          |             \/                       |            \/
2.cmregprx_cmd_gwl_activate_protocol2()  | 11.reg_state_process_cm_service_req()| 18.mmcoord_route_mm_emm_messages()
    -------------------                  |             ||                       |            ||        
	 PROT_CMD_ACTIVATE                   |             \/                       |            \/
	         ||                          | 12.reg_mode_start_plmn_selection()   | 19.emm_process_reg_command()
			 \/                          |             ||                       |            ||
3.cmregprx_cmd_proc()                    |             \/                       |            \/
             ||                          | 13.start_plmn_selection()            | 20.emm_process_reg_req()
			 \/                          |             ||                       |            ||
4.cmregprx_activate_prot_hdlr()          |             \/                       |            \/
             ||                          | 14.reg_mode_determine_first_plmn()	| 21.emm_send_rrc_service_req()	 
			 \/                          | 15.reg_send_mmr_reg_req()            |         ---------------------->
5.cmregprx_inact_act_activate_prot_hdlr()|      ----------------                |          LTE_RRC_SERVICE_REQ
             ||                          |         MMR_REG_REQ                  |
			 \/                          |             ||                       |
6.cmregprx_process_sd_action()           |             \/                       |
             ||                          | 16.reg_send_last_mmr_reg_req()       |
			 \/                          |      ------------------------------->|
7.cmregprx_send_service_req_permission() |         MMR_REG_REQ
             ||                          |
			 \/                          |
8.cmregprx_validate_new_srv_req()        |
9.cmregprx_send_reg_service_req()        |
    ------------------------------------>|
     CM_SERVICE_REQ

二、代码详细流程

1.cmregprx_cmd_gwl_activate_protocol()

mmoc_activate_prot_online_ss_hdr()调用该函数。
该函数调用cmregprx_cmd_gwl_activate_protocol2()。

2.cmregprx_cmd_gwl_activate_protocol2()

  /* Fill in all the fields.
  */
  cmd_ptr->name               = PROT_CMD_ACTIVATE;
  cmd_ptr->mm_id              = mm_id;
  cmd_ptr->param.act_prot.reason = act_reason;
  cmd_ptr->param.act_prot.delay_srv_req = delay_srv_req;
  

  /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/

  /* Post the command.
  */
  cmregprx_send_cmd( cmd_ptr,
                     cmregprx_info_ptr
                   );

3.cmregprx_cmd_proc()

    switch ( cmd_ptr->name )
    {
      case PROT_CMD_ACTIVATE:
        cmregprx_activate_prot_hdlr( cmd_ptr );
        break;


4.cmregprx_activate_prot_hdlr()

  /* Invoke the appropriate state specific event handlers.
  */
  switch (cmregprx_stack_info_ptr->state)
  {

    case CMREGPRX_STATE_INACTIVE:
    case CMREGPRX_STATE_ACTIVE:
    case CMREGPRX_STATE_DORMANT:
      cmregprx_inact_act_activate_prot_hdlr( cmd_ptr,
                                             cmregprx_stack_info_ptr
                                           );
      break;

5.cmregprx_inact_act_activate_prot_hdlr()

  /* Send the REG start request based on the SD action.
  */

  cmregprx_process_sd_action( sd_ss_act_get_per_mm_id( NULL, cmregprx_stack_info_ptr->mm_id),
                              cmregprx_stack_info_ptr, NULL
                            );

  /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/

  /* Set the RegProxy's state to ACTIVE.
  */
  cmregprx_update_state( CMREGPRX_STATE_ACTIVE,
                         cmregprx_stack_info_ptr
                       );

6.cmregprx_process_sd_action()

……
  CMREGPRX_MSG_MED_6_EXT("process_sd_action %d on sub %d stk %d is_gwl_mode_supp %d is_1x_hdr_mode_supp %d sd_mode_pref 0x%x",
                         sd_act,
                         as_id,
                         cmregprx_stack_info_ptr->mm_id.stk_id,
                         is_gwl_mode_supp, is_1x_hdr_mode_supp, 
                         ph_sub_ptr->pref_info.mode_band.mode, as_id);
……
    case SD_SS_ACT_ACQ_GWL:
      /* SD20 action is ACQ_GWL, Send the REG service request.
      */
      cmregprx_send_service_req_permission( cmregprx_stack_info_ptr );
      break;

7.cmregprx_send_service_req_permission()

  /* Validate new service request, and ask CMSOA for permission if necessary
  ** before sending it
  */
  if(cmregprx_validate_new_srv_req(cmregprx_stack_info_ptr))
  {
……
    {
      cmregprx_send_reg_service_req(cmregprx_stack_info_ptr);
    }
  }

8.cmregprx_validate_new_srv_req()

  /* Fill service_req parms.
  */
  cmregprx_fill_srv_req_parms(sd_act, srv_req_local, cmregprx_stack_info_ptr);

  /* Check if Service_request needs to be sent.
  */
  srv_req_diff = cmregprx_compare_srv_req( sd_act, cmregprx_stack_info_ptr, srv_req_local );

9.cmregprx_send_reg_service_req()   

  /* Get reg cmd. buffer and populate params.
  */
  reg_ptr = cm_reg_get_buf_else_err_fatal( CM_SERVICE_REQ );
……
  CMREGPRX_MSG_HIGH_6("CMREG->NAS: sub %d stk %d, addl 0x%x, volte_csfb %d, sms_only %d, ph mode_pref 0x%x, Send SERVICE_REQ",
                      cmregprx_stack_info_ptr->mm_id.asubs_id,
                      cmregprx_stack_info_ptr->mm_id.stk_id,
                      reg_ptr->cmd.cm_service_req.additional_info,
                      reg_ptr->cmd.cm_service_req.voice_domain_param.volte_csfb_enabled,                       
                      reg_ptr->cmd.cm_service_req.sms_only,
                      cmph_get_ss_mode_pref(cmregprx_stack_info_ptr->mm_id.asubs_id));

……
  /* Save the CM_SERVICE_REQ in local buffer &
  ** Post the command to REG.
  */
  cmregprx_stack_info_ptr->last_srv_req = reg_ptr->cmd.cm_service_req;

  cm_reg_send_cmd( reg_ptr );

10.reg_state_main()

        case CM_SERVICE_REQ:
          if ( cm_service_req_is_valid(&(reg_cmd_p->cmd.cm_service_req)) )
          {
#if defined FEATURE_DUAL_SIM
            reg_sim_mode_pref = reg_cmd_p->cmd.cm_service_req.mode_pref;
#endif
            reg_state_last_cm_transaction_id = reg_state_cm_transaction_id;
            reg_state_cm_transaction_id = reg_cmd_p->cmd.cm_service_req.transaction_id;
            reg_state_next_p = reg_state_curr_p->process_cm_service_req
            (
              &(reg_cmd_p->cmd.cm_service_req)
            );
          }

从如下定义、声明可以看出process_cm_service_req就是reg_state_process_cm_service_req
  reg_state_cm_service_req_f_type*                process_cm_service_req;
extern reg_state_cm_service_req_f_type                reg_state_process_cm_service_req;

11.reg_state_process_cm_service_req()

  REG_LOG_LF_HIGH(REG_TAG,REG_SUB,
                "=REG= CM_SERVICE_REQ Scan Scope type=%d network_selection_mode %d"
                " Additional_info=%d"
                " RAT Enabled BM = 0x%x, BST BM = 0x%x",
                msg_p->scan_scope,
                msg_p->network_selection_mode,
                msg_p->additional_info,
                rat_enabled,
                bst_enabled);
……
      else
      {
        REG_LOG_HF_HIGH(REG_TAG, REG_SUB, "=REG= CM_SERVICE_REQ - AUTOMATIC type=%d",
                                         msg_p->parameters.automatic.type);
……
        reg_mode_start_plmn_selection
        (
          msg_p->network_selection_mode,
          msg_p->mode_pref,
          msg_p->cs_for_request,
          msg_p->ps_for_request,
          allowed_service_domain
#ifdef FEATURE_GSM_BAND_PREF
          ,msg_p->band_pref
#endif
          ,&rat_pri_list

#if defined(FEATURE_LTE) && defined(FEATURE_LTE_REL9) 
          ,((msg_p->parameters.automatic.type == REG_CM_SERVICE_REQ_SRV_MODE_UPDATE) ? REG_CM_SERVICE_REQ_NORMAL : msg_p->parameters.automatic.type)
#else
          ,(msg_p->parameters.automatic.type)
#endif
#ifdef FEATURE_LTE 
         , msg_p->sms_only,
           addtn_info
#endif
         ,&msg_p->rat_pri_list_info
        );
        reg_state_service_state.service_status = SYS_SRV_STATUS_NO_SRV;

12.reg_mode_start_plmn_selection()

……
  reg_mode_p->start_plmn_selection
  (
    network_selection_mode,
    mode_pref,
    cs_for_request,
    ps_for_request,
    req_service_domain,
    (boolean)((network_selection_mode == SYS_NETWORK_SELECTION_MODE_AUTOMATIC) ? FALSE : TRUE)
#ifdef FEATURE_GSM_BAND_PREF
    ,band_pref
#endif
    ,rat_pri_list_info

    ,type
#ifdef FEATURE_LTE
    ,sms_only,
     additional_info
#endif
    ,full_band_rat_pri_list_info
  );

13.start_plmn_selection()

  if(is_rplmn_defined_valid == TRUE)
  {
    reg_mode_get_3gpp_rat_capabilty(&rplmn_rat_search_order, rat_pri_list_info
     );

    plmn = rplmn;
    plmn = reg_mode_priotitize_hplmn_over_rplmn(rplmn);
    
    if(reg_state_get_power_up_system_selection() == TRUE || type == REG_CM_SERVICE_REQ_MMSS_START_RPLMN) 
    {
      found = reg_mode_determine_first_plmn(&plmn, &rplmn_rat_search_order, rat_pri_list_info, FALSE);
    }
 
  }
  else if(is_rplmn_undefined == TRUE)
  {
    reg_mode_get_3gpp_rat_capabilty(&rplmn_rat_search_order, rat_pri_list_info);
    plmn = rplmn;
    plmn = reg_mode_priotitize_hplmn_over_rplmn(rplmn);
    
     //pass undefined RPLMN, so that we get most preferred PLMN based on current mcc 
    found = reg_mode_determine_first_plmn(&plmn, &rplmn_rat_search_order, rat_pri_list_info, FALSE); 
  }
……
    reg_send_mmr_reg_req
    (
      network_selection_mode,  /* network_selection_mode */      plmn,                   /* plmn                   */
      req_service_domain,  /* req_service_domain     */
      mode_pref,               /* mode_pref              */
      cs_for_request,          /* cs_for_request         */
      ps_for_request,          /* ps_for_request         */
      initial_rat             /* rat                    */
#ifdef FEATURE_GSM_BAND_PREF
      ,band_pref                /* band_pref              */
#endif
      ,((temp_rat_pri_list_info == NULL)?rat_pri_list_info:(const sys_rat_pri_list_info_s_type  *)temp_rat_pri_list_info)
      ,reg_req_type
#ifdef FEATURE_LTE
      ,sms_only,
       additional_info
#endif
#ifdef FEATURE_FEMTO_CSG
      ,SYS_CSG_ID_INVALID
#endif
      ,scan_info
      ,full_band_rat_pri_list_info
#ifdef FEATURE_NAS_ECALL       
      ,ecall_support 
      ,ims_emc_support
#endif      
      ,reg_mode_get_detected_bandwidth()
    );
    reg_mode_plmn_selection_first_attempt = TRUE;

14.reg_mode_determine_first_plmn()

  else
  {
    status = policyman_get_current_mcc((sys_modem_as_id_e_type)reg_sub_id, &pm_found_mcc);

    /*
      ** 1. Get current MCC from PM, check if it is different from RPLMN MCC if yes then find PPLMN matching PM MCC
      **
      ** 2. If RPLMNACT is undefined and if PM MCC is unavailable or RPLMN MCC is same as PM MCC then find RPLMN
      **     in EHPLMN or PPLMN list if  available use its priority order, if not available follow rat priority list order.
      */

   if (POLICYMAN_SUCCEEDED(status))
   {
     REG_LOG_HF_HIGH(REG_TAG, REG_SUB, "=REG= Policyman reported mcc = %d", pm_found_mcc);
     sys_plmn_get_mcc_mnc
     (
       *plmn,
       &plmn_id_is_undefined,
       &mnc_includes_pcs_digit,
       &plmn_mcc,
       &plmn_mnc
     );

     if(pm_found_mcc != 1665 && pm_found_mcc != 0)
     {
       rplmn_mcc_match = sys_mcc_same_country(plmn_mcc, pm_found_mcc);
     }

   }
  }

  if((!rplmn_mcc_match) || (rplmnact_undefined) || (preferred_foreground_search))
  {
……
    reg_sim_ehplmn_list_get_ptr(ehplmn_list_ptr);
……
         if(sys_mcc_same_country(plmn_mcc, pm_found_mcc)
#ifdef FEATURE_LTE
           && !((reg_mode_is_only_req_rat_present_in_rat_pri_list(rat_pri_list_info,SYS_SYS_MODE_LTE) == TRUE ) && 
                (reg_sim_plmn_rat_forbidden(ehplmn_list_ptr->plmn[i],
                               SYS_RAT_LTE_RADIO_ACCESS,(sys_modem_as_id_e_type)reg_sub_id)))
#endif
#ifdef FEATURE_NR5G_SA
           && !((reg_mode_is_only_req_rat_present_in_rat_pri_list(rat_pri_list_info,
                                                             SYS_SYS_MODE_NR5G) == TRUE ) && 
                (reg_sim_plmn_rat_forbidden(ehplmn_list_ptr->plmn[i],
                               SYS_RAT_NR5G_RADIO_ACCESS,(sys_modem_as_id_e_type)reg_sub_id)))
#endif
           )
         {

           *plmn = ehplmn_list_ptr->plmn[i];
           REG_LOG_HF_HIGH(REG_TAG, REG_SUB, "=REG= PLMN to start PLMN selection (%d-%d)", plmn_mcc, plmn_mnc);
           found = TRUE;
           reg_sim_read_hplmn_rat_search_order(rat_list_3gpp);
           break;
         }
       }
……
    /* Compare with OPLMN/UPLMN list*/
    preferred_plmn_list_p = reg_sim_read_preferred_plmn_list
                                        (
                                          &preferred_plmn_list_length,
                                          &operator_preferred_plmn_list_length,
                                          &user_preferred_plmn_list_length
                                        );
……
         /* If Only RAT enabled in preferred PLMN entry is LTE or preferred PLMN is forbidden/backoff forbidden then skip that PLMN. */

         if(sys_mcc_same_country(plmn_mcc, pm_found_mcc) &&
#ifdef FEATURE_DUAL_SIM           (!reg_sim_per_subs_plmn_forbidden(preferred_plmn_list_p[index].plmn, (sys_modem_as_id_e_type)reg_sub_id))
#else
           (!reg_sim_plmn_forbidden(preferred_plmn_list_p[index].plmn))
#endif
           &&
           (reg_mode_preferred_plmn_backoff_forbidden(
                             &preferred_plmn_list_p[index]) == FALSE))
         {
           number_of_pplmn_supported_rats = reg_mode_get_rat_order
                                                           (
                                                             rat_pri_list_info,
                                                             pplmn_supported_rat_order,
                                                             preferred_plmn_list_p[index],
                                                             rat_list_3gpp
                                                           );
           *plmn = preferred_plmn_list_p[index].plmn;
           REG_LOG_HF_HIGH(REG_TAG, REG_SUB, "=REG= PLMN to start PLMN selection (%d-%d)", plmn_mcc, plmn_mnc);
           reg_mode_available_plmn_list_populated = TRUE;
           reg_mode_reset_available_plmn_list(preferred_plmn_list_p[index].plmn,rat_list_3gpp);
           found = TRUE;
           supported_rats = number_of_pplmn_supported_rats;
           found_index = index;
           break;
         }
       }
       else if(rplmnact_undefined)
       {
         if(sys_plmn_match(preferred_plmn_list_p[index].plmn, *plmn) &&
            (!reg_sim_per_subs_plmn_forbidden(
                                   preferred_plmn_list_p[index].plmn,
                                   (sys_modem_as_id_e_type)reg_sub_id)) &&
            (reg_mode_preferred_plmn_backoff_forbidden(
                             &preferred_plmn_list_p[index]) == FALSE))
         {
           number_of_pplmn_supported_rats = reg_mode_get_rat_order
                                                             (
                                                               rat_pri_list_info,
                                                               pplmn_supported_rat_order,
                                                               preferred_plmn_list_p[index],
                                                               rat_list_3gpp
                                                             );
           REG_LOG_HF_HIGH(REG_TAG, REG_SUB, "=REG= rplmnact_undefined - Match with SIM preferred PLMN ");
           found = TRUE;
           break;
         }
       }
……
    /* Find in NV preffered list */
     preferred_plmn_list_p = reg_nv_get_preferred_plmn_list(&preferred_plmn_list_length);
……
            if(sys_mcc_same_country(plmn_mcc, pm_found_mcc) &&
               (!reg_sim_per_subs_plmn_forbidden(
                        preferred_plmn_list_p[index].plmn,
                        (sys_modem_as_id_e_type)reg_sub_id)) &&
               (reg_mode_preferred_plmn_backoff_forbidden(
                             &preferred_plmn_list_p[index]) == FALSE))
            {
                number_of_pplmn_supported_rats = reg_mode_get_rat_order
                                                                (
                                                                  rat_pri_list_info,
                                                                  pplmn_supported_rat_order,
                                                                  preferred_plmn_list_p[index],
                                                                  rat_list_3gpp
                                                                );
                *plmn = preferred_plmn_list_p[index].plmn;
                REG_LOG_HF_HIGH(REG_TAG, REG_SUB, "=REG= PLMN to start PLMN selection (%d-%d)", plmn_mcc, plmn_mnc);
                reg_mode_reset_available_plmn_list(preferred_plmn_list_p[index].plmn,rat_list_3gpp);
                found = TRUE;
                reg_mode_available_plmn_list_populated = TRUE;
                supported_rats = number_of_pplmn_supported_rats;
                found_index = index;
                break;
            }
          }
          else if(rplmnact_undefined)
          {
            if(sys_plmn_match(preferred_plmn_list_p[index].plmn, *plmn) &&
               (!reg_sim_per_subs_plmn_forbidden(
                                preferred_plmn_list_p[index].plmn,
                                (sys_modem_as_id_e_type)reg_sub_id)) &&
               (reg_mode_preferred_plmn_backoff_forbidden(
                             &preferred_plmn_list_p[index]) == FALSE))
            {
              number_of_pplmn_supported_rats = reg_mode_get_rat_order
                                                                (
                                                                  rat_pri_list_info,
                                                                  pplmn_supported_rat_order,
                                                                  preferred_plmn_list_p[index],
                                                                  rat_list_3gpp
                                                                );
             
              REG_LOG_HF_HIGH(REG_TAG, REG_SUB, "=REG= rplmnact_undefined - Match with NV preferred PLMN ");
              break;
            }
          }
       }
                                                                

15.reg_send_mmr_reg_req()

  reg_send_mmr_reg_req_msg.message_header.message_set     = MS_MM_REG;
  reg_send_mmr_reg_req_msg.message_header.message_id      = (byte)MMR_REG_REQ;
……
  REG_LOG_HF_HIGH(REG_TAG, REG_SUB, "=REG= Scan Info New scan %d, use_timer=%d, scan_time=%d acq_db_rplmn=%d", 
                  scan_info.new_scan,scan_info.use_timer,
                  scan_info.scan_time,scan_info.acq_db_rplmn);
……
  reg_send_last_mmr_reg_req();

16.reg_send_last_mmr_reg_req()

  REG_LOG_LF_HIGH(REG_TAG, REG_SUB, "=REG= MMR_REG_REQ PLMN(%u-%u) RAT(0-GSM,1-W,2-LTE,3-TDS,4-NR5G) = %d"
                                        " trans_id %d,  scan_scope=%d", 
                                         mcc,
                                         mnc,
                                         reg_send_mmr_reg_req_msg.rat,
                                         reg_send_mmr_reg_req_msg.trans_id,
                                         reg_send_mmr_reg_req_msg.scan_scope);
……
  reg_send_message(&reg_send_mmr_reg_req_msg, GS_QUEUE_MM);

17.mm_emm_normal_msg_handler()

void mm_emm_normal_msg_handler(rex_sigs_type sigs,void **mm_process_msg_fn_ptr)
{

  if (sigs & MM_CMD_Q_SIG)
  {
    *mm_process_msg_fn_ptr = (void *)mmcoord_route_mm_emm_messages;  
  }

18.mmcoord_route_mm_emm_messages()

        case MMR_REG_REQ:
……
            else
            {
#ifdef FEATURE_LTE
              /*There is no RAT change, route the REG message to LTE_EMM module*/
              emm_process_reg_command( cmd_ptr, emm_ctrl_data_ptr_arg ); 
#endif
            }

19.emm_process_reg_command()

    case MMR_REG_REQ:
      emm_process_reg_req(reg_msg_ptr, emm_ctrl_data_ptr) ;
      break ;

20.emm_process_reg_req()

  MM_LOG_HF_HIGH(MM_TAG, MM_SUB, "=EMM= MMR_REG_REQ - Srv Domain %d, NW Sel Mode %d, Type %d, Voice domain pref= %d \
                                           ecall_pending %d ims_emc_pending %d",
                reg_req_ptr->req_service_domain,
                reg_req_ptr->network_selection_mode,
                reg_req_ptr->type,
                reg_req_ptr->lte_cs_domain_param.voice_domain_pref,
                reg_req_ptr->ecall_support,
                reg_req_ptr->ims_emc_support);
……
                  MM_LOG_HF_HIGH(MM_TAG, MM_SUB, "=EMM= Shared BW valid %d, num_freqs %d, bw[0] 0x%x freq[0] 0x%x", 
                      emm_ctrl_data_ptr->detected_bandwidth.valid,
                      emm_ctrl_data_ptr->detected_bandwidth.detected_frequency_list.num_freqs,

                      emm_ctrl_data_ptr->detected_bandwidth.detected_frequency_list.freq[0].bandwidth,
                      emm_ctrl_data_ptr->detected_bandwidth.detected_frequency_list.freq[0].frequency);

                  emm_send_rrc_service_req(reg_req_ptr->network_selection_mode,
                                           TRUE,
                                           &reg_req_ptr->plmn,
                                           TRUE,
                                           TRUE,
                                           FALSE, // e-plmn revisit
                                           TRUE,
                                           FALSE,
                                           0,
                                           emm_ctrl_data_ptr,
                                           &reg_req_ptr->rat_pri_list_info,
                                           reg_req_ptr->type
#ifdef FEATURE_LTE_REL9
                                          ,reg_req_ptr->additional_info
#endif                       
#ifdef FEATURE_FEMTO_CSG
                                          ,reg_req_ptr->csg_id
#endif 
                                          ,reg_req_ptr->scan_scope  
                                          ,reg_req_ptr->trm_timeout
                                          ,reg_req_ptr->scan_info
                                          ,&reg_req_ptr->full_band_rat_pri_list_info
                                          );

21.emm_send_rrc_service_req()    

  if(emm_msgr_send((msgr_hdr_s *)rrc_service_req_ptr, sizeof(lte_rrc_service_req_s)) != E_SUCCESS)
  {
    MSG_FATAL_DS(MM_SUB, "=EMM= emm_msgr_send failed!", 0,0,0 );
  } 
  else
  {
      mm_calculate_bm_for_bst_and_en_rat(&rrc_service_req_ptr->rat_pri_list,&rat_enabled,&bst_enabled);
    MM_LOG_LF_HIGH(MM_TAG, MM_SUB, "EMM: Sent LTE_RRC_SERVICE_REQ scan_scope %d, new_scan %d, use timer %d, timer value %d ecall_pending %d ims_emc_pending %d RAT Enabled BM = 0x%x", \
                  scan_scope, rrc_service_req_ptr->new_scan, rrc_service_req_ptr->use_search_timer, rrc_service_req_ptr->lte_search_timer,\
                  rrc_service_req_ptr->ecall_pending,rrc_service_req_ptr->emc_srv_pending,rat_enabled);
  }

三、主要日志打印

[  42/ 0/2]              QTRACE                   06:56:10.980873          MMODE/STRM/High/CM       [              mmoc.c  10530] SUBSC_CHGD: PH_STAT: chg_type 1, sd_initialized 1, sd_init_called 0
[  42/ 0/2]              QTRACE                   06:56:10.981922          MMODE/STRM/High/CM       [             sdcmd.c   6406] <<<< Returned Action=16384, ss=0, asubs_id=1, net_sel 0, srv_req_type 2, scan_scope 1 <<<<2
[  42/ 0/2]              QTRACE                   06:56:10.981940          MMODE/STRM/High/CM       [              mmoc.c   4489] SD->MMOC: ACTIVATE: stk0, sub 1 sd_act=16384, delay=0
[  42/ 0/2]              QTRACE                   06:56:10.981949          MMODE/STRM/High/CM       [          cmregprx.c  15886] MMOC->CMREG: Recvd command: 0, sub 1 stk 0
[  42/ 0/1]              QTRACE                   06:56:10.981953          MMODE/STRM/Medium/CM     [          cmregprx.c   7086] process_sd_action 16384 on sub 1 stk 0 is_gwl_mode_supp 1 is_1x_hdr_mode_supp 0 sd_mode_pref 0x2202
[  42/ 0/2]              QTRACE                   06:56:10.982003          MMODE/STRM/High/CM       [          cmregprx.c   3850] CMREG->NAS: sub 1 stk 0, addl 0x0, volte_csfb 1, sms_only 0, ph mode_pref 0x220, Send SERVICE_REQ
[  47/ 1/2]              QTRACE                   06:56:10.982025          MM/HighFreq/High/REG     [         reg_state.c   1457] DS: SUB 1 =REG= Received message MS: 7   MSG_ID: 22
[  47/ 0/2]              QTRACE                   06:56:10.982037          MM/LowFreq/High/REG      [         reg_state.c   2968] DS: SUB 1 =REG= CM_SERVICE_REQ Scan Scope type=1 network_selection_mode 0 Additional_info=0 RAT Enabled BM = 0x220, BST BM = 0x2202
[  47/ 1/2]              QTRACE                   06:56:10.982660          MM/HighFreq/High/REG     [         reg_state.c   4160] DS: SUB 1 =REG= CM_SERVICE_REQ - AUTOMATIC type=22[  47/ 1/2]              QTRACE                   06:56:10.983451          MM/HighFreq/High/REG     [          reg_mode.c  13229] DS: SUB 1 =REG= Policyman reported mcc = 4602
[  47/ 1/2]              QTRACE                   06:56:10.983548          MM/HighFreq/High/REG     [           reg_sim.c   4220] DS: SUB 1 =REG= Match between RPLMN and NV PLMN2
[  47/ 1/2]              QTRACE                   06:56:10.983708          MM/HighFreq/High/REG     [          reg_send.c   1884] DS: SUB 1 =REG= Scan Info New scan 1, use_timer=0, scan_time=0 acq_db_rplmn=02
[  47/ 0/2]              QTRACE                   06:56:10.983715          MM/LowFreq/High/REG      [          reg_send.c   2163] DS: SUB 1 =REG= MMR_REG_REQ PLMN(460-0) RAT(0-GSM,1-W,2-LTE,3-TDS,4-NR5G) = 2 trans_id 8,  scan_scope=12
[  47/ 1/2]              QTRACE                   06:56:10.983717          MM/HighFreq/High/REG     [          reg_send.c   2180] DS: SUB 1 =REG= MMR_REG_REQ   Scan Info New scan 1, use_timer=0, scan_time=02
[  47/ 1/2]              QTRACE                   06:56:10.983749          MM/HighFreq/High/MM      [           mmutils.c   9337] DS: SUB 1 =MM= Received message MS: 10   MSG_ID: 32
[  47/ 1/2]              QTRACE                   06:56:10.983782          MM/HighFreq/High/MM      [   emm_reg_handler.c   1070] DS: SUB 1 =EMM= MMR_REG_REQ - Srv Domain 3, NW Sel Mode 0, Type 1, Voice domain pref= 0                                            ecall_pending 0 ims_emc_pending 02
[  47/ 1/2]              QTRACE                   06:56:10.983973          MM/HighFreq/High/MM      [   emm_reg_handler.c   1216] DS: SUB 1 =EMM= Setting PS voice on EUTRAN supported bit to TRUE voice_domain_pref = 32
[  47/ 1/2]              QTRACE                   06:56:10.984110          MM/HighFreq/High/MM      [   emm_reg_handler.c   1833] DS: SUB 1 =EMM= Shared BW valid 0, num_freqs 0, bw[0] 0x0 freq[0] 0x02
[  47/ 0/2]              QTRACE                   06:56:10.984158          MM/LowFreq/High/MM       [        emm_rrc_if.c    646] DS: SUB 1 EMM: Sent LTE_RRC_SERVICE_REQ scan_scope 1, new_scan 1, use timer 0, timer value 0 ecall_pending 0 ims_emc_pending 0 RAT Enabled BM = 0x2202
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值