微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > mt2503配置锁网,有一张卡合法则两张都可用,否则两卡都被锁住,且...

mt2503配置锁网,有一张卡合法则两张都可用,否则两卡都被锁住,且...

时间:10-02 整理:3721RD 点击:
[SIM_ME_LOCK] 配置锁网,有一张卡合法则两张都可用,否则两卡都被锁住,且不显示password screen
[DESCRIPTION]
有一张卡合法则两张都可用,否则两卡都被锁住, 且不显示password screen, 均在后台执行
[SOLUTION]
首先,需要确定打开宏SML_SUPPORT,如果没有,则需要我司帮忙申请flavor build.
其次,请您配置nvram的方法可以参考dcc文档:SIM_ME_Lock_User_Guide.doc
最后,除了配置锁网以外,还要修改代码。demo code如下,贵司可以适当作调整:
1、sml_Check前,设2个全局变量SIM1_LOCK_FLAG和SIM2_LOCK_FLAG,初始值都为0,在函数的最后,return result;之前判断:
if(source==0)//卡1
{
if(result== KAL_TRUE)
SIM1_LOCK_FLAG =2; //卡1合法
else
SIM1_LOCK_FLAG =1;//卡1非法
}
else
{
if(result== KAL_TRUE)
SIM2_LOCK_FLAG=2;//卡2合法
else
SIM2_LOCK_FLAG=1;//卡2非法
}
2、卡的所有的密码检验都在MMI_bootup_sec_do_verification函数中,For循环控制了卡的顺序,先卡1的然后卡2的,
if (mmi_bootup_sec_do_verification_of_sim( cntx,sim, str_buffer)),返回true表示这个卡有pin or np码需要验证,
所以需要在mmi_bootup_sec_do_verification_of_sim函数里面做文章,
case SRV_BOOTUP_VERI_NP:应该这样
if(sim == MMI_SIM2)
{
if(SIM1_LOCK_FLAG == 2)// 卡1是范围内的卡
{
//kal_pROMpt_trace(MOD_MMI,"sml_Check----cntx->sim_displaying = %d,
SIM1_LOCK_FLAG=%d,n_remaining_attempts=%d",cntx->sim_displaying,
SIM1_LOCK_FLAG,n_remaining_attempts);
srv_bootup_verify(
cntx->sim_displaying,
L"正确的密码",
mmi_bootup_sec_verify_result,
cntx);
return MMI_FALSE //return MMI_TRUE
}
else//卡1也是非范围内的卡 or 没插卡
{
//kal_prompt_trace(MOD_MMI,"sml_Check----cntx->sim_displaying =
%d,SIM1_LOCK_FLAG = %d,n_remaining_attempts =%d",cntx-
>sim_displaying,SIM1_LOCK_FLAG,n_remaining_attempts);
if(n_remaining_attempts > 0)
srv_bootup_verify(
cntx->sim_displaying,
L"错误密码",
mmi_bootup_sec_verify_result,
cntx);
else //直接进入block状态
return MMI_FALSE;
}
}
if(sim == MMI_SIM1)
{
if(SIM2_LOCK_FLAG == 2)// 卡2是范围内的卡
{
//kal_prompt_trace(MOD_MMI,"sml_Check----cntx->sim_displaying = %d,
SIM2_LOCK_FLAG=%d,n_remaining_attempts=%d",cntx->sim_displaying,
SIM2_LOCK_FLAG,n_remaining_attempts);
srv_bootup_verify(
cntx->sim_displaying,
L"正确的密码",
mmi_bootup_sec_verify_result,
cntx);
return MMI_FALSE //return MMI_TRUE
}
else if(SIM2_LOCK_FLAG == 1)//卡2也是非范围内的卡
{
//kal_prompt_trace(MOD_MMI,"sml_Check----cntx->sim_displaying =
%d,SIM2_LOCK_FLAG = %d,n_remaining_attempts =%d",cntx-
>sim_displaying,SIM2_LOCK_FLAG,n_remaining_attempts);
if(n_remaining_attempts > 0)
srv_bootup_verify(
cntx->sim_displaying,
L"错误密码",
mmi_bootup_sec_verify_result,
cntx);
else//直接进入block状态
return MMI_FALSE;
}
else//卡2没插卡or 卡2开了pin码没走到sml_Check中来,没办法区分卡2是否合法
{
If(srv_sim_ctrl_is_inserted(MMI_SIM2) == MMI_FALSE)//卡2没插卡
{
//kal_prompt_trace(MOD_MMI," card2 not insert");
If(n_remaining_attempts > 0)// 不显示输入密码界面, 直接进入锁网状态
srv_bootup_verify(
cntx->sim_displaying,
L"错误密码",
mmi_bootup_sec_verify_result,
cntx);
else//直接进入block状态
return MMI_FALS;
}
else//卡2开了pin码 //卡2的pin码界面先弹,然后才是卡1的np
{
return MMI_FALSE;
}
}
}
3. 在sml_verify()下修改如下:
else
{
If(cat == SML_CAT_N)
{
meta->retry_count = SML_RETRY_COUNT_N_CAT;//输错密码的情况下回复默认密码次数为默认值
*retry_count = 0;// 输错密码的情况下直接修改剩余密码次数为0,卡被锁住
return KAL_FALSE;
}
esle
{
meta-> retry_count--;
result = KAL_FALSE;
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top