MTK中gPLMN和gPLMN_2变量解析
PLMN
公众陆地移动通信网,也可快速朗读为“皮儿门”。Public Land Mobile-communication Network 由政府或它所批准的经营者,为公众提供陆地移动通信业务目的而建立和经营的网路。该网路一般与公众交换电话网(PSTN)互连,形成整个地区或国家规模的通信网。公众陆地移动电话网(PLMN)是一个无线通讯系统,趋向于面向陆地上的例如交通工具或步行中的移动用户。这样的系统可以是独立的,但常常和固定电话系统如公用交换电话网络(PSTN)连接起来。然而,移动和便携的因特网用户也越来越普及。一个理想的PLMN系统提供给移动和便携用户和固定网络相当的服务,这在地形比较复杂的区域是一个特殊的挑战,因为基站会难以被找到和维持。在都市的环境中有很多的障碍,像是建筑物,和各种射频都能引起杂音和干扰的辐射。大多数的系统今天使用数字技术而不是过去的模拟技术。这一个过渡已经改善了通信质量和可靠度,但是现在还没有达到完美的地步。PLMN的分类对于一个特定的终端来说,通常需要维护几种不同类型的PLMN列表,每个列表中会有多个PLMN。
(1)RPLMN(Registered PLMN 已登记PLMN):已登记PLMN。是终端在上次关机或脱网前登记上的PLMN。在3GPP 2003年第TSG TP-21次会议上决定,将该参数从USIM
卡上删掉,而将其保存在终端的内存中。
(2)EPLMN(Equivalent PLMN 等效PLMN):为与终端当前所选择的PLMN处于同等地位的PLMN,其优先级相同。
(3)EHPLMN(Equivalent Home PLMN 等效本地PLMN):为与终端当前所选择的PLMN处于同等地位的本地PLMN。其实:EHPLMN和EPLMN就好比是中移动的新建的158
网络,而PLMN就好比是原来的135~139网络。
(4)HPLMN(Home PLMN 归属PLMN):为终端用户归属的PLMN。也就是说,终端USIM卡上的IMSI号中包含的MCC和MNC与HPLMN上的MCC和MNC是一致的,对于某一
用户来说,其归属的PLMN只有一个。
(5)VPLMN(Visited PLMN 访问PLMN):为终端用户访问的PLMN。其PLMN和存在SIM卡中的IMSI的MCC,MNC是不完全相同的。当移动终端丢失覆盖后,一个VPLMN将被
选择。
(6)UPLMN(User Controlled PLMN 用户控制PLMN):是储存在USIM卡上的一个与PLMN选择有关的参数。
(7)OPLMN(Operator Controlled PLMN 运营商控制PLMN):是储存在USIM 卡上的一个与PLMN选择有关的参数。
(8)FPLMN(Forbidden PLMN 禁用PLMN):为被禁止访问的PLMN,通常终端在尝试接入某个PLMN被拒绝以后,会将其加到本列表中。
(9)APLMN(Approve PLMN 可捕获PLMN):为终端能在其上找到至少一个小区,并能读出其PLMN标识信息的PLMN。
PLMN的选择:不同类型的PLMN其优先级别不同,终端在进行PLMN选择时将按照以下顺序依次进行:
(1)RPLMN
(2)EPLMN
(3)HPLMN
(4)EHPLMN
(5)UPLMN
(6)OPLMN
(7)其他的PLMN
MTK中gPLMN 和 gPLMN_2 存的是MCC + MNC,也是根据这个变量来设置运营商信息的。
如:中国移动(46000),中国联通(46001)。
void NetWorkAttachedIndicatio n(void *inMsg)//设置gPLMN
{
strcpy((S8*) gPLMN, (S8*) local_data->plmn);
RefreshNwProviderName(gPLMN);
}
void MTPNP_PFAL_NW_Attach_Indication(void *inMag)//设置gPLMN_2
{
strcpy((S8 *) gPLMN_2, (S8 *) local_data->plmn);
MTPNP_AD_Report_PLMN_ID(gPLMN_2);
MTPNP_PFAL_RefreshNwProviderName(gPLMN_2);
}
void RefreshNwProviderName(U8 *UpdatePlmn) // SIM1 设置,刷新运营商名字函数
{
mmi_netset_retrieve_opname_from_plmn(UpdatePlmn, gNWProviderName); // 设置运营商名字的
}
void MTPNP_PFAL_RefreshNwProviderName(MTPNP_UCHAR * plmn) // SIM2 设置,刷新运营商名字函数
{
mmi_netset_retrieve_opname_from_plmn(plmn, g_slave_nw_providername); // 设置运营商名字的