📄 mfw_sim.c
字号:
pin_flag = MFW_SIM_VERIFY;
pin_ident = pin_id;
switch (pin_id)
{
case MFW_SIM_PIN1:
sAT_PercentPVRF(CMD_SRC_LCL, PVRF_TYPE_Pin1, pin, 0);
break;
case MFW_SIM_PIN2:
sAT_PercentPVRF(CMD_SRC_LCL, PVRF_TYPE_Pin2, pin, 0);
break;
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_unblock_pin |
+--------------------------------------------------------------------+
PURPOSE : unblock SIM
*/
void sim_unblock_pin (U8 pin_id, char *puk, char *newpin)
{
TRACE_FUNCTION("sim_unblock_pin()");
pin_flag = MFW_SIM_UNBLOCK;
pin_ident = pin_id;
switch (pin_id)
{
case MFW_SIM_PUK1:
sAT_PercentPVRF(CMD_SRC_LCL, PVRF_TYPE_Puk1, puk, newpin);
break;
case MFW_SIM_PUK2:
sAT_PercentPVRF(CMD_SRC_LCL, PVRF_TYPE_Puk2, puk, newpin);
break;
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_change_pin |
+--------------------------------------------------------------------+
PURPOSE : Request of PIN change
*/
void sim_change_pin (U8 pin_id, U8 *old_pin, U8 *new_pin)
{
TRACE_FUNCTION("sim_change_pin()");
pin_ident = pin_id;
switch (pin_id)
{
case MFW_SIM_PIN1:
sAT_PlusCPWD(CMD_SRC_LCL, CPWD_FAC_Sc,
(char *)old_pin, (char *)new_pin);
break;
case MFW_SIM_PIN2:
sAT_PlusCPWD(CMD_SRC_LCL, CPWD_FAC_P2,
(char *)old_pin, (char *)new_pin);
break;
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_ok_cpinc |
+--------------------------------------------------------------------+
PURPOSE : Notify successful end of PIN change
*/
void sim_ok_cpinc (void)
{
TRACE_FUNCTION("sim_ok_cpinc()");
sim_status.sim_procedure = MFW_SIM_CHANGE;
sim_status.sim_status = MFW_SIM_SUCCESS;
sim_status.sim_operation_mode = sim_config.oper_mode;
sim_status.sim_pin_retries = 0;
sim_status.sim_status_type = pin_ident;
pin_ident = MFW_SIM_UNKNOWN;
sim_signal(E_SIM_STATUS,&sim_status);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_error_cpinc |
+--------------------------------------------------------------------+
PURPOSE : Notify failed PIN change
*/
void sim_error_cpinc (void)
{
TRACE_FUNCTION("sim_error_cpinc()");
sim_status.sim_procedure = MFW_SIM_CHANGE;
sim_status.sim_status = MFW_SIM_FAILURE;
sim_status.sim_operation_mode = sim_config.oper_mode;
if (pin_ident EQ MFW_SIM_PIN1)
sim_status.sim_pin_retries = sim_pin_count(MFW_SIM_PIN1);
else if (pin_ident EQ MFW_SIM_PIN2)
sim_status.sim_pin_retries = sim_pin_count(MFW_SIM_PIN2);
else
sim_status.sim_pin_retries = 0;
sim_status.sim_status_type = pin_ident;
pin_ident = MFW_SIM_UNKNOWN;
sim_signal(E_SIM_STATUS,&sim_status);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_disable_pin |
+--------------------------------------------------------------------+
PURPOSE : Request PIN disability.SPR 2145 now returns status
*/
T_MFW sim_disable_pin (U8 *pin)
{
TRACE_FUNCTION("sim_disable_pin()");
return ss_set_clck(CLCK_FAC_Sc, CLCK_MOD_Unlock,
(char *)pin, -1, MFW_SIM_CPIND);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_ok_cpind |
+--------------------------------------------------------------------+
PURPOSE : Successful end of PIN disability
*/
void sim_ok_cpind (void)
{
TRACE_FUNCTION("sim_ok_cpind()");
sim_status.sim_procedure = MFW_SIM_DISABLE;
sim_status.sim_status = MFW_SIM_SUCCESS;
sim_status.sim_operation_mode = sim_config.oper_mode;
sim_status.sim_pin_retries = 0;
sim_status.sim_status_type = MFW_SIM_UNKNOWN; // no indication
pin1_set = MFW_SIM_DISABLE;
sim_signal(E_SIM_STATUS,&sim_status);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_error_cpind |
+--------------------------------------------------------------------+
PURPOSE : Failed PIN disability
*/
void sim_error_cpind (void)
{
TRACE_FUNCTION("sim_error_cpind()");
sim_status.sim_procedure = MFW_SIM_DISABLE;
sim_status.sim_status = MFW_SIM_FAILURE;
sim_status.sim_operation_mode = sim_config.oper_mode;
sim_status.sim_pin_retries = sim_pin_count(MFW_SIM_PIN1);
sim_status.sim_status_type = MFW_SIM_UNKNOWN; // no indication
sim_signal(E_SIM_STATUS,&sim_status);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_enable_pin |
+--------------------------------------------------------------------+
PURPOSE : Request PIN enability. SPR 2145 now returns status
*/
T_MFW sim_enable_pin (U8 *pin)
{
TRACE_FUNCTION("sim_enable_pin()");
return ss_set_clck(CLCK_FAC_Sc, CLCK_MOD_Lock,
(char *)pin, -1, MFW_SIM_CPINE);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_ok_cpine |
+--------------------------------------------------------------------+
PURPOSE : Successful end of PIN enability
*/
void sim_ok_cpine()
{
TRACE_FUNCTION("sim_ok_cpine()");
sim_status.sim_procedure = MFW_SIM_ENABLE;
sim_status.sim_status = MFW_SIM_SUCCESS;
sim_status.sim_operation_mode = sim_config.oper_mode;
sim_status.sim_pin_retries = 0;
sim_status.sim_status_type = MFW_SIM_UNKNOWN; // no indication
pin1_set = MFW_SIM_ENABLE;
sim_signal(E_SIM_STATUS,&sim_status);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_error_cpine |
+--------------------------------------------------------------------+
PURPOSE : Failed PIN enability
*/
void sim_error_cpine (void)
{
TRACE_FUNCTION("sim_error_cpine()");
sim_status.sim_procedure = MFW_SIM_ENABLE;
sim_status.sim_status = MFW_SIM_FAILURE;
sim_status.sim_operation_mode = sim_config.oper_mode;
sim_status.sim_pin_retries = sim_pin_count(MFW_SIM_PIN1);
sim_status.sim_status_type = MFW_SIM_UNKNOWN; // no indication
sim_signal(E_SIM_STATUS,&sim_status);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_check_service |
+--------------------------------------------------------------------+
PURPOSE : Checks a service status
*/
U8 sim_check_service (U8 nr, U8 *serv_table)
{
U8 value;
TRACE_FUNCTION("sim_check_service()");
value = *(serv_table + (nr - 1) / 4);
value >>= ((nr - 1) & 3) * 2;
return (value & 3);
}
/*
+-----------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_serv_table_check |
+-----------------------------------------------------------------------+
PURPOSE : Checks a service status in SIM service table
*/
T_MFW sim_serv_table_check(UBYTE serv_num)
{
TRACE_FUNCTION("sim_serv_table_check()");
return sim_check_service(serv_num, sim_service_table);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : rAT_PlusCFUNP |
+--------------------------------------------------------------------+
PURPOSE : MMI relevant parameters from the SIM card
*/
void rAT_PlusCFUNP (T_SIM_MMI_INSERT_IND *mmi_insert_ind)
{
TRACE_FUNCTION("rAT_PlusCFUNP()");
sim_stat = SIM_ACTIVE;
sim_config.oper_mode = mmi_insert_ind->func;
nm_mmi_parameters(&mmi_insert_ind->imsi_field,
&mmi_insert_ind->pref_plmn);
memcpy(sim_service_table,mmi_insert_ind->sim_serv,
sizeof(sim_service_table));
sim_config.phase = mmi_insert_ind->phase;
sim_config.access_acm = mmi_insert_ind->access_acm;
sim_config.access_acmmax = mmi_insert_ind->access_acmmax;
sim_config.access_puct = mmi_insert_ind->access_puct;
if (sim_check_service(15,sim_service_table)
== ALLOCATED_AND_ACTIVATED)
sim_read_sim(SIM_GID1, NOT_PRESENT_8BIT, 5);
#ifdef BMI_TEST_MC_SIM_EVENT
TRACE_EVENT("Reading SIM_ICCID");
sim_read_sim(SIM_ICCID, NOT_PRESENT_8BIT, 5);
#endif
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_mmi_parameter |
+--------------------------------------------------------------------+
PURPOSE : MMI relevant parameters from the SIM card
*/
void sim_mmi_parameter(T_SIM_ACTIVATE_CNF *sim_act_cnf)
{
TRACE_FUNCTION("sim_mmi_parameter()");
memcpy( sim_config.pref_lang, sim_act_cnf->pref_lang, 5);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_gid1_cnf |
+--------------------------------------------------------------------+
PURPOSE : read SIM group identifier 1 from SIM card
*/
void sim_gid1_cnf(SHORT error, UBYTE *data)
{
TRACE_FUNCTION("sim_gid1_cnf()");
if (error EQ SIM_NO_ERROR)
memcpy(sim_config.sim_gidl1, data, 5);
if (!sat_update)
{
if (sim_check_service(16,sim_service_table)
== ALLOCATED_AND_ACTIVATED)
sim_read_sim(SIM_GID2, NOT_PRESENT_8BIT, 5);
}
#ifdef SIM_TOOLKIT
else
{
sat_update = FALSE;
satUpdateFiles ( TRUE, SIM_GID1 );
}
#endif
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_gid2_cnf |
+--------------------------------------------------------------------+
PURPOSE : read SIM group identifier 2 from SIM card
*/
void sim_gid2_cnf(SHORT error, UBYTE *data)
{
TRACE_FUNCTION("sim_gid2_cnf()");
if (error EQ SIM_NO_ERROR)
memcpy(sim_config.sim_gidl2, data, 5);
#ifdef SIM_TOOLKIT
if ( sat_update )
{
sat_update = FALSE;
satUpdateFiles ( TRUE, SIM_GID2 );
}
#endif
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_save_pref_lang |
+--------------------------------------------------------------------+
PURPOSE : save preferred language
*/
void sim_save_pref_lang (UBYTE *lang, UBYTE len)
{
UBYTE sim_data[7];
UBYTE i;
TRACE_FUNCTION("sim_save_pref_lang()");
//
// copy a maximum of 5 bytes for storing on the SIM card
//
for (i=0;i<len AND i<5;i++)
sim_data[i] = lang[i];
//
// if less than 5 bytes fill with dummy values
//
for (i=len; i<5;i++)
sim_data[i] = 0xFF;
//
// write to the SIM card
//
sim_write_sim(SIM_LP, sim_data, 5);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -