⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mfw_ss.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
          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 + -