📄 mfw_ss.c
字号:
cb_cnf.ss_telecom_count = idx;
break;
case KSD_CMD_CF:
TRACE_EVENT("KSD_CMD_CF");
TRACE_EVENT_P1("ksStat->ir.rKSCF.ssCd %d", ksStat->ir.rKSCF.ssCd);
TRACE_EVENT_P1("ksStat->ir.rKSCF.opCd %d", ksStat->ir.rKSCF.opCd);
TRACE_EVENT_P1("ksStat->ir.rKSCF.ssErr %d", ksStat->ir.rKSCF.ssErr);
TRACE_EVENT_P1("ksStat->ir.rKSCF.c_cfFeatLst %d", ksStat->ir.rKSCF.c_cfFeatLst);
if (ksStat->ir.rKSCF.c_cfFeatLst)
{
int i;
for (i = 0; i < ksStat->ir.rKSCF.c_cfFeatLst; i++)
{
TRACE_EVENT_P2("ksStat->ir.rKSCF.cfFeatLst[%d].bsTp %d", i, ksStat->ir.rKSCF.cfFeatLst[i].bsTp);
TRACE_EVENT_P2("ksStat->ir.rKSCF.cfFeatLst[%d].bsCd %d", i, ksStat->ir.rKSCF.cfFeatLst[i].bsCd);
TRACE_EVENT_P2("ksStat->ir.rKSCF.cfFeatLst[%d].ssSt %d", i, ksStat->ir.rKSCF.cfFeatLst[i].ssSt);
TRACE_EVENT_P2("ksStat->ir.rKSCF.cfFeatLst[%d].num %s", i, ksStat->ir.rKSCF.cfFeatLst[i].num);
TRACE_EVENT_P2("ksStat->ir.rKSCF.cfFeatLst[%d].ton 0x%02X", i, ksStat->ir.rKSCF.cfFeatLst[i].ton);
TRACE_EVENT_P2("ksStat->ir.rKSCF.cfFeatLst[%d].npi 0x%02X", i, ksStat->ir.rKSCF.cfFeatLst[i].npi);
TRACE_EVENT_P2("ksStat->ir.rKSCF.cfFeatLst[%d].sub %s", i, ksStat->ir.rKSCF.cfFeatLst[i].sub);
TRACE_EVENT_P2("ksStat->ir.rKSCF.cfFeatLst[%d].tos 0x%02X", i, ksStat->ir.rKSCF.cfFeatLst[i].tos);
TRACE_EVENT_P2("ksStat->ir.rKSCF.cfFeatLst[%d].oe 0x%02X", i, ksStat->ir.rKSCF.cfFeatLst[i].oe);
TRACE_EVENT_P2("ksStat->ir.rKSCF.cfFeatLst[%d].time 0x%02X", i, ksStat->ir.rKSCF.cfFeatLst[i].time);
}
}
p_feat = (T_MFW_FEATURE *) ssLstBuf;
cf_cnf.ss_code = ss_cvtSCode(ksStat->ir.rKSCF.ssCd);
cf_cnf.ss_category = ss_cvtOCode(ksStat->ir.rKSCF.opCd);
cf_cnf.ss_error = ss_cvtErrCode(ksStat->ir.rKSCF.ssErr);
cf_cnf.ss_feature_list = p_feat;
for( idx = 0;
idx < ksStat->ir.rKSCF.c_cfFeatLst AND
idx < MFW_MAX_FEAT_NR;
idx++, p_feat++ )
{
p_feat->ss_telecom_type = ksStat->ir.rKSCF.
cfFeatLst[idx].bsTp;
p_feat->ss_telecom_service = ksStat->ir.rKSCF.
cfFeatLst[idx].bsCd;
p_feat->ss_status = ksStat->ir.rKSCF.cfFeatLst[idx].ssSt;
p_feat->ss_numbering_type = phb_cvtTon(ksStat->ir.rKSCF.
cfFeatLst[idx].ton);
p_feat->ss_numbering_plan = phb_cvtNpi(ksStat->ir.rKSCF.
cfFeatLst[idx].npi);
strncpy((char *)p_feat->ss_forwarded_to_number,
(char *)ksStat->ir.rKSCF.cfFeatLst[idx].num,
MFW_SS_NUM_LEN);
strncpy((char *)p_feat->ss_forwarded_to_subaddress,
(char *)ksStat->ir.rKSCF.cfFeatLst[idx].sub,
MFW_SS_SUBADR_LEN);
p_feat->ss_no_reply_condition_time = ksStat->ir.rKSCF.
cfFeatLst[idx].time;
}
cf_cnf.ss_feature_count = idx;
break;
case KSD_CMD_CL:
TRACE_EVENT("KSD_CMD_CL");
TRACE_EVENT_P1("ksStat->ir.rKSCL.ssCd %d", ksStat->ir.rKSCL.ssCd);
TRACE_EVENT_P1("ksStat->ir.rKSCL.opCd %d", ksStat->ir.rKSCL.opCd);
TRACE_EVENT_P1("ksStat->ir.rKSCL.ssErr %d", ksStat->ir.rKSCL.ssErr);
TRACE_EVENT_P1("ksStat->ir.rKSCL.ssSt %d", ksStat->ir.rKSCL.ssSt);
TRACE_EVENT_P1("ksStat->ir.rKSCL.mode %d", ksStat->ir.rKSCL.mode);
TRACE_EVENT_P1("ksStat->ir.rKSCL.clirOpt %d", ksStat->ir.rKSCL.clirOpt);
TRACE_EVENT_P1("ksStat->ir.rKSCL.ovrdCtg %d", ksStat->ir.rKSCL.ovrdCtg);
cli_cnf.ss_code = ss_cvtSCode(ksStat->ir.rKSCL.ssCd);
cli_cnf.ss_category = ss_cvtOCode(ksStat->ir.rKSCL.opCd);
cli_cnf.ss_error = ss_cvtErrCode(ksStat->ir.rKSCL.ssErr);
cli_cnf.ss_status = ksStat->ir.rKSCL.ssSt;
cli_cnf.ss_clir_option = ss_cvtCLStatus(ksStat->ir.rKSCL.clirOpt);
cli_cnf.ss_ovrd_ctgry = ss_cvtCLOvrd(ksStat->ir.rKSCL.ovrdCtg);
break;
case KSD_CMD_CW:
TRACE_EVENT("KSD_CMD_CW");
TRACE_EVENT_P1("ksStat->ir.rKSCW.ssCd %d", ksStat->ir.rKSCW.ssCd);
TRACE_EVENT_P1("ksStat->ir.rKSCW.opCd %d", ksStat->ir.rKSCW.opCd);
TRACE_EVENT_P1("ksStat->ir.rKSCW.ssErr %d", ksStat->ir.rKSCW.ssErr);
TRACE_EVENT_P1("ksStat->ir.rKSCW.ssSt %d", ksStat->ir.rKSCW.ssSt);
TRACE_EVENT_P1("ksStat->ir.rKSCW.c_cwBSGLst %d", ksStat->ir.rKSCW.c_cwBSGLst);
if (ksStat->ir.rKSCW.c_cwBSGLst)
{
int i;
for (i = 0; i < ksStat->ir.rKSCW.c_cwBSGLst; i++)
{
TRACE_EVENT_P2("ksStat->ir.rKSCW.cwBSGLst[%d].bsTp %d", i, ksStat->ir.rKSCW.cwBSGLst[i].bsTp);
TRACE_EVENT_P2("ksStat->ir.rKSCW.cwBSGLst[%d].bsCd %d", i, ksStat->ir.rKSCW.cwBSGLst[i].bsCd);
}
}
p_srv = (T_MFW_SRV_GROUP *) ssLstBuf;
cw_cnf.ss_code = ss_cvtSCode(ksStat->ir.rKSCW.ssCd);
cw_cnf.ss_category = ss_cvtOCode(ksStat->ir.rKSCW.opCd);
cw_cnf.ss_error = ss_cvtErrCode(ksStat->ir.rKSCW.ssErr);
cw_cnf.ss_status = ksStat->ir.rKSCW.ssSt;
cw_cnf.ss_service_list = p_srv;
for( idx = 0;
idx < ksStat->ir.rKSCW.c_cwBSGLst AND
idx < MFW_MAX_SRV_NR;
idx++, p_srv++ )
{
p_srv->ss_telecom_type = ksStat->ir.rKSCW.
cwBSGLst[idx].bsTp;
p_srv->ss_telecom_service = ksStat->ir.rKSCW.
cwBSGLst[idx].bsCd;
}
cw_cnf.ss_service_count = idx;
break;
case KSD_CMD_PWD:
TRACE_EVENT("KSD_CMD_PWD");
TRACE_EVENT_P1("ksStat->ir.rKSPW.ssCd %d", ksStat->ir.rKSPW.ssCd);
TRACE_EVENT_P1("ksStat->ir.rKSPW.opCd %d", ksStat->ir.rKSPW.opCd);
TRACE_EVENT_P1("ksStat->ir.rKSPW.ssErr %d", ksStat->ir.rKSPW.ssErr);
TRACE_EVENT_P1("ksStat->ir.rKSPW.newPwd %s", ksStat->ir.rKSPW.newPwd);
pw_cnf.ss_code = ss_cvtSCode(ksStat->ir.rKSPW.ssCd);
pw_cnf.ss_category = ss_cvtOCode(ksStat->ir.rKSPW.opCd);
pw_cnf.ss_error = ss_cvtErrCode(ksStat->ir.rKSPW.ssErr);
strncpy( (char *)pw_cnf.ss_new_pwd, (char *)ksStat->ir.rKSPW.newPwd,
MFW_SS_PWD_LEN);
break;
case KSD_CMD_IMEI:
TRACE_EVENT("KSD_CMD_IMEI");
TRACE_EVENT_P1("ksStat->ir.rKSIMEI.tac1 %d", ksStat->ir.rKSIMEI.tac1);
TRACE_EVENT_P1("ksStat->ir.rKSIMEI.tac2 %d", ksStat->ir.rKSIMEI.tac2);
TRACE_EVENT_P1("ksStat->ir.rKSIMEI.tac3 %d", ksStat->ir.rKSIMEI.tac3);
TRACE_EVENT_P1("ksStat->ir.rKSIMEI.fac %d", ksStat->ir.rKSIMEI.fac);
TRACE_EVENT_P1("ksStat->ir.rKSIMEI.snr1 %d", ksStat->ir.rKSIMEI.snr1);
TRACE_EVENT_P1("ksStat->ir.rKSIMEI.snr2 %d", ksStat->ir.rKSIMEI.snr2);
TRACE_EVENT_P1("ksStat->ir.rKSIMEI.snr3 %d", ksStat->ir.rKSIMEI.snr3);
TRACE_EVENT_P1("ksStat->ir.rKSIMEI.svn %d", ksStat->ir.rKSIMEI.svn);
TRACE_EVENT_P1("ksStat->ir.rKSIMEI.cd %d", ksStat->ir.rKSIMEI.cd);
ss_decode_imei(ksStat);
imei_info.error = MFW_SS_NO_ERROR;
ss_signal(E_SS_IMEI, &imei_info);
break;
case KSD_CMD_USSD:
TRACE_EVENT("KSD_CMD_USSD");
TRACE_EVENT_P1("ksStat->ir.rKSUS.ussd %s", ksStat->ir.rKSUS.ussd);
TRACE_EVENT_P1("ksStat->ir.rKSUS.dcs 0x%02X", ksStat->ir.rKSUS.dcs);
TRACE_EVENT_P1("ksStat->ir.rKSUS.mode %d", ksStat->ir.rKSUS.mode);
TRACE_EVENT_P1("ksStat->ir.rKSUS.ssErr %d", ksStat->ir.rKSUS.ssErr);
memset(&ussd_info, 0, sizeof(ussd_info));
//Glowing,2004-07-31,import from tcs2112v2obj
ussd_info.len = ksStat->ir.rKSUS.len;
//ussd_info.len = strlen((char *)ksStat->ir.rKSUS.ussd);
strcpy((char*)ussd_info.ussd, (char *)ksStat->ir.rKSUS.ussd);
//Glowing,2004-07-31, import from tcs2112v2obj
//ussd_info.dcs = MFW_ASCII;
if (ksStat->ir.rKSUS.dcs != ACI_NumParmNotPresent)
ussd_info.dcs = ksStat->ir.rKSUS.dcs;
else
ussd_info.dcs = MFW_ASCII;
ussd_info.error = ss_cvtErrCode(ksStat->ir.rKSUS.ssErr);
break;
default:
TRACE_EVENT("default");
break;
}
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_SS |
| STATE : code ROUTINE: ss_command_info |
+--------------------------------------------------------------------+
PURPOSE : Notify for send a SS string from ACI
*/
void ss_command_info(T_ACI_CLOG* cmd)
{
TRACE_FUNCTION("ss_command_info()");
switch (cmd->atCmd)
{
case KSD_CMD_CB:
ss_res.type = ss_cvtSCode(cmd->cmdPrm.sKSCB.ssCd);
ss_res.category = ss_cvtOCode(cmd->cmdPrm.sKSCB.opCd);
if( cmd->cmdPrm.sKSCB.pwd )
strncpy(ss_res.ppn, (char *)cmd->cmdPrm.sKSCB.pwd,
MAX_PWD_LEN);
else
ss_res.ppn[0] = 0;
ss_res.pwd[0] = 0;
ss_res.bs = cmd->cmdPrm.sKSCB.bsCd;
ss_res.time = 0;
ss_signal(E_SS_RES, &ss_res);
break;
case KSD_CMD_CF:
ss_res.type = ss_cvtSCode(cmd->cmdPrm.sKSCF.ssCd);
ss_res.category = ss_cvtOCode(cmd->cmdPrm.sKSCF.opCd);
ss_res.ppn[0] = 0;
ss_res.pwd[0] = 0;
ss_res.bs = cmd->cmdPrm.sKSCF.bsCd;
ss_res.time = cmd->cmdPrm.sKSCF.time;
ss_signal(E_SS_RES, &ss_res);
break;
case KSD_CMD_CW:
ss_res.type = SS_CW;
ss_res.category = ss_cvtOCode(cmd->cmdPrm.sKSCW.opCd);
ss_res.ppn[0] = 0;
ss_res.pwd[0] = 0;
ss_res.bs = cmd->cmdPrm.sKSCW.bsCd;
ss_res.time = 0;
ss_signal(E_SS_RES, &ss_res);
break;
case KSD_CMD_PWD:
switch(cmd->cmdPrm.sKSPW.ssCd)
{
case KSD_SS_CCBS:
case KSD_SS_ALL_CBSS:
case KSD_SS_BOC:
case KSD_SS_BAOC:
case KSD_SS_BOIC:
case KSD_SS_BOICXH:
case KSD_SS_BIC:
case KSD_SS_BAIC:
case KSD_SS_BICRM:
/*NM 190602*/
case KSD_SS_ALL_SERV :
ss_res.type = ss_cvtSCode(cmd->cmdPrm.sKSPW.ssCd);
ss_res.category = SS_REGISTRATION;
if( cmd->cmdPrm.sKSPW.oldPwd )
strncpy(ss_res.ppn, (char *)cmd->cmdPrm.sKSPW.oldPwd,
MAX_PWD_LEN);
else
ss_res.ppn[0] = 0;
if( cmd->cmdPrm.sKSPW.newPwd )
strncpy(ss_res.pwd, (char *)cmd->cmdPrm.sKSPW.newPwd,
MAX_PWD_LEN);
else
ss_res.pwd[0] = 0;
ss_res.bs = 0;
ss_res.time = 0;
ss_signal(E_SS_RES, &ss_res);
break;
case KSD_SS_PIN1:
pwd_flag = 1;
sim_pin_ident(MFW_SIM_PIN1);
break;
case KSD_SS_PIN2:
pwd_flag = 1;
sim_pin_ident(MFW_SIM_PIN2);
break;
}
break;
case KSD_CMD_UBLK:
switch(cmd->cmdPrm.sKSPW.ssCd)
{
case KSD_SS_PIN1:
pwd_flag = 1;
sim_pin_ident(MFW_SIM_PUK1);
break;
case KSD_SS_PIN2:
pwd_flag = 1;
sim_pin_ident(MFW_SIM_PUK2);
break;
}
break;
case KSD_CMD_CL:
ss_res.type = ss_cvtSCode(cmd->cmdPrm.sKSCL.ssCd);
ss_res.category = ss_cvtOCode(cmd->cmdPrm.sKSCL.opCd);
ss_res.ppn[0] = 0;
ss_res.pwd[0] = 0;
ss_res.bs = 0;
ss_res.time = 0;
ss_signal(E_SS_RES, &ss_res);
break;
case KSD_CMD_USSD:
memset(&ussd_info, 0, sizeof(ussd_info));
if( cmd->cmdPrm.sKSUS.ussd )
{
ussd_info.len = strlen((char *)cmd->cmdPrm.sKSUS.ussd);
strcpy((char*)ussd_info.ussd, (char *)cmd->cmdPrm.sKSUS.ussd);
}
else
ussd_info.ussd[0] = 0;
ussd_info.dcs = MFW_ASCII;
//PATCH TB 1509
ss_res.type = SS_USSD;
ss_res.category = SS_CTG_UNKNOWN;
ss_res.ppn[0] = 0;
ss_res.pwd[0] = 0;
ss_res.bs = 0;
ss_res.time = 0;
ss_signal(E_SS_RES, &ss_res);
//END PATCH TB
break;
case AT_CMD_CUSD:
memset(&ussd_info, 0, sizeof(ussd_info));
ussd_info.len = cmd->cmdPrm.sCUSD.str->len;
memcpy((char*)ussd_info.ussd, cmd->cmdPrm.sCUSD.str->data, cmd->cmdPrm.sCUSD.str->len);
ussd_info.dcs = cmd->cmdPrm.sCUSD.dcs;
/* SPR#CQ3204 -JVJ - USSD call back sent to MMI */
ss_res.type = SS_USSD;
ss_res.category = SS_CTG_UNKNOWN;
ss_res.ppn[0] = 0;
ss_res.pwd[0] = 0;
ss_res.bs = 0;
ss_res.time = 0;
ss_signal(E_SS_RES, &ss_res);
/* SPR#CQ3204 -JVJ */
break;
default:
break;
}
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_SS |
| STATE : code ROUTINE: ss_ok_string |
+--------------------------------------------------------------------+
PURPOSE : Send of SS string is successful.
*/
void ss_ok_string(T_ACI_AT_CMD cmdId)
{
TRACE_FUNCTION("ss_ok_string()");
switch (cmdId)
{
case KSD_CMD_CB:
ss_signal(E_SS_CB_CNF, &cb_cnf);
break;
case KSD_CMD_CF:
ss_signal(E_SS_CF_CNF, &cf_cnf);
break;
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_ok_cpinc();
}
break;
case KSD_CMD_UBLK:
sim_ss_unblock(SIM_UBLK_OK, CME_ERR_NotPresent);
break;
case KSD_CMD_CL:
ss_signal(E_SS_CLI_CNF, &cli_cnf);
break;
case KSD_CMD_IMEI:
imei_info.error = MFW_SS_NO_ERROR;
ss_signal(E_SS_IMEI, &imei_info);
break;
default:
break;
}
}
/*
+--------------------------------------------------------------------+
| PROJECT: MMI-Framework (8417) MODULE: MFW_SS |
| STATE : code ROUTINE: ss_error_string |
+--------------------------------------------------------------------+
PURPOSE : Send of SS string is failed.
*/
void ss_error_string(T_ACI_AT_CMD cmdId, T_ACI_CME_ERR reason)
{
TRACE_FUNCTION("ss_error_string()");
switch (cmdId)
{
case KSD_CMD_CB:
ss_signal(E_SS_CB_CNF, &cb_cnf);
break;
case KSD_CMD_CF:
ss_signal(E_SS_CF_CNF, &cf_cnf);
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -