IVSR: InValid Sim Recovery, 是当发生注册网络失败“Invalid sim” state,透过逻辑判断此Invalid Sim state是否为网络异常;若判断是网络异常引起,便由AP尝试recovery modem,以达到不重启开机的情况下,离开此Invalid Sim state-------目前遇到一些地方的移动网络错把自己正常的卡当成invalid sim,所以建议开启IVSR
Spec规定发生Invalid Sim state时只有重开机或插拔SIM卡才可以离开,所以IVSR是MTK为了解决Operator 网络问题而引入的一个违背Spec的feature,但目前常见的CMCC入库/CTA/FTA等测试都不会测试这项,也就不会因为IVSR开启而导致这些测试fail------所以目前MTK默认是开启IVSR的
1.IVSR关闭方式(默认开启):
如果你遇到特殊需求需要关闭IVSR功能,方法如下:
GsmServiceStateTracker.java中的onInvalidSimInfoReceived()开头直接return;
2. 实做原理:
(1)
Modem notify RIL by AT command URC
+EIND: 16,<plmn_id>,<cs_invalid>,<ps_invalid>,<cause>
e.g. +EIND: 16,”46002”,1,0,13
<plmn_id>: string
<cs_invalid>,<ps_invalid>: integer
0: Not invalid
1: Invalid
<cause>: integer
(2)
RIL will then notify framework layer by the event EVENT_INVALID_SIM_INFO
We handle EVENT_INVALID_SIM_INFO in GsmServiceStateTracker.java: onInvalidSimInfoReceived()
Please refer the sample code in this function
若想调整Invalid SIM state判断逻辑与处理方式.请自行customize此function
3. trigger IVSR的条件:
(1) 手机在开机 and SIM refresh 之后, 一定要曾经成功注册 (确定手机/SIM 的组合是真的可以拿到 normal service 的,否则因recovery会给SIM卡上电而可能损坏卡的寿命)
CS domain invalid, 要检查的是 CS domain曾经成功注册过
PS domain invalid, 要检查的是 PS domain曾经成功注册过
(2) 发生 invalid SIM 时的 serving PLMN (给 reject cause 的 PLMN) 必须和最后一次成功註冊的 PLMN 是同一家 (确认在这个 PLMN 手机/SIM 是可以成功註冊的)
(3) test mode的状态下 或插入的卡必须是 normal SIM(不是test SIM)