admin管理员组

文章数量:1558099

搜网与网络选择,是指在手机开机过程中,确定注册或者附着到哪个运营商网络及哪个制式的过程,也就是选择PLMN 以及RAT 的过程。

定义

RPLMN(Registered PLMN):是指手机上一次成功注册的网络,需要注意的是,这里必须是成功注册的网络,且需要样机正常关机才会将RPLMN写入到SIM卡中;

HPLMN(Home PLMN):是指归运营商的归属网络,例如联通卡的HPLMN一般是46001

EHPLMN(Equivalent Home PLMN):是指运营商的等效归属网络,例如,中国联通的MCC和MNC有46001、46007等,这些网络均属于EHPLMN;但需要注意的是,国内的SIM卡可能并没有将EHPLMN写入到SIM卡文件系统中;

VPLMN(Visited PLMN):是指UE所访问的PLMN,即当前所在的网络

EFs SIM卡存储信息
EFIMSI – IMSI
EFPLMNwAcT – User-controlled PLMN selector with Access Technology
EFHPPLMN – Higher-priority PLMN search period
EFFPLMN – Forbidden PLMNs
EFLOCI – Location information
EFOPLMNwACT – Operator-controlled PLMN selector with Access Technology
EFHPLMNwAcT – Home HPLMN selector with Access Technology
EFEHPLMN – Equivalent HPLMN
EFLRPLMNSI – Last RPLMN selection indication
EFPSLOCI – Packet-switched location information

NVs Used by the UE
NV 1190, NV_RPLMNACT_I – Stores the last RPLMN RAT information
NV 849, NV_NET_SEL_MODE_PREF_I – 手动选网还是自动选网
NV 850, NV_SERVICE_DOMAIN_PREF_I – Domain CS or PS 

EFS Used by the UE

/sd/rat_acq_order :PLMN选择中的rat 优先级列表(LTE UMTS GSM )

AUTO PLMN选择流程

REG模块

代码路径在:mmcp\nas\reg

入口函数 reg_main


    void reg_main(dword dummy)

    {

    reg_init_before_task_start();//初始化queue 在reg_put_cmd中填充

    reg_timers_initialize();//初始化timer

    reg_create_efs_config();//init efs

    reg_ulog_register();

    reg_initialize();

    reg_nv_initialize_cache();//init nv

    reg_sim_mmgsdi_init();//建立与MMGSDI 的通信,接受sim 卡消息

    for(;;)

    {

    sigs = reg_wait(REG_CMD_Q_SIG);//监听signal

    if (sigs & REG_CMD_Q_SIG)

    {

    (void) rex_clr_sigs( reg_tcb_ptr,REG_CMD_Q_SIG);//清空signal

    while ((reg_cmd_p = (reg_cmd_type*)q_get(&reg_cmd_q) ) != NULL)

    {

    reg_state_main(reg_cmd_p); //核心函数,处理各种signal

    }

    }

    }

函数的核心函数的reg_state_main 函数,主要处理REG接收到的SIGNAL,主要有以下几个信号

MS_CM_REG/* messages between CM and REG         */
MS_MM_REG/* messages between MM and REG         */
MS_GSDI/* messages from/to GSDI               */
MS_TIMER/* Messages indicating timeouts        */
MS_REG_REG/* Messages REG to REG internal */

具体的信号我们可以从QXDMlog 来看,从Call manager 收到信号,到发送拨号请求给RRC,整个流程如下:

//REG Queries the SIM

21:18:51.779 reg_sim.c 1072 SIM card mode (USIM)

21:18:51.779 reg_sim.c 1576 HPLMN(001-001)

21:18:51.781 reg_nv.c 289 Read GPRS_ANITE_GCF -1

//REG →MM; SIM availability

00:00:01.126 reg_state.c 9179 =REG= CM_SIM_AVAILABLE_REQ mode_pref:2,

21:18:51.787 reg_send.c 821 MMR_SIM_AVAILABLE_REQ

21:18:51.788 mmcoord.c 465 MM received MMR_SIM_AVAILABLE_REQ

21:18:51.805 reg_state.c 2713 MMR_SIM_AVAILABLE_CNF

//REG reads PLMN information from SIM

21:18:51.828 reg_sim.c 1836 CS RPLMN(1-1)

21:18:51.829 reg_sim.c 1576 HPLMN(001-001)

21:18:51.829 reg_sim.c 2406 Forbidden PLMN list (length = 4)

21:18:51.829 reg_sim.c 2410 # MCC-MNC

21:18:51.829 reg_sim.c 2423 0 310-017

21:18:51.829 reg_sim.c 2423 1 000-000

21:18:51.829 reg_sim.c 2423 2 000-000

21:18:51.829 reg_sim.c 2423 3 000-000

21:18:51.830 reg_sim.c 2031 RPLMN RAT Search Order (UMTS-GSM)

//REG → MM

21:18:51.830 reg_send.c 786 MMR_REG_REQ PLMN(1-1) RAT(UMTS)

21:18:51.830 mmcoord.c 922 MM received MMR_REG_REQ [0 f1 10]

//MM →RRC

21:18:51.831 mmrrcconn.c 316 MM sent RRC_SERVICE_REQ to RRC

21:18:51.831 rrcdispatcher.c 3432 Recd: RRC_SERVICE_REQ

从整个交互来看 REG主要是与CM 和MM 进行交互,CM 就是上层Call Manager MM是底层NAS的模块,与RRC通信

整个拨号过程核心signal就是CM_SERVICE_REQ,是CM发起拨号选网,而reg_state_main处理的函数就是reg_state_process_cm_service_req

函数比较复杂,这个流程如下

reg_state_process_cm_service_req

reg_sim_is_hplmn_to_be_selected //首先检查EF_LRPLMNSI;如果为 1 ,PLMN 使用HPLMN,如果为0,PLMN使用RPLMN

CASE 0

PLMN选择

reg_sim_read_sim_rplmn 检查NV_RPLMNACT_I

如果为LTE,则RPLMN 从EF_EPSLOCI中读取;

如果为UMTS 和GSM ,则通过NV_SERVICE_DOMAIN_PREF_I 选择从EF_PSLOCI还是EF_LOCI中读取RPLMN

函数中reg_sim_rplmn_rat_search_order 其实是REG模块启动时调用reg_sim_load_card_mode,从NV_RPLMNACT_I获取的

RAT选择

由NV_RPLMNACT_I和SIM卡中EF_RPLMNAcT来决定

reg_mode_get_3gpp_rat_capabilty ,转换rat_acq_order

reg_mode_determine_first_plmn 确认RPLMN是否valid ,如果invalid 就选用HPLMN

reg_sim_read_rplmn_rat_search_order,从sim卡中读取EF_RPLMNAcT,再EFS rat_acq_order 做并集

reg_sim_combined_rat_search_order如果读取失败,使用NV_RPLMNACT_I

CASE 1

PLMN

reg_sim_load_card_mode 中读取EF_IMSI 赋值HPLMN

RAT

reg_sim_read_hplmn_rat_search_order 中读取EF_HPLMNWACT

参考文档:

80-N0608-1_B_UMTS_Cell_Select_Reg

80-N9533-2_D_PLMN_RAT_Selection_GSM_WCDMA_LTE_TD-SCDMA

80-N9811-1_C_LTE_Cell_Select_Registration_TAU

本文标签: 高通模块选网ltereg