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

📄 swi.c

📁 电信数字交换机用户数据联机下载入磁带程序
💻 C
📖 第 1 页 / 共 5 页
字号:
            case 2002001:   // Move entry
                if (GetPara(Sw->RcvBuff, "EL=", tmp, 30)) {
                    strcat(Sw->Para, " OLDLL=");
                    strcat(Sw->Para, tmp);
                    GoSub(2000000);
                    }
                else {
                    Sw->ReturnCode = 2;     // Tel error
                    strcpy(Sw->Para, "");
                    Go(100);
                    }
                break;

            case 2002002:
                GetPara(Sw->Para, "OLDLL=", tmp, 30);
                sprintf(SndBuff, "SOD:DSC,N=%s,EL=%s;", Sw->Tel, tmp);
                Send2Switch();
                strcpy(Sw->RcvBuff, "");
                Go(2002003);
                break;

            case 2002004:
                if (GetPacketNEC() == 1) {
                    sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                    LogInfo(LogBuff);
                    NECMapErrDSC();
                    if (Sw->SP > 0)     // 无论是否成功都要返回
                        Rtn();
                    else {
                        strcpy(Sw->Para, "");
                        Go(100);
                        }
                    }
                else
                    Go(2002003);
                break;

/* ======== NEC Stop ======== */
            case 2003000:
                GoSub(2000000);
                break;

            case 2003001:
                GetPara(Sw->Para, "DIR=", tmp, 30);
                sprintf(SndBuff, "SOD:SPS,N=%s,,", Sw->Tel);
                if (strcmp(tmp, "2") == 0)
                    strcat(SndBuff, "ALL;");
                else
                    strcat(SndBuff, "ORG;");
                Send2Switch();
                strcpy(Sw->RcvBuff, "");
                Go(2003002);
                break;

            case 2003003:
                if (GetPacketNEC() == 1) {
                    sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                    LogInfo(LogBuff);
                    NECMapErrSPS();
                    strcpy(Sw->Para, "");
                    Go(100);
                    }
                else
                    Go(2003002);
                break;

            //case 2003004:
            //    Go(2003000);
            //    break;

/* ======== NEC Pause ======== */
            case 2004000:
                strcat(Sw->Para, " DIR=2");
                Go(2003000);
                break;

/* ======== NEC Restore ======== */
            case 2005000:
                GoSub(2000000);
                break;

            case 2005001:
                sprintf(SndBuff, "SOD:SPR,N=%s;", Sw->Tel);
                Send2Switch();
                strcpy(Sw->RcvBuff, "");
                Go(2005002);
                break;

            case 2005003:
                if (GetPacketNEC() == 1) {
                    sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                    LogInfo(LogBuff);
                    NECMapErrSPR();
                    //
                    if (Sw->ReturnCode == 12) Sw->ReturnCode = 9;
                    //
                    if (Sw->SP > 0 && Sw->ReturnCode == 12)
                        Sw->ReturnCode = 20;
                    if (Sw->SP > 0 && Sw->ReturnCode == 0)
                        Rtn();
                    else {
                        strcpy(Sw->Para, "");
                        Go(100);
                        }
                    }
                else
                    Go(2005002);
                break;

/* ======== NEC Move ======== */
            case 2007000:
                GoSub(2000050);
                break;

            case 2007001:
                // Tel err will be judge in Remove
                if (GetPara(Sw->RcvBuff, "KN=", tmp, 10)) {
                    strcat(Sw->Para, " PASS=");
                    strcat(Sw->Para, tmp);
                    }
                GoSub(2002001);     // Remove
                break;

            case 2007002:
                if (Sw->ReturnCode != 0) {  // Remove not finished
                    strcpy(Sw->Para, "");
                    Go(100);
                    if (Sw->NewSw != Sw) Sw->NewSw->Busy = 0;
                    break;
                    }
                GetPara(Sw->Para, "NEWSRV=", Sw->NewSrv, MAX_NEWSRV_LEN);
                strcat(Sw->NewSrv, "-");	// Temp for Incoming Call Display
                if (Sw->NewSw != Sw) {
                    strcpy(Sw->NewSw->Para, Sw->Para);
                    Sw->NewSw->Step[0] = Sw->NewSw->SwitchType * 1000000 + 1000;
                    Sw->Busy = 0;
                    }
                else {
                    GetPara(Sw->Para, "NEWTEL=", Sw->Tel, TEL_LEN);
                    Go(2001000);
                    }
                break;

/* ======== NEC ChangeDN ======== */
            case 2008000:
                GoSub(2000000);
                break;

            case 2008001:
                GetPara(Sw->Para, "NEWTEL=", tmp, TEL_LEN);
                sprintf(SndBuff, "SOD:DNC,N=%s,,,,,,N=%s;", Sw->Tel, tmp);
                Send2Switch();
                strcpy(Sw->RcvBuff, "");
                Go(2008002);
                break;

            case 2008003:
                if (GetPacketNEC() == 1) {
                    sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                    LogInfo(LogBuff);
                    NECMapErrDNC();
                    if (Sw->ReturnCode == 0)
                        GoSub(2000000);
                    else {
                        strcpy(Sw->Para, "");
                        Go(100);
                        }
                    }
                else
                    Go(2008002);
                break;

            case 2008004:
                sprintf(SndBuff, "SOD:UAN,N=%s;", Sw->Tel);
                Send2Switch();
                strcpy(Sw->RcvBuff, "");
                Go(2008005);
                break;

            case 2008006:
                if (GetPacketNEC() == 1) {
                    sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                    LogInfo(LogBuff);
                    NECMapErrUAN();
                    strcpy(Sw->Para, "");
                    Go(100);
                    }
                else
                    Go(2008005);
                break;

/* ======== NEC NewSrv ======== */
            case 2010000:
                if (strchr(Sw->NewSrv, '1')==NULL && strchr(Sw->NewSrv, '0')==NULL) {
                    Go(2010010);	// No NewSrv, Go NewSrv exit
                    break;
                    }
                if (strlen(Sw->NewSrv) >= MAX_NEWSRV_LEN)
                    GoSub(2000050);     // PSD
                else {
                    Sw->ReturnCode = 3;
                    strcpy(Sw->Para, "");
                    Go(100);
                    }
                break;

            case 2010001:
                if (GetNewSrvNEC())
                    Go(2010002);
                else {
                    Sw->ReturnCode = 2;
                    strcpy(Sw->Para, "");
                    Go(100);
                    }
                break;

            // NewSrv Sub Entry
            case 2010002:
                // NewLine NewSrv entry
                if (strchr(Sw->NewSrv, '1')==NULL && strchr(Sw->NewSrv, '0')==NULL) {
                    Go(2010010);	// No NewSrv, Go NewSrv exit
                    break;
                    }
                GoSub(2000000);
                break;

            case 2010003:
            // SOD:CLC,N=xxxxxxx,,LC=101010,RC=xxx,SC=xxxxxx,AC=xx,,KN=xxxx,xx;
                //sprintf(SndBuff, "SOD:CLC,N=%s,,LC=101010,", Sw->Tel);
                sprintf(SndBuff, "SOD:CLC,N=%s,,,", Sw->Tel);
            /*  国内 国际 RC
                 -    -   ""
                 0    -   002  市话,
                 1    -   003  国内,
                 -    0   003
                 0    0   002
                 1    0   003
                 -    1   000  国际,
                 0    1   000
                 1    1   000   */
                if (Sw->NewSrv[INT_CALL] == '1')
                    strcat(SndBuff, "RC=000");
                else {
                    if (Sw->NewSrv[TOLL_CALL] == '0')
                        strcat(SndBuff, "RC=002");
                    else {
                        if ( ! (Sw->NewSrv[TOLL_CALL] == '-' && Sw->NewSrv[INT_CALL] == '-') )
                            strcat(SndBuff, "RC=003");
                        }
                    }
                strcat(SndBuff, ",");
                //-----------
                strcpy(tmp, "");
                if (Sw->NewSrv[SPEED_CALL] == '1') strcat(tmp, "B");
                if (Sw->NewSrv[HOT_LINE_A] == '1') strcat(tmp, "C");
                if (Sw->NewSrv[CALL_STORE_BUSY] == '1') strcat(tmp, "D");
                if (Sw->NewSrv[CALL_RESTRICT] == '1') strcat(tmp, "E");
                if (Sw->NewSrv[WAKE_UP] == '1') strcat(tmp, "F");
                if (Sw->NewSrv[NOT_DISTURB] == '1') strcat(tmp, "G");
                if (Sw->NewSrv[CALL_FORWARD] == '1') strcat(tmp, "H");
                if (Sw->NewSrv[CALL_WAIT] == '1') strcat(tmp, "J");
                if (Sw->NewSrv[CALL_FORWARD_BUSY] == '1') strcat(tmp, "K");
                if (Sw->NewSrv[ABSENTEE] == '1') strcat(tmp, "L");
                if (Sw->NewSrv[THREE_WAY_CALL] == '1') strcat(tmp, "M");
                if (Sw->NewSrv[LDXS] == '1') strcat(tmp, "Y");
                strcat(SndBuff, "SC=");
                if (strlen(tmp) != 0) {
                    strcat(SndBuff, tmp); 
                    }
                strcat(SndBuff, ",");
                //------------
                if (Sw->NewSrv[FJX] == '1') strcat(SndBuff, "AC=01");
                if (Sw->NewSrv[FJX] == '0') strcat(SndBuff, "AC=00");
                strcat(SndBuff, ",,");
                //------------
                if (GetPara(Sw->Para, "PASS=", tmp, 10)) {
                    strcat(SndBuff, "KN=");
                    strcat(SndBuff, tmp);
                    }
                //------------
                if (Sw->NewSrv[SPEED_CALL] == '1') strcat(SndBuff, ",10");
                //------------
                strcat(SndBuff, ";");
                //------------
                Send2Switch();
                strcpy(Sw->RcvBuff, "");
                Go(2010004);
                break;

            case 2010005:
                if (GetPacketNEC() == 1) {
                    sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                    LogInfo(LogBuff);
                    NECMapErrCLC();
                    if (Sw->ReturnCode == 0)
                        Go(2010006);    // Go to Malicious Trace
                    else {
                        strcpy(Sw->Para, "");
                        Go(100);
                        }
                    }
                else
                    Go(2010004);
                break;

            // MaliciousTrace
            case 2010006:
                if (Sw->NewSrv[MALICIOUS_TRACE] == '-')
                    Go(2010010);
                else
                    GoSub(2000000);
                break;

            case 2010007:
                if (Sw->NewSrv[MALICIOUS_TRACE] == '1')
                    sprintf(SndBuff, "MTR:REG,N=%s;", Sw->Tel);
                else
                    sprintf(SndBuff, "MTR:CAN,N=%s;", Sw->Tel);
                Send2Switch();
                strcpy(Sw->RcvBuff, "");
                Go(2010008);
                break;

            case 2010009:
                if (GetPacketNEC() == 1) {
                    sprintf(LogBuff, "Rcv from %s: %s\n", Sw->Office, Sw->RcvBuff);
                    LogInfo(LogBuff);
                    NECMapErrMTR();
                    if (Sw->ReturnCode == 0)
                        Go(2010010);    // Go to return
                    else {
                        strcpy(Sw->Para, "");
                        Go(100);
                        }
                    }
                else
                    Go(2010008);
                break;

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

/* ======== NEC 实装统计 ======== */
            // Sw->ExkPtr = 0   set in function AcceptRequestPacket
            case 2200000:
                GoSub(2000000);
                break;

            case 2200001:
                //PSD:N=4500000,N=4509999,,,,,,SKP;
                if (strlen(Sw->Exk[Sw->ExkPtr]) == 3)
                    sprintf(SndBuff, "PSD:N=%s0000,N=%s9999,,,,,,SKP;",
                            Sw->Exk[Sw->ExkPtr], Sw->Exk[Sw->ExkPtr]);
                else
                    sprintf(SndBuff, "PSD:N=%s000,N=%s999,,,,,,SKP;",
                            Sw->Exk[Sw->ExkPtr], Sw->Exk[Sw->ExkPtr]);
                Send2Switch();
                strcpy(Sw->RcvBuff, "");
                Go(2200002);
                break;

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

⌨️ 快捷键说明

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