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

📄 svisupdisp.cpp

📁 七号信令解码器
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	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 + -