📄 sccpdispgsm.cpp
字号:
*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;
slen -= 7;
is24bits=1;
}/*DPC/OPC is 14bits*/
else /*illegal data*/
{procmoredatadisp(slen); return;}
/*proc MT,10th field*/
temp1 = *recbuf; /*get MT*/
//proc8bitsdisp(10); /*display fld:10*/
bytedisp(10)
slen--;
if(slen!=0)/*message isn't end*/
{switch(temp1)/*MT*/
{
case 0x01:/*CR*/
/*No.11 field(SLR:24Bits,Fixed)*/
proc24bitsdisp(11); /*display fld:11*/
/*No.12(PCLSS)& 13(OPT) field(Protocol class:8bits,Fixed)*/
*dispbuf++=12;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=4;
*dispbuf++=(*recbuf)<<4;
*dispbuf++=0xcc;
*dispbuf++=13;
*dispbuf++=0;
*dispbuf++=4;
*dispbuf++=(*recbuf++)&0xf0; /*recbuf-->CLDPA's pointer*/
*dispbuf++=0xcc;
displen+=11;
/*No.14 field(CLDPA's pointer,8bits)*/
bufbak=recbuf;
proc8bitsdisp(14); /*display fld:14*/
/*No.15 field(Option's start pointer,8bits)*/
proc8bitsdisp(15); /*display fld:15*/
/*No.16-24 field(CLDPA,V)*/
temp1=*bufbak++; /*get CLDPA's pointer & -->Option's pointer*/
recbuf=bufbak+temp1-1;
procSCCPADDRDisp(16,is24bits);/*display fld:16*/
temp1=*bufbak; /*get Option's pointer */
recbuf=bufbak+temp1;/*recbuf-->1st Option's name*/
if(*recbuf==0x09)/*exist CREDIT option(total 3 bytes,3 fields)*/
{
/*NO.25 field(credit name:8bits,O)*/
proc8bitsdisp(25); /*display fld:25*/
/*NO.26 field(credit length:8bits:O)*/
proc8bitsdisp(26); /*display fld:26*/
/*NO.27 field(credit:8bits,O)*/
proc8bitsdisp(27); /*display fld:27*/
}/*exist CREDIT option(total 3 bytes,3 fields)*/
if (*recbuf==0x04)/*exist Calling Address*/
{
/*NO.28 field(CLGPA name:8bits,O)*/
proc8bitsdisp(28); /*display fld:28*/
/*NO.29-37 field(CLGPA content,O)*/
temp1=*recbuf+1; /*get CLGPA length*/
bufbak=recbuf;
procSCCPADDRDisp(29,is24bits);/*display fld:29*/
recbuf=bufbak+temp1;
}/*exist Calling Address*/
if(*recbuf==0x0f)/*exist data option*/
{
/*NO.38 field(DATA name:8bits,O)*/
proc8bitsdisp(38); /*display fld:38*/
/*NO.39,80h field(DATA,O)*/
bufbak=recbuf;
procSCCPDATADisp(39);/*display fld:39*/
recbuf=bufbak+1;
#if MultiTS
procGSMAdisp();
#endif
}/*exist data option*/
/*No.40:option over*/
// procOPTIONoverDisp(40) /*display fld:40*/
break;
case 0x02:/*CC*/
/*No.11 field(DLR:24Bits,Fixed)*/
proc24bitsdisp(11); /*display fld:11*/
/*No.12 field(SLR:24Bits,Fixed)*/
proc24bitsdisp(12); /*display fld:12*/
/*No.13(PCLSS)& 14(OPT) field(Protocol class:8bits,Fixed)*/
*dispbuf++=13;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=4;
*dispbuf++=(*recbuf)<<4;
*dispbuf++=0xcc;
*dispbuf++=14;
*dispbuf++=0;
*dispbuf++=4;
*dispbuf++=(*recbuf++)&0xf0;
*dispbuf++=0xcc;
displen+=11;
dfldno=12;
/*No.15 field(Option's start pointer:8bits,Fixed)*/
proc8bitsdisp(15); /*display fld:15*/
if(*recbuf==0x09)/*exist credit option(total 3 bytes)*/
{
/*No.16 field(credit name:8bits,O)*/
proc8bitsdisp(16); /*display fld:16*/
/*No.17 field(credit length:8bits,O)*/
proc8bitsdisp(17); /*display fld:17*/
/*No.18 field(credit:8bits,O)*/
proc8bitsdisp(18); /*display fld:18*/
}/*exist credit option*/
if(*recbuf==0x04)/*exist Calling Address*/
{
/*No.19 field(CLGPA name:8bits,O)*/
proc8bitsdisp(19); /*display fld:19*/
/*No.20-28 field(CLGPA content,O)*/
procSCCPADDRDisp(20,is24bits); /*display fld:20*/
}/*exist Calling Address*/
if(*recbuf==0x0f)/*exist data option*/
{
/*No.29 field(DATA name:8bits,O)*/
proc8bitsdisp(29); /*display fld:29*/
/*No.30 field(DATA length:8bits,O) & 80H field(DATA content,O)*/
bufbak=recbuf;
procSCCPDATADisp(30); /*display fld:30*/
recbuf=bufbak+1;
#if MultiTS
procGSMAdisp(); //GSMA
#endif
}/*exist data option*/
/*No.31:option over*/
// procOPTIONoverDisp(31) /*display fld:31*/
break;
case 0x03:/*CREF*/
/*No.11 field(SLR:24Bits,Fixed)*/
proc3byte(11) /*display fld:11*/
/*No.12 field(Reject Case:8bits,Fixed)*/
bytedisp(12) /*display fld:12*/
/*No.13 field(Option's start pointer,8bits)*/
bytedisp(13) /*display fld:13*/
if(*recbuf==0x04)/*exist Calling Address*/
{
/*No.14 field(CLGPA name:8bits,O)*/
bytedisp(14) /*display fld:14*/
/*No.15-23 field(CLGPA content,O)*/
procSCCPADDRDisp(15,is24bits);
}/*exist Calling Address*/
if(*recbuf==0x0f)/*exist data option*/
{
/*No.24 field(DATA name:8bits,O)*/
bytedisp(24) /*display fld:24*/
/*No.25 field(DATA length:8bits,O) & 80H field(DATA,O)*/
procSCCPDATADisp(25);
}/*exist data option*/
/*No.26:option over*/
procOPTIONoverDisp(26) /*display fld:26*/
break;
case 0x04:/*RLSD*/
case 0x05:/*RLC*/
/*No.11 field(DLR:24bits,Fixed)*/
proc3byte(11) /*display fld:11*/
/*No.12 field(SLR:24bits,Fixed)*/
proc3byte(12) /*display fld:12*/
if (temp1==0x05) break;
/*No.13 field(Release case:8bits,Fixed)*/
bytedisp(13) /*display fld:13*/
/*No.14 field(Option's start pointer:8bits,Fixed)*/
bytedisp(14) /*display fld:14*/
if(*recbuf==0x0f)/*exist data option*/
{
/*No.15 field(DATA name:8bits,O)*/
bytedisp(15) /*display fld:24*/
/*No.16 field(DATA length:8bits,O) & 80H field(DATA,O)*/
procSCCPDATADisp(16);
}/*exist data option*/
/*No.17:option over*/
procOPTIONoverDisp(17) /*display fld:17*/
break;
case 0x06:/*DT1*/
/*No.11 field(DLR:24bits,Fixed)*/
proc3byte(11) /*display fld:11*/
/*No.12 field(Segment/Reload:1bit,D0,Fixed)*/
*dispbuf++=12;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=1;
*dispbuf++=(*recbuf<<7);
*dispbuf++=0xcc;
displen+=6;
recbuf++;
/*No.13 field(data field pointer:8bits,F)*/
bytedisp(13) /*display fld:13*/
/*No.14 field(DATA length:8bits,V) & 80H field(DATA content,V)*/
bufbak=recbuf;
procSCCPDATADisp(14);
recbuf=bufbak+1;
#if MultiTS
procGSMAdisp(); //GSMA
#endif
break;
case 0x07:/*DT2*/
/*No.11 field(DLR:24bits,Fixed)*/
proc3byte(11) /*display fld:11*/
//Sort/Segment:2bytes,Fixed)
//No.12( P(S):D7-D1 of byte1 )
*dispbuf++=12;
*dispbuf++=2;
*(WORD *)dispbuf=*(WORD *)recbuf; dispbuf+=2;
*dispbuf++=7;
*dispbuf++=*recbuf&0xfe;
*dispbuf++=0xcc;
//No.13(M:D0 of byte2)
*dispbuf++=13;
*dispbuf++=0;
*dispbuf++=1;
*dispbuf++=(*(recbuf+1))<<7;
*dispbuf++=0xcc;
//No.14( P(S):D7-D1 of byte2 )
*dispbuf++=14;
*dispbuf++=0;
*dispbuf++=7;
*dispbuf++=*(recbuf+1)&0xfe;
*dispbuf++=0xcc;
displen+=17;
recbuf+=2;
//No.15 field(data field pointer:8bits,F)
bytedisp(15) /*display fld:15*/
/*No.16 field(DATA length:8bits,V) & 80H field(DATA content,V)*/
procSCCPDATADisp(16);
break;
case 0x08:/*AK*/
/*No.11 field(DLR:24bits,Fixed)*/
proc3byte(11) /*display fld:11*/
//NO.12 field(Receive Number:7bits,D7-D1,Fixed)
*dispbuf++=12;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=7;
*dispbuf++=(*recbuf++)&0xfe;
*dispbuf++=0xcc;
displen+=6;
//NO.13 field(credit,8bits,F)
bytedisp(13) /*display fld:13*/
break;
case 0x09:/*UDT*/
case 0x0a:/*UDTS*/
if (temp1==0x09)/*UDT*/
{
/*No.11(PCLSS)&12(OPT) field(Protocol class:8bits,Fixed)*/
*dispbuf++=11;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=4;
*dispbuf++=(*recbuf)<<4;
*dispbuf++=0xcc;
*dispbuf++=12;
*dispbuf++=0;
*dispbuf++=4;
*dispbuf++=(*recbuf++)&0xf0;
*dispbuf++=0xcc;
displen+=11;
dfldno=12;
}
else/*UDTS*/
{
//No.11field(return case:8bits,Fixed)
bytedisp(11) //display fld:11
dfldno=11;
}
//NO.13(UDT)\12(UDTS) field(CLDPA's pointer:8bits,F)
bufbak=recbuf; //bufbak-->CLDPA pointer
dfldno++;
bytedisp(dfldno)
//NO.14(UDT)\13(UDTS) field(CLGPA's pointer:8bits,F)
dfldno++;
bytedisp(dfldno)
//NO.15(UDT)\14(UDTS) field(DATA's pointer:8bits,F)
dfldno++;
bytedisp(dfldno)
//CLDPA
code=*bufbak++; //bufbak-->CLGPA's pointer
recbuf=bufbak+code-1; //recbuf-->CLDPA length
//NO.16-24(UDT)\15-23(UDTS) field(CLDPA,V)
dfldno++;
procSCCPADDRDisp(dfldno,is24bits);
ssn=SCCPSSN;
//CLGPA
code=*bufbak++; //bufbak-->DATA's pointer
recbuf=bufbak+code-1; //recbuf-->CLGPA length
//NO.25-33(UDT)\24-32(UDTS) field(CLGPA,V)
dfldno+=9;
procSCCPADDRDisp(dfldno,is24bits);
//DATA
code=*bufbak;
recbuf=bufbak+code; //recbuf-->DATA length
//NO.34(UDT)\33(UDTS) field(DATA length:8bits,V) & 80H field(DATA content,V)
dfldno+=9;
if (temp1==0x09) procUDTdata(dfldno,ssn,is24bits); //UDT
else procSCCPDATADisp(dfldno); //UDTS
break;
case 0x0b://ED
//No.11 field(DLR:24bits,Fixed)
proc3byte(11) //display fld:11
//NO.12 field(DATA pointer:8bits,Fixed)
bytedisp(12) //display fld:12
//NO.13 field(DATA length:8bits,V) & 80 field(DATA content,V)
procSCCPADDRDisp(13,is24bits);
break;
case 0x0c://EA
//No.11 field(DLR:24bits,Fixed)
proc3byte(11) //display fld:11
break;
case 0x0d:/*RSR*/
//No.11 field(DLR:24bits,Fixed)
proc3byte(11) /*display fld:11*/
//No.12 field(SLR:24bits,Fixed)
proc3byte(12) /*display fld:12*/
//NO.13 field(RESET CASE:8Bits,F)
bytedisp(13) /*display fld:13*/
break;
case 0x0e:/*RSC*/
//No.11 field(DLR:24bits,Fixed)
proc3byte(11) /*display fld:11*/
//No.12 field(SLR:24bits,Fixed)
proc3byte(12) /*display fld:12*/
break;
case 0x0f:/*ERR*/
//No.11 field(DLR:24bits,Fixed)
proc3byte(11) /*display fld:11*/
//No.12 field(ERROR CASE:8Bits,Fixed)
bytedisp(12) /*display fld:12*/
break;
case 0x10:/*IT*/
//No.11 field(DLR:24bits,Fixed)
proc3byte(11) /*display fld:11*/
//No.12 field(SLR:24bits,Fixed)
proc3byte(12) /*display fld:12*/
//No.13(PCLSS)&14(OPT) field(Protocol class:8bits,Fixed)
*dispbuf++=13;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=4;
*dispbuf++=(*recbuf)<<4;
*dispbuf++=0xcc;
*dispbuf++=14;
*dispbuf++=0;
*dispbuf++=4;
*dispbuf++=(*recbuf++)&0xf0;
*dispbuf++=0xcc;
displen+=11;
//Sort/Segment:2bytes,Fixed)
//No.15( P(S):D7-D1 of byte1 )
*dispbuf++=15;
*dispbuf++=2;
*(WORD *)dispbuf=*(WORD *)recbuf;
dispbuf+=2;
*dispbuf++=7;
*dispbuf++=*recbuf&0xfe;
*dispbuf++=0xcc;
//No.16(M:D0 of byte2)
*dispbuf++=16;
*dispbuf++=0;
*dispbuf++=1;
*dispbuf++=(*(recbuf+1))<<7;
*dispbuf++=0xcc;
//No.17( P(S):D7-D1 of byte2 )
*dispbuf++=17;
*dispbuf++=0;
*dispbuf++=7;
*dispbuf++=*(recbuf+1)&0xfe;
*dispbuf++=0xcc;
displen+=17;
recbuf+=2;
//NO.18 field(credit:8bits,F)
bytedisp(18) /*display fld:18*/
break;
case 0x11:/*XUDT*/
case 0x12:/*XUDTS*/
if (temp1==0x11)/*XUDT*/
{
/*No.11(PCLSS)&12(OPT) field(Protocol class:8bits,Fixed)*/
*dispbuf++=11;
*dispbuf++=1;
*dispbuf++=*recbuf;
*dispbuf++=4;
*dispbuf++=(*recbuf)<<4;
*dispbuf++=0xcc;
*dispbuf++=12;
*dispbuf++=0;
*dispbuf++=4;
*dispbuf++=(*recbuf++)&0xf0;
*dispbuf++=0xcc;
displen+=11;
dfldno=12;
}
else/*XUDTS*/
{
//No.11field(return case:8bits,Fixed)
bytedisp(11) /*display fld:11*/
dfldno=11;
}
//NO.13(XUDT)\12(XUDTS) field(JUMP counter:8bits,F)
dfldno++;
bytedisp(dfldno)
//NO.14(XUDT)\13(XUDTS) field(CLDPA's pointer:8bits,F)
bufbak=recbuf; //bufbak-->CLDPA pointer
dfldno++;
bytedisp(dfldno)
//NO.15(XUDT)\14(XUDTS) field(CLGPA's pointer:8bits,F)
dfldno++;
bytedisp(dfldno)
//NO.16(XUDT)\15(XUDTS) field(DATA's pointer:8bits,F)
dfldno++;
bytedisp(dfldno)
//NO.17(XUDT)\16(XUDTS) field(SEGMENT's pointer,F)
dfldno++;
bytedisp(dfldno)
//CLDPA
code=*bufbak++; //bufbak-->CLGPA's pointer
recbuf=bufbak+code-1; //recbuf-->CLDPA length
//NO.18-26(XUDT)\17-25(XUDTS) field(CLDPA,V)
dfldno++;
procSCCPADDRDisp(dfldno,is24bits);
ssn=SCCPSSN;
//CLGPA
code=*bufbak++; //bufbak-->DATA's pointer
recbuf=bufbak+code-1; //recbuf-->CLGPA length
//NO.27-35(XUDT)\26-34(XUDTS) field(CLGPA,V)
dfldno+=9;
procSCCPADDRDisp(dfldno,is24bits);
//DATA
code=*bufbak++; //bufbak-->SEGMENT's pointer
recbuf=bufbak+code-1; //recbuf-->DATA length
//NO.36(XUDT)\34(XUDTS) field(DATA length:8bits,V) & 80H field(DATA content,V)
dfldno+=9;
if (temp1==0x11) procUDTdata(dfldno,ssn,is24bits); ////XUDT
else procSCCPDATADisp(dfldno); //XUDTS
//SEGMENT(O)
code=*bufbak;
recbuf=bufbak+code-1; //recbuf-->SEGMENT name(if exist)
if(*recbuf==0x10)//exist SEGMENT
{
//NO.37(XUDT)\36(XUDTS) field(SEGMENT name:8bits,O)
dfldno++;
bytedisp(dfldno)
//NO.38(XUDT)\37(XUDTS) field(SEGMENT length:8bits,O)
dfldno++;
bytedisp(dfldno)
//NO.39(XUDT)\38(XUDTS) field(REST SEGMENT:8bits,O)
dfldno++;
bytedisp(dfldno)
//NO.40(XUDT)\39(XUDTS) field(Local Reference:24 Bits,O)
dfldno++;
proc3byte(dfldno)
}
break;
default:
procmoredatadisp(slen);
break;
}/*MT*/
}/*if slen!=0,message isn't end*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -