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

📄 swi.c

📁 电信数字交换机用户数据联机下载入磁带程序
💻 C
📖 第 1 页 / 共 5 页
字号:
                else
                    sprintf(SndBuff, "can subd n=%s sc=dtd\r", Sw->Tel);
                Send2Switch();
                strcpy(Sw->RcvBuff, "");
                Go(3010092);
                break;

            case 3010093:
                sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                LogInfo(LogBuff);
                if (Sw->NewSrv[NOT_DISTURB] == '1')
                    GetResultNECG30REG();
                else
                    GetResultNECG30CAN();
                if (Sw->ReturnCode == 0 || Sw->ReturnCode == 12)
                    Go(3010100);
                else {
                    strcpy(Sw->Para, "");
                    Go(100);
                    }
                break;

// === 12-缺席
            case 3010100:
                if (Sw->NewSrv[ABSENTEE] == '-') {
                    Go(3010110);
                    break;
                    }
                GoSub(3000050);
                break;
                
            case 3010101:
                if (Sw->NewSrv[ABSENTEE] == '1')
                    sprintf(SndBuff, "reg subd n=%s sc=abs\r", Sw->Tel);
                else
                    sprintf(SndBuff, "can subd n=%s sc=abs\r", Sw->Tel);
                Send2Switch();
                strcpy(Sw->RcvBuff, "");
                Go(3010102);
                break;

            case 3010103:
                sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                LogInfo(LogBuff);
                if (Sw->NewSrv[ABSENTEE] == '1')
                    GetResultNECG30REG();
                else
                    GetResultNECG30CAN();
                if (Sw->ReturnCode == 0 || Sw->ReturnCode == 12)
                    Go(3010110);
                else {
                    strcpy(Sw->Para, "");
                    Go(100);
                    }
                break;

// === 13-缩位拨号
            case 3010110:
                if (Sw->NewSrv[SPEED_CALL] == '-') {
                    Go(3010120);
                    break;
                    }
                GoSub(3000050);
                break;
                
            case 3010111:
                if (Sw->NewSrv[SPEED_CALL] == '1')
                    sprintf(SndBuff, "reg subd n=%s sc=abd\r", Sw->Tel);
                else
                    sprintf(SndBuff, "can subd n=%s sc=abd\r", Sw->Tel);
                Send2Switch();
                strcpy(Sw->RcvBuff, "");
                Go(3010112);
                break;

            case 3010113:
                sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                LogInfo(LogBuff);
                if (Sw->NewSrv[SPEED_CALL] == '1')
                    GetResultNECG30REG();
                else
                    GetResultNECG30CAN();
                if (Sw->ReturnCode == 0 || Sw->ReturnCode == 12)
                    Go(3010120);
                else {
                    strcpy(Sw->Para, "");
                    Go(100);
                    }
                break;

// === 14-追查恶意
            case 3010120:
                if (Sw->NewSrv[MALICIOUS_TRACE] == '-') {
                    Go(3010130);
                    break;
                    }
                GoSub(3000050);
                break;
                
            case 3010121:
                if (Sw->NewSrv[MALICIOUS_TRACE] == '1')
                    sprintf(SndBuff, "reg mtr n=%s\r", Sw->Tel);
                else
                    sprintf(SndBuff, "can mtr n=%s\r", Sw->Tel);
                Send2Switch();
                strcpy(Sw->RcvBuff, "");
                Go(3010122);
                break;

            case 3010123:
                sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                LogInfo(LogBuff);
                if (Sw->NewSrv[MALICIOUS_TRACE] == '1')
                    GetResultNECG30REGMTR();
                else
                    GetResultNECG30CANMTR();
                if (Sw->ReturnCode == 0 || Sw->ReturnCode == 12)
                    Go(3010130);
                else {
                    strcpy(Sw->Para, "");
                    Go(100);
                    }
                break;

// === 15-呼出限制
            case 3010130:
                if (Sw->NewSrv[CALL_RESTRICT] == '-') {
                    Go(3010140);
                    break;
                    }
                GoSub(3000050);
                break;
                
            case 3010131:
                if (Sw->NewSrv[CALL_RESTRICT] == '1') {
                    GetPara(Sw->Para, "PASS=", tmp, 8);
                    sprintf(SndBuff, "reg subd n=%s sc=ocb ocb_pid=%s\r", Sw->Tel, tmp);
                    }
                else
                    sprintf(SndBuff, "can subd n=%s sc=ocb\r", Sw->Tel);
                Send2Switch();
                strcpy(Sw->RcvBuff, "");
                Go(3010132);
                break;

            case 3010133:
                sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                LogInfo(LogBuff);
                if (Sw->NewSrv[CALL_RESTRICT] == '1')
                    GetResultNECG30REG();
                else
                    GetResultNECG30CAN();
                if (Sw->ReturnCode == 0 || Sw->ReturnCode == 12)
                    Go(3010140);
                else {
                    strcpy(Sw->Para, "");
                    Go(100);
                    }
                break;

// === 16-反极性
            case 3010140:
                if (Sw->NewSrv[FJX] == '-') {
                    Go(3010150);
                    break;
                    }
                GoSub(3000050);
                break;
                
            case 3010141:
                if (Sw->NewSrv[FJX] == '1')
                    sprintf(SndBuff, "mod subd n=%s chrg_ccls=rpol\r", Sw->Tel);
                else
                    sprintf(SndBuff, "mod subd n=%s chrg_ccls=nctl\r", Sw->Tel);
                Send2Switch();
                strcpy(Sw->RcvBuff, "");
                Go(3010142);
                break;

            case 3010143:
                sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                LogInfo(LogBuff);
                GetResultNECG30MOD();
                if (Sw->ReturnCode == 0 || Sw->ReturnCode == 12)
                    Go(3010150);
                else {
                    strcpy(Sw->Para, "");
                    Go(100);
                    }
                break;

            case 3010150:
                Sw->ReturnCode = 0;
                if (Sw->SP > 0)
                    Rtn();
                else {
                    strcpy(Sw->Para, "");
                    Go(100);
                    }
                break;

/* ======== NECG30 实装统计 ======== */
            // Sw->ExkPtr = 0   set in function AcceptRequestPacket
            case 3200000:
                GoSub(3000050);
                break;
                
            case 3200001:
                //view subd n=8330000-8339999 opt=total
                if (strlen(Sw->Exk[Sw->ExkPtr]) == 3)
                    sprintf(SndBuff, "view subd n=%s0000-%s9999 opt=total\r",
                            Sw->Exk[Sw->ExkPtr], Sw->Exk[Sw->ExkPtr]);
                else
                    sprintf(SndBuff, "view subd n=%s000-%s999 opt=total\r",
                            Sw->Exk[Sw->ExkPtr], Sw->Exk[Sw->ExkPtr]);
                Send2Switch();
                strcpy(Sw->RcvBuff, "");
                Go(3200002);
                break;

            case 3200002:
                if (Sw->timer > CIL_TIMEOUT) {
                    Sw->ReturnCode = 4;
                    strcpy(Sw->Para, "");
                    Go(100);
                    }
                break;

            case 3200003:
                sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                LogInfo(LogBuff);
                GetResultNECG30VIEW();
                if (Sw->ReturnCode != 0) {
                    strcpy(Sw->Para, "");
                    Go(100);
                    break;
                    }
                if (GetNumOfLineNECG30() == 0) {
                    Sw->ReturnCode = 9999;
                    strcpy(Sw->Para, "");
                    Go(100);
                    break;
                    }
                Sw->ExkPtr ++;
                if (strlen(Sw->Exk[Sw->ExkPtr]) == 0) {
                    Sw->ReturnCode = 0;
                    sprintf(Sw->Para, "TOTAL=%d", Sw->InstLine);
                    Go(100);
                    }
                else
                    Go(3200000);
                break;











/* ======== F150V8 Login ======== */
            case 5000000:   // Delay
                if (Sw->timer >= F150DELAY) Go(5000001);
                break;

            case 5000001:
                strcpy(SndBuff, "\x05\x05");
                Send2Switch();
                ChangeETX(Sw->TcpNodeName, "\x03");
                strcpy(Sw->RcvBuff, "");
                Go(5000002);
                break;

            case 5000003:   // Delay
                if (Sw->timer >= F150DELAY) Go(5000004);
                break;

            case 5000004:
                sprintf(SndBuff, "%s;", Sw->Password);
                Send2Switch();
                ChangeETX(Sw->TcpNodeName, "");
                strcpy(Sw->RcvBuff, "");
                Go(5000005);
                break;

            case 5000006:
                if (strstr(Sw->RcvBuff, "<  \x03")) {   // Login OK
                    sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                    LogInfo(LogBuff);
                    Sw->ReturnCode = 0;
                    Go(5000007);    // Go to delay
                    break;
                    }
                if (strstr(Sw->RcvBuff, "\x7f\x7f\x0d\x0a\x0d\x0a\x03")) {  // Pass error
                    sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                    LogInfo(LogBuff);
                    GetResultF150V8Login();
                    strcpy(Sw->Para, "");
                    Go(100);
                    break;
                    }
                Go(5000005);
                break;

            case 5000007:   // Delay
                if (Sw->timer >= F150DELAY) Rtn();
                break;

/* ======== F150V8 CHA SUB; ======== */
            case 5000050:
                strcpy(SndBuff, "CHA SUB;");
                Send2Switch();
                //ChangeETX(Sw->TcpNodeName, "");
                strcpy(Sw->RcvBuff, "");
                Go(5000051);
                break;

            case 5000052:
                if (strstr(Sw->RcvBuff, "   \x03")) {   // OK
                    sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                    LogInfo(LogBuff);
                    Sw->ReturnCode = 0;
                    ChangeETX(Sw->TcpNodeName, "\x7f\x7f\x0d\x0a\x0d\x0a\x03");
                    Go(5000053);    // Go to delay
                    break;
                    }
                if (strstr(Sw->RcvBuff, "\x7f\x7f\x0d\x0a\x0d\x0a\x03")) {  // Error
                    sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                    LogInfo(LogBuff);
                    GetResultF150V8CHASUB();
                    strcpy(Sw->Para, "");
                    Go(100);
                    break;
                    }
                Go(5000051);
                break;

            case 5000053:
                if (Sw->timer >= F150DELAY) Rtn();
                break;

/* ======== F150V8 New Line ======== */
            case 5001000:
                GoSub(5000000);
                break;

            case 5001001:
                GoSub(5000050);
                break;

            case 5001002:
                GetPara(Sw->Para, "LL=", tmp, 30);
                if (Sw->V5 == 1)
                    sprintf(SndBuff, "STCH,DN=%s,ST=1,UL=%s,", Sw->Tel, tmp);
                else
                    sprintf(SndBuff, "STCH,DN=%s,ST=1,LL=%s,", Sw->Tel, tmp);
                if (strlen(Sw->NewSrv) < MAX_NEWSRV_LEN) {
                    Sw->ReturnCode = 3;     // NewSrv parameter error
                    strcpy(Sw->Para, "");
                    Go(100);
                    break;
                    }
                if (Sw->NewSrv[TOLL_CALL] == '1')
                    strcat(SndBuff, "CAT=2;");      /* 国内长途 & 双音频 */
                else
                    strcat(SndBuff, "CAT=19;");     /* 双音频 */
                Sw->NewSrv[DTMF] = '-';             /* 消双音频标志 */
                Sw->NewSrv[TOLL_CALL] = '-';        /* 消国内长途标志 */
                Send2Switch();
                strcpy(Sw->RcvBuff, "");
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -