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

📄 svgsmadisp.cpp

📁 七号信令解码器
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		   for(i=0;i<li;i++) *dispbuf++=*recbuf++;
		   *dispbuf++=0xcc;
		   displen+=li+3;
		  }
		  if((*recbuf&0x7f)==0x7c) //Starting Time
		  {bytedisp(0x16)  //IEI
		   proc2byte(0x17) //Starting Time
		   li+=3;
		  }//Starting Time
		  if(li<11)
		  {li=11-li;
		   *dispbuf++=0x18; //IA rest
		   *dispbuf++=li;
		   for(i=0;i<li;i++) *dispbuf++=*recbuf++;
		   *dispbuf++=0xcc;
		   displen+=li+3;
		  }
		  break;

	  case 0x39: //Immediate assignment extended
		  *dispbuf++=8; //Page Mode
		  *dispbuf++=0;
		  *dispbuf++=4;
		  *dispbuf++=*recbuf<<4;
		  recbuf++;
		  *dispbuf++=0xcc;
		  displen+=5;

		  procChanDescription(0x09); //信道描述1
		  procReqRef(0x0f);  //请求参考1
		  bytedisp(0x13)  //Time Advance1
		  procChanDescription(0x14); //信道描述2
		  procReqRef(0x1a);  //请求参考2
		  bytedisp(0x1e)  //Time Advance2

		  li=*recbuf;  //get Mobile Allocation len
		  bytedisp(0x14) //Mobile Allocation len

		  if(li!=0)
		  {*dispbuf++=0x15; //Mobile Allocation
		   *dispbuf++=li;
		   for(i=0;i<li;i++) *dispbuf++=*recbuf++;
		   *dispbuf++=0xcc;
		   displen+=li+3;
		  }
		  if((*recbuf&0x7f)==0x7c) //Starting Time
		  {bytedisp(0x21)  //IEI
		   proc2byte(0x22) //Starting Time
		  }//Starting Time
		  if(li<4)
		  {li=4-li;
		   *dispbuf++=0x23; //IAX rest
		   *dispbuf++=li;
		   for(i=0;i<li;i++) *dispbuf++=*recbuf++;
		   *dispbuf++=0xcc;
		   displen+=li+3;
		  }
		  break;

	  case 0x3a: //Immediate assignment reject
		  *dispbuf++=8; //Page Mode
		  *dispbuf++=0;
		  *dispbuf++=4;
		  *dispbuf++=*recbuf<<4;
		  recbuf++;
		  *dispbuf++=0xcc;
		  displen+=5;

		  procReqRef(0x09);  //请求参考1
		  bytedisp(0x0d)  //Wait Indicator1
		  procReqRef(0x0e);  //请求参考2
		  bytedisp(0x12)  //Wait Indicator2
		  procReqRef(0x13);  //请求参考3
		  bytedisp(0x17)  //Wait Indicator3
		  procReqRef(0x18);  //请求参考4
		  bytedisp(0x1c)  //Wait Indicator4

		  *dispbuf++=0x1d; //IAR rest
		  *dispbuf++=3;
		  for(i=0;i<3;i++) *dispbuf++=*recbuf++;
		  *dispbuf++=0xcc;
		  displen+=6;
		  break;  

	  case 0x21: //Paging request type1
		  *dispbuf++=8; //Page Mode
		  *dispbuf++=0;
		  *dispbuf++=4;
		  *dispbuf++=*recbuf<<4;
		  recbuf++;
		  *dispbuf++=0xcc;
		  *dispbuf++=9; //Channel Needed for Mobile1
		  *dispbuf++=0;
		  *dispbuf++=2;
		  *dispbuf++=(*recbuf&0x30)<<4;
		  *dispbuf++=0xcc;
		  *dispbuf++=10; //Channel Needed for Mobile2
		  *dispbuf++=0;
		  *dispbuf++=2;
		  *dispbuf++=*recbuf&0xc0;
		  *dispbuf++=0xcc;
		  recbuf++;
		  displen+=15;

		  procMSID(0x0b); //移动标识1
		  if((*recbuf&0x7f)==0x17)
		  {bytedisp(0x0e)  //IEI
		   procMSID(0x0f); //移动标识2
		  }
		  break;

	  case 0x22: //Paging request type2
		  *dispbuf++=8; //Page Mode
		  *dispbuf++=0;
		  *dispbuf++=4;
		  *dispbuf++=*recbuf<<4;
		  recbuf++;
		  *dispbuf++=0xcc;
		  *dispbuf++=9; //Channel Needed for Mobile1
		  *dispbuf++=0;
		  *dispbuf++=2;
		  *dispbuf++=(*recbuf&0x30)<<4;
		  *dispbuf++=0xcc;
		  *dispbuf++=10; //Channel Needed for Mobile2
		  *dispbuf++=0;
		  *dispbuf++=2;
		  *dispbuf++=*recbuf&0xc0;
		  *dispbuf++=0xcc;
		  recbuf++;
		  displen+=15;

		  procTMSI(0x0b); //移动标识1
		  procTMSI(0x0c); //移动标识1
		  if((*recbuf&0x7f)==0x17)//移动标识3
		  {bytedisp(0x0d) //IEI
		   procMSID(0x0e); //移动标识3
		  }//移动标识3
		  break;

	  case 0x24: //Paging request type3
		  *dispbuf++=8; //Page Mode
		  *dispbuf++=0;
		  *dispbuf++=4;
		  *dispbuf++=*recbuf<<4;
		  recbuf++;
		  *dispbuf++=0xcc;
		  *dispbuf++=9; //Channel Needed for Mobile1
		  *dispbuf++=0;
		  *dispbuf++=2;
		  *dispbuf++=(*recbuf&0x30)<<4;
		  *dispbuf++=0xcc;
		  *dispbuf++=10; //Channel Needed for Mobile2
		  *dispbuf++=0;
		  *dispbuf++=2;
		  *dispbuf++=*recbuf&0xc0;
		  *dispbuf++=0xcc;
		  recbuf++;
		  displen+=15;

		  procTMSI(0x0b); //移动标识1
		  procTMSI(0x0c); //移动标识2
		  procTMSI(0x0d); //移动标识3
		  procTMSI(0x0e); //移动标识4

		  *dispbuf++=0x0f; //P3 rest
		  *dispbuf++=3;
		  for(i=0;i<3;i++) *dispbuf++=*recbuf++;
		  *dispbuf++=0xcc;
		  displen+=6;
		  break;

	case 0x19: //System information type 1
	case 0x02: //System information type 2bis
		  *dispbuf++=0x08;  //Cell Channel Description(Extended BCCH Frequency List)
		  *dispbuf++=16;
		  for(i=0;i<16;i++) *dispbuf++=*recbuf++;
		  *dispbuf++=0xcc;
		  displen+=19;

		  proc3byte(0x09)  //RACH Control Parameter
		  bytedisp(0x0a)   //SI1 rest
		  break;

	case 0x1a: //System information type 2
		  *dispbuf++=0x08;  //BCCH Frequency List
		  *dispbuf++=16;
		  for(i=0;i<16;i++) *dispbuf++=*recbuf++;
		  *dispbuf++=0xcc;
		  displen+=19;

		  bytedisp(0x0a)   //NCC permitted
		  proc3byte(0x09)  //RACH Control Parameter
		  break;

	case 0x1b: //System information type 3
		  proc2byte(0x08)  //Cell Identity
		  procLAI(0x09);   //LAI
//Control Channel Description
		  *dispbuf++=0x0c; //CCCH-CONF
		  *dispbuf++=0;
		  *dispbuf++=3;
		  *dispbuf++=*recbuf<<5;
		  *dispbuf++=0xcc;
		  *dispbuf++=0x0d; //BS-AG-BLKS-RES
		  *dispbuf++=0;
		  *dispbuf++=3;
		  *dispbuf++=*recbuf<<2;
		  *dispbuf++=0xcc;
		  *dispbuf++=0x0e; //ATT
		  *dispbuf++=0;
		  *dispbuf++=1;
		  *dispbuf++=(*recbuf++)&0x80;
		  *dispbuf++=0xcc;
		  *dispbuf++=0x0f; //BS-PA-MFRMS
		  *dispbuf++=0;
		  *dispbuf++=3;
		  *dispbuf++=*recbuf<<5;
		  *dispbuf++=0xcc;
		  recbuf++;
		  *dispbuf++=0x10; //T3212 timeout value
		  *dispbuf++=0;
		  *dispbuf++=8;
		  *dispbuf++=*recbuf++;
		  *dispbuf++=0xcc;
		  displen+=25;

		  bytedisp(0x11)   //Cell Option
		  proc2byte(0x12)  //Cell Select Parameter
		  proc3byte(0x13)  //RACH Control Parameter

		  *dispbuf++=0x14; //SI 3 rest
		  *dispbuf++=3;
		  for(i=0;i<3;i++) *dispbuf++=*recbuf++;
		  *dispbuf++=0xcc;
		  displen+=6;

		  break;

	case 0x1c: //System information type 4
		  procLAI(0x08);   //LAI
		  proc2byte(0x0b)  //Cell Select Parameter
		  proc3byte(0x0c)  //RACH Control Parameter
		  if((*recbuf&0x7f)==0x64)//CBCH信道描述
		  {bytedisp(0x0d)  //IEI
		   procChanDescription(0x0e); //CBCH信道描述
		  }//CBCH信道描述
		  if((*recbuf&0x72)==0x64) procVARInfoUnit(0x14);//CBCH Mobile Allocation

		  break;

	case 0x1f: //System information type 7
	case 0x18: //System information type 8
		*dispbuf++=0x08;
		*dispbuf++=20;
		for(i=0;i<20;i++) *dispbuf++=*recbuf++;
		*dispbuf++=0xcc;
		displen+=23;
		break;

	  default:break;
	 }//switch(mt)
	}//Radio Resource management message with L2 li
}


void procBSSMAPdisp()
{  BYTE i,li,oc,len,code;
	BYTE *bufbak;

	*dispbuf++=0x04;  //MT
	*dispbuf++=1;
	oc=*dispbuf++=*recbuf++;
	*dispbuf++=0xcc;
	displen+=4;

	switch(oc)  //operate code
	{
	 case 1:  //指配请求
		  procCHANNELType(0x05);  //“信道类型”
		  if(*recbuf==0x07) procL3firstInfo(0x0a);  //第3层首标信息
		  if(*recbuf==0x06) procpriority(0x0e);  //优先级
		  if(*recbuf==0x01) procGSMACIC(0x11);   //CIC
		  if(*recbuf==0x19) procDTXFlag(0x13);   //下行DTX标志
		  if(*recbuf==0x12) procVARInfoUnit(0x15); //级别信息类型2

		  break;


	 case 2:  //指配完成
		  if(*recbuf==0x15) procmix2byte(0x05);  //RR原因
		  if(*recbuf==0x05) procsmallareaID(0x07);   //小区识别
		  if(*recbuf==0x21) procselectchannel(0x0e); //选择的信道
		  if(*recbuf==0x23) procmix2byte(0x10);  //选择的加密算法
		  if(*recbuf==0x24) procmix2byte(0x12);  //电路组
		  break;


	 case 3:  //指配故障
		  procVARInfoUnit(0x05); //原因
		  if(*recbuf==0x15) procmix2byte(0x08);  //RR原因
		  if(*recbuf==0x24) procmix2byte(0x0a);  //电路组
		  if(*recbuf==0x25) procVARInfoUnit(0x0c);  //电路组表
		  break;


	 case 0x10:  //切换请求
		  procCHANNELType(0x05);  //“信道类型”
		  procPaswdInfo(0x0a);    //加密信息
		  if(*recbuf==0x1d) //update by 2000.10.30 by LHG
			  procmix2byte(0x0e); //级别信息类型1
		  if(*recbuf==0x12)
			  procVARInfoUnit(0x10); //级别信息类型2
		  procsmallareaID(0x13);     //(正在服务的)小区识别
		  if(*recbuf==0x06) procpriority(0x1a);  //优先级
		  if(*recbuf==0x01) procGSMACIC(0x1d);   //CIC
		  if(*recbuf==0x19) procDTXFlag(0x1f);   //下行DTX标志
		  procsmallareaID(0x21);     //(目标)小区识别
		  if(*recbuf==0x04) procVARInfoUnit(0x28); //原因
		  if(*recbuf==0x13) procVARInfoUnit(0x2b); //级别信息类型3
		  if(*recbuf==0x31) procmix2byte(0x2e);    //当前信道
		  break;


	 case 0x11:  //切换要求
		  procVARInfoUnit(0x05); //原因
		  if(*recbuf==0x1b) //响应请求
		  {*dispbuf++=0x08;  //单元识别
		   *dispbuf++=1;
		   *dispbuf++=*recbuf++;
		   *dispbuf++=0xcc;
		   displen+=4;
		  } //响应请求
		  procsmallareaIDtable(0x09);    //(优先的)小区识别表
		  if(*recbuf==0x25) procVARInfoUnit(0x10);  //电路组表
		  procmix2byte(0x13);    //当前信道
		  break;


	 case 0x12:  //切换请求证实
		  procVARInfoUnit(0x05);  //第3层信息
		  if(*recbuf==0x21) procselectchannel(0x08); //选择的信道
		  if(*recbuf==0x23) procmix2byte(0x0a);  //选择的加密算法
		  if(*recbuf==0x24) procmix2byte(0x0c);  //电路组
		  break;


	 case 0x13:  //切换命令
		  procVARInfoUnit(0x05);  //第3层信息
		  if(*recbuf==0x05) procsmallareaID(0x08);     //(目标)小区识别
		  break;


	 case 0x14:  //切换完成
		  if(*recbuf==0x15) procmix2byte(0x05);  //RR原因
		  break;


	 case 0x16:  //切换故障
		  procVARInfoUnit(0x05); //原因
		  if(*recbuf==0x15) procmix2byte(0x08);  //RR原因
		  if(*recbuf==0x24) procmix2byte(0x0a);  //电路组
		  if(*recbuf==0x25) procVARInfoUnit(0x0c);  //电路组表
		  break;


	 case 0x17:  //切换执行
		  procVARInfoUnit(0x05); //原因
		  procsmallareaID(0x08);     //小区识别
		  if(*recbuf==0x21) procselectchannel(0x0f); //选择的信道
		  if(*recbuf==0x23) procmix2byte(0x11);  //选择的加密算法
		  break;


	 case 0x18:  //切换候选者询问
		  procmix2byte(0x05);     //MS数目
		  procsmallareaIDtable(0x07); //小区识别表
		  procsmallareaID(0x0e);      //小区识别
		  break;


	 case 0x19:  //切换候选者响应
		  procmix2byte(0x05);    //MS数目
		  if(*recbuf==0x05) procsmallareaID(0x07);     //小区识别
		  break;


	 case 0x1a:  //切换要求拒绝
		  procVARInfoUnit(0x05); //原因
		  break;


	 case 0x20:  //清除命令
		  if(*recbuf==0x07) procL3firstInfo(0x05);  //第3层首标信息
		  procVARInfoUnit(0x09); //原因
		  break;


	 case 0x22:  //清除请求
	 case 0x30:  //复位
		  procmix2byte(0x05);    //MS数目
		  break;


	 case 0x25:  //SAPI“n”拒绝
		  procVARInfoUnit(0x05); //DLCI
		  procVARInfoUnit(0x07); //原因
		  break;


	 case 0x26:  //混乱
		  procVARInfoUnit(0x05); //原因
//诊断
		  *dispbuf++=0x08;  //单元识别
		  *dispbuf++=1;
		  *dispbuf++=*recbuf++;
		  *dispbuf++=0xcc;
		  *dispbuf++=0x09;  //“诊断”长度
		  *dispbuf++=1;
		  li=*dispbuf++=*recbuf++;
		  *dispbuf++=0xcc;
		  *dispbuf++=0x0a;  //“错误指针”(2字节)
		  *dispbuf++=2;
		  *(u16 *)dispbuf=*(u16 *)recbuf;
		  recbuf+=2;
		  dispbuf+=2;
		  *dispbuf++=0xcc;
		  li-=2;
		  *dispbuf++=0x0b;  //收到的消息
		  *dispbuf++=li;
		  for(i=0;i<li;i++) *dispbuf++=*recbuf++;
		  *dispbuf++=0xcc;
		  displen+=li+16;
		  break;


	 case 0x32:  //过载
		  procVARInfoUnit(0x05); //原因
		  if(*recbuf==0x05) procsmallareaID(0x08); //小区识别
		  break;


	 case 0x34:  //复位电路
		  procVARInfoUnit(0x05); //原因
		  procGSMACIC(0x08);         //CIC
		  break;


	 case 0x35:  //复位电路证实
		  procGSMACIC(0x05);         //CIC
		  break;


	 case 0x36:  //MSC调用跟踪
		  procmix2byte(0x05);  //跟踪类型
		  if(*recbuf==0x26) procVARInfoUnit(0x07);  //发起者识别
		  procTraceRef(0x0a);  //跟踪参考
		  if(*recbuf==0x28) procVARInfoUnit(0x0c);  //处理识别
		  if(*recbuf==0x29) procVARInfoUnit(0x0f);  //MS识别
		  if(*recbuf==0x2a) procVARInfoUnit(0x12);  //OMC识别
		  break;


	 case 0x37:  //BSS调用跟踪
		  procmix2byte(0x05);  //跟踪类型
		  if(*recbuf==0x2a) procmix2byte(0x07);  //前转指示符
		  if(*recbuf==0x26) procVARInfoUnit(0x09);  //发起者识别
		  procTraceRef(0x0c);  //跟踪参考
		  if(*recbuf==0x28) procVARInfoUnit(0x0e);  //处理识别
		  if(*recbuf==0x29) procVARInfoUnit(0x11);  //MS识别
		  break;


	 case 0x40:  //阻塞
		  procGSMACIC(0x05);   //CIC
		  procVARInfoUnit(0x07); //原因
		  break;


	 case 0x41:  //阻塞证实
	 case 0x42:  //解闭
	 case 0x43:  //解闭证实
		  procGSMACIC(0x05);   //CIC
		  break;


	 case 0x44:  //电路群阻塞
		  procVARInfoUnit(0x05); //原因
		  procGSMACIC(0x06);     //CIC
		  procGSMACICtable(0x0a);//电路识别码表
		  break;


	 case 0x45:  //电路群阻塞证实
	 case 0x46:  //电路群解闭
	 case 0x47:  //电路群解闭证实
	 case 0x48:  //未装备电路
		  procGSMACIC(0x05);         //CIC
		  procGSMACICtable(0x07);    //电路识别码表
		  break;


	 case 0x50:  //资源请求
		  procmix2byte(0x05);    //周期性
		  procmix2byte(0x07);    //资源指示方式
		  procsmallareaID(0x09); //小区识别
		  if(*recbuf==0x0d) procmix2byte(0x10);    //扩展资源指示符
		  break;


	 case 0x51:  //资源指示
		  procmix2byte(0x05);    //资源指示方式
		  if(*recbuf==0x03) procusableresoure(0x07);

⌨️ 快捷键说明

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