📄 mfw_sim.~c
字号:
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
*/
void sim_disable_pin (U8 *pin)
{
TRACE_FUNCTION("sim_disable_pin()");
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
*/
void sim_enable_pin (U8 *pin)
{
TRACE_FUNCTION("sim_enable_pin()");
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;
// sms_mmi_parameter(mmi_insert_ind->cbmid);
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));
//memcpy(sim_config.deper_key,mmi_insert_ind->deper_key,
// sizeof(sim_config.deper_key));
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;
// sim_init_sim_insert();
if (sim_check_service(15,sim_service_table)
== ALLOCATED_AND_ACTIVATED)
sim_read_sim(SIM_GID1, NOT_PRESENT_8BIT, 5);
}
/*
+--------------------------------------------------------------------+
| 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);
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : rAT_PercentSIMREM |
+--------------------------------------------------------------------+
PURPOSE : call back for SIM removed
*/
void rAT_PercentSIMREM( T_ACI_SIMREM_TYPE srType )
{
TRACE_FUNCTION("rAT_PercentSIMREM()");
if ( srType EQ SIMREM_FAILURE )
{
sim_status.sim_procedure = MFW_SIM_REMOVED;
sim_status.sim_status = MFW_SIM_NO_SIM_CARD;
sim_status.sim_operation_mode = sim_config.oper_mode;
sim_status.sim_pin_retries = 0;
sim_status.sim_status_type = MFW_SIM_UNKNOWN;
sim_stat = SIM_NOT_ACTIVE;
sim_signal(E_SIM_STATUS,&sim_status);
}
else if ( srType EQ SIMREM_RESET )
{
#ifdef SIM_TOOLKIT
sim_signal(E_SIM_RESET, 0);
#endif
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : rAT_percentSIMINS |
+--------------------------------------------------------------------+
PURPOSE : call back for SIM inserted
*/
void rAT_PercentSIMINS( T_ACI_CME_ERR err )
{
TRACE_FUNCTION("rAT_percentSIMINS()");
sim_signal(E_SIM_INSERTED, 0);
switch ( err )
{
case CME_ERR_SimPinReq:
sim_status.sim_status = MFW_SIM_PIN_REQ;
sim_status.sim_pin_retries = sim_pin_count(MFW_SIM_PIN1);
sim_status.sim_status_type = MFW_SIM_PIN1;
sim_stat = SIM_ACTIVE;
sim_signal(E_SIM_STATUS, &sim_status);
break;
case CME_ERR_SimPukReq:
sim_status.sim_status = MFW_SIM_PUK_REQ;
sim_status.sim_pin_retries = sim_pin_count(MFW_SIM_PUK1);
sim_status.sim_status_type = MFW_SIM_PUK1;
sim_stat = SIM_ACTIVE;
sim_signal(E_SIM_STATUS, &sim_status);
break;
default:
break;
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_configuration |
+--------------------------------------------------------------------+
PURPOSE : Request the configuration of SIM card
*/
UBYTE sim_cvt_access_status(UBYTE acs)
{
TRACE_FUNCTION("sim_cvt_access_status()");
switch(acs)
{
case ACCESS_ALWAYS: return MFW_SIM_NO_PIN;
case ACCESS_PIN_1: return MFW_SIM_PIN1;
case ACCESS_PIN_2: return MFW_SIM_PIN2;
default: return MFW_SIM_UNKNOWN;
}
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SIM |
| STATE : code ROUTINE : sim_configuration |
+--------------------------------------------------------------------+
PURPOSE : Request the configuration of SIM card
*/
MfwRes sim_configuration (U8 *phase, U8 *serv, U8 *slen,
U8 *lang, U8 *llen,
T_MFW_AOC_ACCESS *access)
{
U8 l;
TRACE_FUNCTION("sim_configuration()");
//PATCH2 TB 1310: Add test of NULL parameter to avoid to declare parameter of unwanted data
if (sim_stat != SIM_ACTIVE)
return MFW_SIM_FAILURE;
if (phase != NULL)
*phase = sim_config.phase;
if ((serv != NULL) && (slen != NULL))
{
l = sizeof(sim_service_table);
if (l < *slen)
*slen = l;
memcpy(serv,sim_service_table,*slen);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -