📄 svisupdisp.cpp
字号:
bytedisp(dfldno)
//option li,8bits
*dispbuf++=dfldno+1;
*dispbuf++=1;
li=*dispbuf++=*recbuf++;
*dispbuf++=8;
*dispbuf++=li;
*dispbuf++=0xcc;
//option content
if(li>=32)
{*dispbuf++=dfldno+2;
*dispbuf++=li;
for(i=0;i<li;i++) *dispbuf++=*(recbuf+i);
*dispbuf++=0;
*dispbuf++=li;
for(i=0;i<li;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=li*2+11;
}
else
{*dispbuf++=dfldno+2;
*dispbuf++=li;
for(i=0;i<li;i++) *dispbuf++=*(recbuf+i);
*dispbuf++=li*8;
for(i=0;i<li;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=li*2+10;
}
}
void procISUPCLDPC(BYTE dfldno);
void procISUPCAUSE(BYTE dfldno);
void procISUPRangeStatusdisp(BYTE dfldno);
void procISUPCONNOdisp(BYTE dfldno);
extern void procmoredatadisp(WORD dfldno);
void procISUPdisp(WORD slen)
{
BYTE temp1,dataleggel,code;
BYTE oddeven,LI,i;
WORD temp16;
//process SIO
temp1 = *recbuf; /*get SIO*/
proc8bitsdisp(6);
slen--;
if((Version&0x02)==0) return;
//process DPC/OPC/SLC*/
temp1 &= 0xf0; /*get SSF*/
if (temp1==0xc0 && slen>5) /*DPC/OPC is 14bits*/
{procDPCOPCSLC14disp();
//CIC:12bits
*dispbuf++=10; /*display fld:10*/
*dispbuf++=2;
*(WORD *)dispbuf=*(WORD *)recbuf;
dispbuf+=2;
*dispbuf++=12;
temp16=(*(WORD *)recbuf)<<4;
*dispbuf++=HIBYTE(temp16);
*dispbuf++=LOBYTE(temp16);
recbuf+=2;
*dispbuf++=0xcc;
displen+=8;
slen -= 6;
}/*DPC/OPC is 14bits*/
else if (temp1==0x80 && slen>8) /*DPC/OPC is 24bits*/
{
/*process dpc:24bits*/
proc24bitsdisp(7); /*display fld:7*/
/*process opc:24bits*/
proc24bitsdisp(8); /*display fld:8*/
/*process slc:D3-D0,4bits*/
*dispbuf++ = 9; /*display fld:9*/
*dispbuf++ = 1; /*source data byte */
temp1 = *recbuf++;
*dispbuf++ = temp1; /*source data*/
*dispbuf++ =4; /*display bit len:24*/
*dispbuf++ = temp1<<4;
*dispbuf++ = 0xcc; /*end flag*/
displen += 6;
//CIC:12bits
*dispbuf++=10; /*display fld:10*/
*dispbuf++=2;
*(WORD *)dispbuf=*(WORD *)recbuf;
dispbuf+=2;
*dispbuf++=12;
temp16=(*(WORD *)recbuf)<<4;
*dispbuf++=HIBYTE(temp16);
*dispbuf++=LOBYTE(temp16);
recbuf+=2;
*dispbuf++=0xcc;
displen+=8;
slen -= 9;
}/*DPC/OPC is 24bits*/
else /*illegal data*/
{procmoredatadisp(slen); return;}
/*proc MT,11th field*/
temp1 = *recbuf; /*get MT*/
//proc8bitsdisp(dispbuf,recbuf,11); /*display fld:11*/
//dispbuf+=6; displen +=6; recbuf++;
bytedisp(11)
slen--;
if(slen!=0)/*message isn't end*/
{switch(temp1)/*MT*/
{
//table 32/6
case 0x01:/*IAM*/
//No.12 field:NATCI:8bits,F
bytedisp(12)
//No.13 field:FOCIN:16bits,F
proc2byte(13)
//No.14 field:CLGPC:8byte,F
bytedisp(14)
//No.15 field:TRMRQ:8byte,F
bytedisp(15)
//No.16 field:PTR1:8byte,F
bytedisp(16)
//No.17 field:PTR2:8byte,F
bytedisp(17)
//No.18-23 field:CLDPC li and CLDPC:V,P42
slen-=8;
slen-=*recbuf;
procISUPCLDPC(18);
dataleggel=0xff;
while(slen>2&&dataleggel==0xff)
{dataleggel=0;
//No.24-29 field:TNSN ,P96
if(*recbuf==0x23 && slen>=(*(recbuf+1)+2))//exist TNSN
{slen-=*(recbuf+1)+2;dataleggel=0xff;
//No.24 field:TNSN para name,8bits
bytedisp(24)
//No.25 field:TNSN li,8bits
*dispbuf++=25;
*dispbuf++=1;
LI=*dispbuf++=*recbuf++;
*dispbuf++=8;
*dispbuf++=LI;
*dispbuf++=0xcc;
displen+=6;
//No.26 field:NA:D3-D0
*dispbuf++=26;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=4;
*dispbuf++=(*recbuf)<<4;
*dispbuf++=0xcc;
//No.27 field:NAtype:D6-D4
*dispbuf++=27;
*dispbuf++=0;
*dispbuf++=3;
*dispbuf++=(*recbuf&0x70)<<1;
*dispbuf++=0xcc;
//No.28 field:odd\even:D7
*dispbuf++=28;
*dispbuf++=0;
*dispbuf++=1;
*dispbuf++=*recbuf&0x80;
*dispbuf++=0xcc;
recbuf++;
LI--;
dispbuf+=16;
//No.29 field:NSN
if(LI!=0)//exist NSN
{*dispbuf++=29;
*dispbuf++=LI;
for(i=0;i<LI;i++) *dispbuf++=*(recbuf+i);
*dispbuf++=LI*8;
for(i=0;i<LI;i++) *dispbuf++=*(recbuf+i);
*dispbuf++=0xcc;
recbuf+=LI;
displen+=LI*2+4;
}//exist NSN
}//exist TNSN
//No.30-31 field:CREF
if(*recbuf==0x01 && slen>=8)//exist CREF
{slen-=8;dataleggel=0xff;
//No.30 field:CREF para name,8bits
bytedisp(30)
//No.31 field:CREFLI,8bits
bytedisp(31)
//No.32 field:Call Id,24bits
proc3byte(32)
//No.33 field:point code ,24bits
proc3byte(33)
}//exist CREF
//No.34-42 field:CLGNO
if(*recbuf==0x0a && slen>=(*(recbuf+1)+2))//exist CLGNO
{slen-=*(recbuf+1)+2;dataleggel=0xff;
//No.34 field:CLGNO para name,8bits
bytedisp(34)
//No.35-42 field:CLGNOLI and CLGNO content
procISUPCLGNOdisp(35);
}//exist CLGNO
//No.43-45 field: OFCIN ,P84
if(*recbuf==0x08 && slen>=3)//exist OFCIN
{slen-=3;dataleggel=0xff;
//No.43 field:OFCIN para name,8bits
bytedisp(43)
//No.44 field:OFCINLI,8bits
bytedisp(44)
//No.45 field:OFCIN,8bits
bytedisp(45)
}//exist OFCIN
//No.46-52 field:RDGNO,P89
if(*recbuf==0x0b && slen>=(*(recbuf+1)+2))//exist RDGNO
{slen-=*(recbuf+1)+2;dataleggel=0xff;
//No.46 field:RDGNO para name,8bits
bytedisp(46)
//No.47-52 field:RDGNO li and RDGNO
procISUPOCLDNOdisp(47);
}//exist RDGNO
//No.53-55 field:REDIN ,P90
if(*recbuf==0x13 && slen>=(*(recbuf+1)+2))//exist REDIN
{slen-=*(recbuf+1)+2;procISUPBaseOption(53);dataleggel=0xff;}
//No.56-59 field:CUGIC ,P56
if(*recbuf==0x1a && slen>=6)//exist CUGIC
{slen-=6;dataleggel=0xff;
//No.56 field:CUGIC para name,8bits
bytedisp(56)
//No.57 field:CUGICLI,8bits
*dispbuf++=57;
*dispbuf++=1;
LI=*dispbuf++=*recbuf++;
*dispbuf++=8;
*dispbuf++=LI;
*dispbuf++=0xcc;
displen+=6;
//No.58 field:NT:16bits
*dispbuf++=58;
*dispbuf++=2;
*(WORD *)recbuf++=*(WORD *)recbuf;
dispbuf+=2;
*dispbuf++=16;
*(WORD *)recbuf++=*(WORD *)recbuf;
dispbuf+=2;
recbuf+=2;
*dispbuf++=0xcc;
displen+=8;
//No.59 field:BIN code:16bits
*dispbuf++=59;
*dispbuf++=2;
*(WORD *)recbuf++=*(WORD *)recbuf;
dispbuf+=2;
*dispbuf++=16;
*dispbuf++=*(recbuf+1);
*dispbuf++=*recbuf;
recbuf+=2;
*dispbuf++=0xcc;
displen+=8;
}//exist CUGIC
//No.60-65 field:CR ,P58
if(*recbuf==0x0d && slen>=(*(recbuf+1)+2))//exist CR
{slen-=*(recbuf+1)+2;dataleggel=0xff;
//No.60 field:CR para name,8bits
bytedisp(60)
//No.61 field:CRLI,8bits
*dispbuf++=61;
*dispbuf++=1;
LI=*dispbuf++=*recbuf++;
*dispbuf++=8;
*dispbuf++=LI;
*dispbuf++=0xcc;
displen+=6;
//No.62-65 field:CR
procISUPCRdisp(LI,62);
}//exist CR
//No.66-72 field:ORCNO,P89
if(*recbuf==0x28 && slen>=(*(recbuf+1)+2))//exist OCLDNO
{slen-=*(recbuf+1)+2;dataleggel=0xff;
//No.66 field:OCLDNO para name,8bits
bytedisp(66)
//No.67-72 field:OCLDNO li and OCLDNO
procISUPOCLDNOdisp(67);
}//exist OCLDNO
//No.73-75 field:USRIN,P89
if(*recbuf==0x20 && slen>=(*(recbuf+1)+2))//exist USRIN
{slen-=*(recbuf+1)+2;procISUPBaseOption(73);dataleggel=0xff;}
//No.76-78 field:ACCTR,P37
if(*recbuf==0x03 && slen>=(*(recbuf+1)+2))//exist ACCTR
{slen-=*(recbuf+1)+2;procISUPBaseOption(76);dataleggel=0xff;}
//No.79-81 field:USRSI,P98
if(*recbuf==0x1d && slen>=(*(recbuf+1)+2))//exist USRSI
{slen-=*(recbuf+1)+2;procISUPBaseOption(79);dataleggel=0xff;}
//No.82-84 field:UUIN,P98
if(*recbuf==0x2a && slen>=3)//exist UUIN
{slen-=3;dataleggel=0xff;
//No.82 field:UUIN para name,8bits
bytedisp(82)
//No.83 field:UUINLI,8bits
bytedisp(83)
//No.84 field:UUINLI,8bits
bytedisp(84)
}//exist UUIN
//No.85-94 field:GN,P67
if(*recbuf==0xc0 && slen>=(*(recbuf+1)+2))//exist GN
{slen-=*(recbuf+1)+2;dataleggel=0xff;
//No.85 field:GN para name,8bits
bytedisp(85)
//No.86-94 field:GNLI and GN content,8bits
procISUPGNdisp(86);
}//exist GN
//No.95-97 field:TRDC
if(*recbuf==0x31 && slen>=4)//exist TRDC
{slen-=4;dataleggel=0xff;
//No.95 field:TRDC para name,8bits
bytedisp(95)
//No.96 field:TRDC para name,8bits
bytedisp(96)
//No.97 field:TRDC,16bits
proc2byte(97)
}//exist TRDC
//No.98-100 field:USRSI,P98
if(*recbuf==0x30 && slen>=(*(recbuf+1)+2))//exist USINFO':用户业务信息'
{slen-=*(recbuf+1)+2;procISUPBaseOption(98);dataleggel=0xff;}
//No.101-107 field:NSPER,P82
if(*recbuf==0x2f && slen>=(*(recbuf+1)+2))//exist NSPER:网络专用性能
{slen-=*(recbuf+1)+2;dataleggel=0xff;
//No.101 field:NSPER para name,8bits
bytedisp(101)
//No.102-107 field:NSPERLI and NSPER content
procISUPNSPERdisp(102);
}//exist NSPER
//No.108-112:GD,P64
if(*recbuf==0xc1 && slen>=(*(recbuf+1)+2))//exist GD:通用数字
{slen-=*(recbuf+1)+2;dataleggel=0xff;
//No.108 field:GD para name,8bits
bytedisp(108)
//No.109 field:GDLI,8bits
*dispbuf++=109;
*dispbuf++=1;
LI=*dispbuf++=*recbuf++;
*dispbuf++=8;
*dispbuf++=LI;
*dispbuf++=0xcc;
displen+=6;
//No.110-112 field:GD
if(LI!=0) procISUPGDdisp(LI,110);
}//exist GD
//No.113-115 field:DISCC
if(*recbuf==0x2b && slen>=(*(recbuf+1)+2))//exist DISCC:始发ISC点编码
{slen-=*(recbuf+1)+2;procISUPBaseOption(113);dataleggel=0xff;}
//No.116-121 field:UTSINFO,P99
if(*recbuf==0x34 && slen>=(*(recbuf+1)+2))//exist UTSINFO:用户终端业务信息
{slen-=*(recbuf+1)+2;dataleggel=0xff;
//No.116 field:DISCC para name,8bits
bytedisp(116)
//No.117 field:DISCCLI,8bits
*dispbuf++=117;
*dispbuf++=1;
LI=*dispbuf++=*recbuf++;
*dispbuf++=8;
*dispbuf++=LI;
*dispbuf++=0xcc;
displen+=6;
//No.118 field:D1-D0,提供
*dispbuf++=118;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=2;
*dispbuf++=(*recbuf)<<6;
*dispbuf++=0xcc;
//No.119 field:D4-D2,翻译
*dispbuf++=119;
*dispbuf++=0;
*dispbuf++=3;
*dispbuf++=(*recbuf&0x1c)<<3;
*dispbuf++=0xcc;
//No.120 field:D6-D5,编码标准
*dispbuf++=120;
*dispbuf++=0;
*dispbuf++=2;
*dispbuf++=(*recbuf&0x60)<<1;
*dispbuf++=0xcc;
displen+=16;
LI--;
recbuf++;
if(LI>0)//高层特性识别
{*dispbuf++=121;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=8;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=6;
LI--;
}
if(LI>0)//扩充高层特性识别
{*dispbuf++=122;
*dispbuf++=LI;
for(i=0;i<LI;i++) *dispbuf++=*(recbuf+i);
*dispbuf++=LI*8;
for(i=0;i<LI;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=LI*2+4;
}
}//exist UTSINFO
//No.122-124 field: REOPER,P92
if(*recbuf==0x32 && slen>=(*(recbuf+1)+2))//exist REOPER,远端操作
{slen-=*(recbuf+1)+2;procISUPBaseOption(123);dataleggel=0xff;}
//No.125-127 field:PCINFO,P86
if(*recbuf==0x39 && slen>=(*(recbuf+1)+2))//exist PCINFO
{slen-=*(recbuf+1)+2;procISUPBaseOption(126);dataleggel=0xff;}
//No.128-130 field:CINFOI,3bytes,P66,may repeat
while(*recbuf==0x2c && slen>=3)//exist CINFOI
{slen-=3;dataleggel=0xff;
bytedisp(129)
bytedisp(130)
bytedisp(131)
}//WHILE
//No.131-133 field:SACT,P93
if(*recbuf==0x33 && slen>=(*(recbuf+1)+2))//exist SACT
{slen-=*(recbuf+1)+2;procISUPBaseOption(132);dataleggel=0xff;}
//No.134-138 field:GR,P70
if(*recbuf==0x3a && slen>=(*(recbuf+1)+2))//exist GR
{slen-=*(recbuf+1)+2;dataleggel=0xff;
//No.134 field:GR para name,8bits
bytedisp(135)
//No.135 field:GRLI,8bits
*dispbuf++=136;
*dispbuf++=1;
LI=*dispbuf++=*recbuf++;
*dispbuf++=8;
*dispbuf++=LI;
*dispbuf++=0xcc;
displen+=6;
//No.136 field:RIN of GR,8bits
bytedisp(137)
//No.137 field:len of GR,8bits
bytedisp(138)
//No.138 field:reference
if(LI>2)
{LI-=2;
*dispbuf++=139;
*dispbuf++=LI;
for(i=0;i<LI;i++) *dispbuf++=*(recbuf+i);
*dispbuf++=LI*8;
for(i=0;i<LI;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=LI*2+4;
}
}//exist GR
//No.139-144 field:MLPPP,8bytes,P79
while(*recbuf==0x3a && slen>=8)//exist MLPPP
{slen-=8;dataleggel=0xff;
//No.139 field:MLPPP para name,8bits
bytedisp(140)
//No.140 field:MLPPPLI,8bits
bytedisp(141)
//No.141 field:PL(D3-D0)
*dispbuf++=142;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=4;
*dispbuf++=(*recbuf)<<4;
*dispbuf++=0xcc;
//No.142 field:LFB(D6-D5)
*dispbuf++=143;
*dispbuf++=0;
*dispbuf++=2;
*dispbuf++=(*recbuf&0x60)<<1;
*dispbuf++=0xcc;
displen+=11;
recbuf++;
//No.143 field:NI digital:2byte;
*dispbuf++=144;
*dispbuf++=2;
*(WORD *)dispbuf=*(WORD *)recbuf;
dispbuf+=2;
*dispbuf++=16;
*(WORD *)dispbuf=*(WORD *)recbuf;
dispbuf+=2;
recbuf+=2;
*dispbuf++=0xcc;
displen+=8;
//No.144 field:MLPP service area:3byte
proc3byte(145)
}//exist MLPPP
//No.145-147 field:TRMRQB',3bytes,P98
if(*recbuf==0x3e && slen>=3)//exist TRMRQB'
{slen-=3;dataleggel=0xff;
//No.145 field:TRMRQB para name,8bits
bytedisp(146)
//No.146 field:TRMRQBLI,8bits
bytedisp(147)
//No.147 field:TRMRQB,8bits
bytedisp(148)
}//exist TRMRQB
//No.148-156 field:POSNUM,P74
if(*recbuf==0x3f && slen>=(*(recbuf+1)+2))//exist POSNUM
{slen-=*(recbuf+1)+2;dataleggel=0xff;
//No.148 field:POSNUM para name,8bits
bytedisp(149)
//No.149 field:POSNUMLI,8bits
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -