📄 mfw_ss.c
字号:
case KSD_CMD_CW:
ss_signal(E_SS_CW_CNF, &cw_cnf);
break;
case KSD_CMD_PWD:
if (!pwd_flag)
ss_signal(E_SS_GET_PW, &pw_cnf);
if (pwd_flag == 1)
{
pwd_flag = 0;
sim_error_cpinc();
}
break;
case KSD_CMD_UBLK:
sim_ss_unblock(SIM_UBLK_ERROR, reason);
break;
case KSD_CMD_CL:
ss_signal(E_SS_CLI_CNF, &cli_cnf);
break;
case KSD_CMD_IMEI:
imei_info.error = MFW_SS_ERROR;
ss_signal(E_SS_IMEI, &imei_info);
break;
default:
break;
}
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_SS |
| STATE : code ROUTINE: ss_set_clck |
+--------------------------------------------------------------------+
PURPOSE : This function execute the facility lock command.
*/
T_MFW ss_set_clck(T_ACI_CLCK_FAC fac,
T_ACI_CLCK_MOD mode,
CHAR *passwd,
T_ACI_CLASS class_type,
UBYTE modul)
{
TRACE_EVENT("ss_set_clck()");
clck_flag = modul;
if (sAT_PlusCLCK(CMD_SRC_LCL, fac,mode, passwd, class_type) != AT_EXCT)
return MFW_SS_FAIL;
return MFW_SS_OK;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SS |
| STATE : code ROUTINE : ss_ok_clck |
+--------------------------------------------------------------------+
PURPOSE : The executing of the facility lock command is successful.
*/
void ss_ok_clck()
{
TRACE_FUNCTION("ss_ok_clck()");
switch (clck_flag)
{
case MFW_PHB:
phb_ok_clck();
break;
case MFW_SIM_CPIND:
sim_ok_cpind();
break;
case MFW_SIM_CPINE:
sim_ok_cpine();
break;
}
clck_flag = MFW_MODUL_UNKNOWN;
}
/*
+--------------------------------------------------------------------+
| PROJECT : MMI-Framework (8417) MODULE : MFW_SS |
| STATE : code ROUTINE : ss_error_clck |
+--------------------------------------------------------------------+
PURPOSE : The executing of the facility lock command is failed.
*/
void ss_error_clck()
{
TRACE_FUNCTION("ss_error_clck()");
switch (clck_flag)
{
case MFW_PHB:
phb_error_clck();
break;
case MFW_SIM_CPIND:
sim_error_cpind();
break;
case MFW_SIM_CPINE:
sim_error_cpine();
break;
}
clck_flag = MFW_MODUL_UNKNOWN;
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_DMY |
| STATE : code ROUTINE: ss_send_ussd |
+--------------------------------------------------------------------+
PURPOSE : Send USSD string.
Note: ASCII is not allowed to use.
*/
T_MFW ss_send_ussd(T_MFW_SS_USSD *ussd_info)
{
T_ACI_USSD_DATA str;
T_ACI_RETURN res;
TRACE_FUNCTION("ss_send_ussd()");
if (!ussd_info->len OR !ussd_info->ussd)
return MFW_SS_FAIL;
if (ussd_info->dcs == MFW_ASCII)
return MFW_SS_FAIL;
if (ussd_info->len > MAX_USSD_LEN)
{
str.len = MAX_USSD_LEN;
memcpy(str.data, ussd_info->ussd, MAX_USSD_LEN);
}
else
{
str.len = ussd_info->len;
memcpy(str.data, ussd_info->ussd, ussd_info->len);
}
res = sAT_PlusCUSD(CMD_SRC_LCL, &str, (SHORT)ussd_info->dcs);
if ((res != AT_EXCT) AND (res != AT_CMPL))
return MFW_SS_FAIL;
return MFW_SS_OK;
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_DMY |
| STATE : code ROUTINE: rAT_PlusCUSD |
+--------------------------------------------------------------------+
PURPOSE : Notify or response for USSD from ACI
*/
void rAT_PlusCUSD(T_ACI_CUSD_MOD m, T_ACI_USSD_DATA *ussd, SHORT dcs)
{
TRACE_FUNCTION("rAT_PlusCUSD()");
ussd_info.len = ussd->len;
memcpy(ussd_info.ussd, ussd->data, sizeof(ussd_info.ussd));
ussd_info.dcs = dcs;
ussd_info.error = MFW_SS_NO_ERROR;
if (m == CUSD_MOD_YesActReq)
ss_signal(E_SS_USSD_REQ, &ussd_info);
if (m == CUSD_MOD_NoActReq)
ss_signal(E_SS_USSD_CNF, &ussd_info);
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_DMY |
| STATE : code ROUTINE: ss_ok_ussd |
+--------------------------------------------------------------------+
PURPOSE : USSD process is successful.
*/
void ss_ok_ussd(T_ACI_AT_CMD cmdId)
{
TRACE_FUNCTION("ss_ok_ussd()");
if (cmdId == KSD_CMD_USSD)
{
ussd_info.error = MFW_SS_NO_ERROR;
ss_signal(E_SS_USSD_CNF, &ussd_info);
}
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_SS |
| STATE : code ROUTINE: ss_error_ussd |
+--------------------------------------------------------------------+
PURPOSE : USSD process is failed.
*/
void ss_error_ussd(T_ACI_AT_CMD cmdId, T_ACI_CME_ERR reason)
{
TRACE_FUNCTION("ss_error_ussd()");
// ussd_info.error = ss_cvtErrCode(reason);
ss_signal(E_SS_USSD_CNF, &ussd_info);
}
/*
+---------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_SS |
| STATE : code ROUTINE: ss_abort_transaction |
+---------------------------------------------------------------------+
PURPOSE : Abort executing of SS transaction
*/
T_MFW ss_abort_transaction(void)
{
TRACE_FUNCTION("ss_abort_transaction()");
if (sAT_Abort(CMD_SRC_LCL, AT_CMD_CUSD) EQ AT_CMPL)
return TRUE;
else
{
if (sAT_Abort(CMD_SRC_LCL, AT_CMD_D) EQ AT_CMPL)
return TRUE;
}
return FALSE;
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_SS |
| STATE : code ROUTINE: ss_set_cug |
+--------------------------------------------------------------------+
PURPOSE : set parameter of close user group
*/
T_MFW_SS_RETURN ss_set_cug (T_MFW_SS_CUG_PARA *cug_param)
{
T_ACI_CCUG_MOD cug_mode = CCUG_MOD_NotPresent;
T_ACI_CCUG_IDX cug_index = CCUG_IDX_NotPresent;
T_ACI_CCUG_INFO cug_info = CCUG_INFO_NotPresent;
TRACE_FUNCTION("ss_set_cug()");
/* check cug mode */
switch(cug_param->mode)
{
case MFW_SS_CUG_TMP_DISABLE:
cug_mode = CCUG_MOD_DisableTmp;
break;
case MFW_SS_CUG_TMP_ENABLE:
cug_mode = CCUG_MOD_EnableTmp; /* enable to control cug info */
break;
default: /* ACI keep last valid value */
break;
}
/* check cug index */
switch(cug_param->index)
{
case MFW_SS_CUG_INDEX0:
cug_index = CCUG_IDX_0;
break;
case MFW_SS_CUG_INDEX1:
cug_index = CCUG_IDX_1;
break;
case MFW_SS_CUG_INDEX2:
cug_index = CCUG_IDX_2;
break;
case MFW_SS_CUG_INDEX3:
cug_index = CCUG_IDX_3;
break;
case MFW_SS_CUG_INDEX4:
cug_index = CCUG_IDX_4;
break;
case MFW_SS_CUG_INDEX5:
cug_index = CCUG_IDX_5;
break;
case MFW_SS_CUG_INDEX6:
cug_index = CCUG_IDX_6;
break;
case MFW_SS_CUG_INDEX7:
cug_index = CCUG_IDX_7;
break;
case MFW_SS_CUG_INDEX8:
cug_index = CCUG_IDX_8;
break;
case MFW_SS_CUG_INDEX9:
cug_index = CCUG_IDX_9;
break;
case MFW_SS_CUG_NO_INDEX:
cug_index = CCUG_IDX_No; /* preferred CUG taken from subscriber data */
break;
default: /* ACI keep last valid value */
break;
}
/* check cug info */
switch(cug_param->info)
{
case MFW_SS_CUG_SUPP_OA:
cug_info = CCUG_INFO_SuppOa; /* suppress outgoing access */
break;
case MFW_SS_CUG_SUPP_PREF:
cug_info = CCUG_INFO_SuppPrefCug; /* suppress preferential closed user group */
break;
case MFW_SS_CUG_SUPP_BOTH:
cug_info = CCUG_INFO_SuppBoth; /* suppress outgoing access and preferential cug */
break;
case MFW_SS_CUG_INFO_NO: /* no cug info */
cug_info = CCUG_INFO_No;
break;
default: /* ACI keep last valid value */
break;
}
if(sAT_PlusCCUG(CMD_SRC_LCL,cug_mode,cug_index,cug_info) EQ AT_CMPL) /* set in ACI cug parameters */
return MFW_SS_OK;
else
return MFW_SS_FAIL;
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_SS |
| STATE : code ROUTINE: ss_get_cug |
+--------------------------------------------------------------------+
PURPOSE : get parameter of close user group
*/
T_MFW_SS_RETURN ss_get_cug(T_MFW_SS_CUG_PARA *cug_param)
{
T_ACI_CCUG_MOD cug_mode;
T_ACI_CCUG_IDX cug_index;
T_ACI_CCUG_INFO cug_info;
cug_param->mode = MFW_SS_CUG_MODE_Not_Present;
cug_param->index = MFW_SS_CUG_INDEX_Not_Present;
cug_param->info = MFW_SS_CUG_INFO_Not_Present;
TRACE_FUNCTION("ss_get_cug()");
if(qAT_PlusCCUG(CMD_SRC_LCL,&cug_mode,&cug_index,&cug_info) NEQ AT_CMPL) /* get cug parameters of ACI */
return MFW_SS_FAIL;
else
{
cug_param->mode = cug_mode;
cug_param->index = cug_index;
cug_param->info = cug_info;
return MFW_SS_OK;
}
}
//PATCH TB 1309
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_SS |
| STATE : code ROUTINE: ss_command_abort |
+--------------------------------------------------------------------+
PURPOSE :
*/
T_MFW ss_command_abort(void)
{
TRACE_FUNCTION ("ss_command_abort()");
// Abort SS transaction.
// Any SS AT_CMD will clear all SS (any) transaction(s)
if (sAT_Abort(CMD_SRC_LCL, AT_CMD_CUSD) == AT_CMPL)
return TRUE;
else
return FALSE;
}
//END PATCH TB
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -