一:Background & 相關flow
MTK Operator name display在手機中分成兩種類型:
1. Sim卡名稱:
根據開機從SIM卡中讀取的IMSI去到Spn-conf.xml中(如果是MVNO的卡則是Virtual-spn-conf-by-***.xml中)匹配得到的name,會保存在SIMInfo這個database中,後續sim卡的名稱就從此database中取得
關於MVNO可以參考如下FAQ:
ID: FAQ09811
[NW]如何區分MNO和MVNO
使用場景:
Setting下SimMangement中SIMInfo等
2. 注冊上的網絡的名稱:
這部分顯示所用string的主要來源有如下這些,且他們之間最終顯示哪個source的string是根據網絡和這些source的內容所最終確定的rule決定的(如當前是否roaming,當前注冊的plmn是否在EF_SPDI中,EF_SPN中有相關flag標識要不要顯示spn…)
關於rule:
請參考Gsm sec 51.011 EF_SPN的部分還有cphs spec;
code的部分,請參考SIMRecords. getDisplayRule和GsmServiceStateTracker. updateSpnDisplay:
(1) Sim卡中文件,如EF_SPN, EF_OPN, EF_SOPN, EF_OPL, EF_PNN, EF_SPDI…
(2) 注冊到的網絡的plmn,對應Spn-conf.xml
(3) NITZ,即網絡下發的名字
Spec 51.011中EF_SPN定義的rule 總結就是:
1. 名稱分為 SPN 和 Registered plmn(包括EONS, CPHS (即ONS), S-CPHS, NITZ, PLMN;優先級依次降低)
2. 如果沒有SPN文件,那麼就顯示Registered plmn
3. 若有SPN,注冊的plmn是HPLMN或者注冊的plmn在SIM卡文件EF_SPDI中,那麼
(1) 如果有SPN就要顯示SPN
(2) 如果SPN的bit1 = 1, 則需要同時顯示Registered plmn,如果SPN的bit1=0,則不需要同時顯示Registered plmn
4. 若有SPN,注冊的plmn是Roaming plmn且注冊的plmn也不在SIM卡文件EF_SPDI中,那麼
(1) 顯示Registered plmn
(2) 如果SPN的bit2=0,則需要同時顯示SPN,如果SPN的bit2=1,則不需要同時顯示SPN
其中客戶可以客制化的部分是Spn-conf.xml/Virtual-spn-conf-by-***.xml;換句話說,如果你修改了相關xml沒有生效,應該是按照spec顯示了更高優先級的名字(EONS, CPHS, NITZ…)
如果按照spec顯示了更高優先級的名字,而不是xml配置的,那麼想要顯示xml的名字必然要修改code flow而導致破壞spec定義的rule(由於這是spec定義的通用rule,所以SIM卡在實做時也需要follow spec rule)------這樣的客制化很可能會導致CTA/FTA等測試fail,且遵循spec的SIM卡顯示也會出問題;建議跟客戶說明這部分是有spec規定的,不要進行除xml的客制化
二:遇到問題時的處理方式
如果有些Operator不follow GSM Spec,而定義自己的rule,請按照如下方式處理:
(1)如果operator有出正式spec,請提供詳細的技術說明文檔;
(2)把此卡在同一時間同一地點(確保網絡狀況相同)放到Samsung,HTC等對比機中復現問題,提供對比機表現
(3)將此卡放到MTK手機中復現問題並提供復現問題的開機mobile log