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

📄 svinapdisp.cpp

📁 七号信令解码器
💻 CPP
📖 第 1 页 / 共 4 页
字号:
//“扩展”
		  if((*recbuf&0x3f)==0x24) ProcExpand(0x0b);

		  if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
		  break;

	 case 53:  //取消:53
		  if((*recbuf&0x3f)==0) procsbasicpara(0x01); //调用ID
		  else if((*recbuf&0x3f)==1) procNULL(0x04);  //所有请求(NULL)
		  break;


	 case 54:  //取消状态报告请求:54
		  indeffmt=procsequencetag(0x01);
//“资源ID”选择“用户线ID”“设备群ID”“设备群成员ID”“中继群ID”
		  if((*recbuf&0x3f)==0x20)//资源ID
		  {indeffmt2=procsequencetag(0x03);  //资源ID sequence
		   if((*recbuf&0x3f)==0) procsbasicpara(0x05);//用户线ID
		   else if((*recbuf&0x3f)==0x21)//设备群ID
		   {indeffmt3=procsequencetag(0x08); //设备群ID sequence
			if((*recbuf&0x3f)==0) procsbasicpara(0x0a);  //中继群ID
			else if((*recbuf&0x3f)==1) procsbasicpara(0x0d); //单个设备ID
			else if((*recbuf&0x3f)==2) procsbasicpara(0x10); //搜索群
			else if((*recbuf&0x3f)==3) procsbasicpara(0x13); //路由索引

		    if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
		   }//设备群ID
		   else if((*recbuf&0x3f)==2)  procsbasicpara(0x13); //设备群成员ID
		   else if((*recbuf&0x3f)==3)  procsbasicpara(0x16); //中继群ID

		   if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
		  }//资源ID
		  
//“扩展”
		  if((*recbuf&0x3f)==0x21) ProcExpand(0x19);

		  if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
		  break;

	 case 27:  //收集信息:27
		  indeffmt=procsequencetag(0x01);
//振铃模式
		  if((*recbuf&0x3f)==0) procsbasicpara(0x03);
//编号计划
		  if((*recbuf&0x3f)==1) procsbasicpara(0x06);
//原被叫用户ID(原被叫号码)
		  if((*recbuf&0x3f)==2) procINAPADDR(0x09);
//跨越标志
		  if((*recbuf&0x3f)==3) procINAPADDR(0x0d);
//“扩展”
		  if((*recbuf&0x3f)==0x24) ProcExpand(0x11);
//主叫用户号码
		  if((*recbuf&0x3f)==5) procINAPADDR(0x1e);
//所拨数字
		  if((*recbuf&0x3f)==6) procINAPADDR(0x22);

		  if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
		  break;


	 case 20:  //连接:20
		  indeffmt=procsequencetag(0x01);
//目的地路由地址
		  indeffmt2=procsequencetag(0x03);
		  while((*recbuf&0x3f)==0x04) procINAPADDR(0x05); //被叫用户号码
		  if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
//振铃模式
		  if((*recbuf&0x3f)==1) procsbasicpara(0x09);
//相关ID
		  if((*recbuf&0x3f)==2) procsbasicpara(0x0c);
//切割和补偿
		  if((*recbuf&0x3f)==3) procsbasicpara(0x0f);
//前向条件(枚举)
		  if((*recbuf&0x3f)==4) procsbasicpara(0x12);
//与ISDN接入相关的信息
		  if((*recbuf&0x3f)==5) procsbasicpara(0x15);
//原被叫用户ID(原被叫号码)
		  if((*recbuf&0x3f)==6) procINAPADDR(0x18);
//路由清单
		  if((*recbuf&0x3f)==0x27)//路由清单
		  {indeffmt2=procsequencetag(0x1c);  //路由清单 sequence
		   while((*recbuf&0x3f)==0x04) procINAPADDR(0x1e); //路由
		   if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
		  }//路由清单
//SCFID
		  if((*recbuf&0x3f)==8) procsbasicpara(0x21);
//跨越标志
		  if((*recbuf&0x3f)==9) procINAPADDR(0x24);
//“扩展”
		  if((*recbuf&0x3f)==0x2a) ProcExpand(0x28);
//承载者
		  if((*recbuf&0x3f)==11) procBearer(0x35);
//业务相互作用表示语
		  if((*recbuf&0x3f)==26) procsbasicpara(0x39);
//主叫用户号码
		  if((*recbuf&0x3f)==27) procINAPADDR(0x3c);
//主叫用户类别
		  if((*recbuf&0x3f)==28) procsbasicpara(0x40);
//改向用户ID
		  if((*recbuf&0x3f)==29) procINAPADDR(0x43);
//改向信息
		  if((*recbuf&0x3f)==30) procsbasicpara(0x47);

		  if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
		  break;

	 case 19:  //连接到资源:19
		  indeffmt=procsequencetag(0x01);
//“资源地址”选择“IP路由地址”“legID”“两个都要”“两个都不要”
		  if((*recbuf&0x3f)==0) procINAPADDR(0x03);  //IP路由地址
		  else if((*recbuf&0x3f)==0x21)//legID选择"发方ID""收方ID"
		    procLegID(0x07); //LEGID
		  else if((*recbuf&0x3f)==0x22)//两个都要
		  {indeffmt2=procsequencetag(0x0f); //IP路由地址和legID sequence
		   procINAPADDR(0x03);  //IP路由地址

		   procLegID(0x07);//LEGID
		  
		   if(indeffmt2!=0) {recbuf+=indeffmt2*2;UDTlen-=indeffmt2*2;}
		  }//两个都要
		  else if((*recbuf&0x3f)==3) procNULL(0x11);  //两个都不要(NULL)
//“扩展”
		  if((*recbuf&0x3f)==0x25) ProcExpand(0x13);
//业务相互作用表示语
		  if((*recbuf&0x3f)==30) procsbasicpara(0x21);

		  if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
		  break;

	 case 17:  //建立临时连接:17
		  indeffmt=procsequencetag(0x01);
//辅助SSPIP路由地址
		  procINAPADDR(0x03);
//相关ID
		  if((*recbuf&0x3f)==1) procsbasicpara(0x07);
//legID
		  if((*recbuf&0x3f)==0x22) procLegID(0x0a);
//SCFID
		  if((*recbuf&0x3f)==3) procsbasicpara(0x12);
//承载者
		  if((*recbuf&0x3f)==5) procBearer(0x15);
//“扩展”
		  if((*recbuf&0x3f)==0x26) ProcExpand(0x19);
//业务相互作用表示语
		  if((*recbuf&0x3f)==30) procsbasicpara(0x26);

		  if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
		  break;


	 case 26:  //计费事件通知:26
		  indeffmt=procsequencetag(0x01);
//计费事件类型
		  procsbasicpara(0x03);
//计费事件规定的信息
		  if((*recbuf&0x3f)==1) procsbasicpara(0x06);
//legID
		  if((*recbuf&0x3f)==0x22) procLegID(0x09);
//“扩展”
		  if((*recbuf&0x3f)==0x23) ProcExpand(0x11);
//监视方式(枚举)
		  if((*recbuf&0x3f)==30) procsbasicpara(0x1e);

		  if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
		  break;


	 case 24:  //BCSM事件报告:24
		  indeffmt=procsequencetag(0x01);
//BCSM事件类型(枚举)
		  procsbasicpara(0x03);
//BCSM事件相关ID
		  if((*recbuf&0x3f)==1) procsbasicpara(0x1c);
//“BCSM事件规定的信息”选择  //P60
		  if((*recbuf&0x3f)==0x22)//BCSM事件规定的信息
		  {indeffmt2=procsequencetag(0x09);  //BCSM收集的信息规定的信息 sequence
		   if((*recbuf&0x3f)==0x20)//收集的信息规定的信息
		   {indeffmt3=procsequencetag(0x0b);//收集的信息规定的信息 sequence
		    if((*recbuf&0x3f)==0) procINAPADDR(0x0d); //被叫用户号码
		    if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
		   }//收集的信息规定的信息
		   else if((*recbuf&0x3f)==0x21)//分析信息规定的信息
		   {indeffmt3=procsequencetag(0x11);//分析信息规定的信息 sequence
		    if((*recbuf&0x3f)==0) procINAPADDR(0x0d); //被叫用户号码
		    if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
		   }//分析信息规定的信息
		   else if((*recbuf&0x3f)==0x22)//路由选择故障规定的信息
		   {indeffmt3=procsequencetag(0x13);//路由选择故障规定的信息 sequence
		    if((*recbuf&0x3f)==0) procCase(0x15); //失败原因
		    if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
		   }//路由选择故障规定的信息
		   else if((*recbuf&0x3f)==0x23)//O-被叫忙规定的信息
		   {indeffmt3=procsequencetag(0x18);//O-被叫忙规定的信息 sequence
		    if((*recbuf&0x3f)==0) procCase(0x1a); //忙原因
		    if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
		   }//O-被叫忙规定的信息
		   else if((*recbuf&0x3f)==0x24)//O-无应答规定的信息
		   {
		   }//O-无应答规定的信息
		   else if((*recbuf&0x3f)==0x25)//O-应答规定的信息
		   {
		   }//O-应答规定的信息
		   else if((*recbuf&0x3f)==0x26)//O-中间呼叫规定的信息
		   {indeffmt3=procsequencetag(0x21);//O-中间呼叫规定的信息 sequence
		    if((*recbuf&0x3f)==0) procsbasicpara(0x23); //连接时间
		    if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
		   }//O-中间呼叫规定的信息
		   else if((*recbuf&0x3f)==0x27)//O-拆线规定的信息
		   {indeffmt3=procsequencetag(0x26);//O-拆线规定的信息 sequence
		    if((*recbuf&0x3f)==0) procCase(0x28); //释放原因
		    if((*recbuf&0x3f)==1) procsbasicpara(0x23);    //连接时间
		    if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
		   }//O-拆线规定的信息
		   else if((*recbuf&0x3f)==0x28)//T-被叫忙规定的信息
		   {indeffmt3=procsequencetag(0x2b);//T-被叫忙规定的信息 sequence
		    if((*recbuf&0x3f)==0) procCase(0x1a); //忙原因
		    if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
		   }//T-被叫忙规定的信息
		   else if((*recbuf&0x3f)==0x29)//T-无应答规定的信息
		   {
		   }//T-无应答规定的信息
		   else if((*recbuf&0x3f)==0x2a)//T-应答规定的信息
		   {
		   }//T-应答规定的信息
		   else if((*recbuf&0x3f)==0x2b)//T-中间呼叫规定的信息
		   {indeffmt3=procsequencetag(0x31);//T-中间呼叫规定的信息 sequence
		    if((*recbuf&0x3f)==0) procsbasicpara(0x23); //连接时间
		    if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
		   }//T-中间呼叫规定的信息
		   else if((*recbuf&0x3f)==0x2c)//T-拆线规定的信息
		   {indeffmt3=procsequencetag(0x33);//T-拆线规定的信息 sequence
		    if((*recbuf&0x3f)==0) procCase(0x28); //释放原因
		    if((*recbuf&0x3f)==1) procsbasicpara(0x23);    //连接时间
		    if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
		   }//O-拆线规定的信息
		   if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
		  }//BCSM事件规定的信息
//legID
		  if((*recbuf&0x3f)==0x23) procLegID(0x35);
//杂项呼叫信息
		  if((*recbuf&0x3f)==0x24)//杂项呼叫信息
		  {indeffmt2=procsequencetag(0x3d);//杂项呼叫信息 sequence
		   if((*recbuf&0x3f)==0) procsbasicpara(0x3f); //信息类型(枚举)
		   if((*recbuf&0x3f)==1) procsbasicpara(0x42); //dp分配(枚举)
		   if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
		  }//杂项呼叫信息
//“扩展”
		  if((*recbuf&0x3f)==0x25) ProcExpand(0x45);

		  if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
		  break;

	 case 34:  //提供计费信息:34
		  if(*(recbuf+1)==0x80) li=0;
		  else if (*(recbuf+1)<0x80) li=*(recbuf+2);
		  else li=*(recbuf+3);
		  len=UDTlen;
		  indeffmt=procsequencetag(0x01); //FCI帐单计费特性 sequence
//计费模式
		  if((*recbuf&0x3f)==0) procsbasicpara(0x03);
//计费记录标识
		  if((*recbuf&0x3f)==1) procsbasicpara(0x06);
//计费动作(枚举)
		  if((*recbuf&0x3f)==2) procsbasicpara(0x09);
//计费部分(枚举)
		  if((*recbuf&0x3f)==4) procsbasicpara(0x0c);
//计费记录处理
		  if((*recbuf&0x3f)==5) procsbasicpara(0x0f);
//主叫用户号码
		  if((*recbuf&0x3f)==6) procINAPADDR(0x12);
//被叫用户号码
		  if((*recbuf&0x3f)==7) procINAPADDR(0x16);
//目标地址号码
		  if((*recbuf&0x3f)==8) procINAPADDR(0x1a);
//位置号码
		  if((*recbuf&0x3f)==9) procINAPADDR(0x1e);
//计费用户标识指示
		  if((*recbuf&0x3f)==10) procsbasicpara(0x22);
//规定的计费号码
		  if((*recbuf&0x3f)==11) procINAPCHGADDR(0x25);
//附加费
		  if((*recbuf&0x3f)==0x2c) ProcAdditionalCharg(0x29);
//计费类别
		  if((*recbuf&0x3f)==13) procsbasicpara(0x31);
//计费调整率
		  if((*recbuf&0x3f)==0x2e) ProcAdjustRate(0x34);
//开始计费方式(枚举)
		  if((*recbuf&0x3f)==15) procsbasicpara(0x3c);
//停止计费方式(枚举)
		  if((*recbuf&0x3f)==16) procsbasicpara(0x3f);
//详细帐单计费记录类型
		  if((*recbuf&0x3f)==17) procsbasicpara(0x42);
//是否发送计费信息(枚举)
		  if((*recbuf&0x3f)==18) procsbasicpara(0x45);
//透明参数
		  if((*recbuf&0x3f)==19) procsbasicpara(0x48);
		  if((*recbuf&0x3f)==20) procsbasicpara(0x48);
		  if((*recbuf&0x3f)==21) procsbasicpara(0x48);
		  if((*recbuf&0x3f)==22) procsbasicpara(0x48);
		  if((*recbuf&0x3f)==23) procsbasicpara(0x48);
		  if((*recbuf&0x3f)==24) procsbasicpara(0x48);
		  if((*recbuf&0x3f)==25) procsbasicpara(0x48);
		  if((*recbuf&0x3f)==26) procsbasicpara(0x48);
		  if((*recbuf&0x3f)==27) procsbasicpara(0x48);
		  if((*recbuf&0x3f)==28) procsbasicpara(0x48);
		  if((*recbuf&0x3f)==29) procsbasicpara(0x48);
		  if((*recbuf&0x3f)==30) procsbasicpara(0x48);
		  if((*recbuf&0x3f)==31) procsbasicpara(0x48);
		  len-=UDTlen;
		  if (len<li || li==0)
		  {if((*recbuf&0x3f)==32) procsbasicpara(0x48);
		   if((*recbuf&0x3f)==33) procsbasicpara(0x48);
		   if((*recbuf&0x3f)==34) procsbasicpara(0x48);
		  }
		  if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
		  break;

	 case 0:  //启动DP:0
		  indeffmt=procsequencetag(0x01); //FCI帐单计费特性 sequence
//业务键
		  if((*recbuf&0x3f)==0) procsbasicpara(0x03);
//“所拨数字”
		  if((*recbuf&0x3f)==1) procsbasicpara(0x06);
//被叫用户号码
		  if((*recbuf&0x3f)==2) procINAPADDR(0x09);
//主叫用户号码
		  if((*recbuf&0x3f)==3) procINAPADDR(0x0D);
//主叫用户商业集团ID
		  if((*recbuf&0x3f)==4) procINAPADDR(0x11);
//主叫用户类别
		  if((*recbuf&0x3f)==5) procsbasicpara(0x15);
//主叫用户子地址
		  if((*recbuf&0x3f)==6) procINAPADDR(0x18);
//遇到呼叫间隙(枚举)
		  if((*recbuf&0x3f)==7) procsbasicpara(0x1c);
//IPSSP能力
		  if((*recbuf&0x3f)==8) procsbasicpara(0x1f);
//遇到呼叫间隙(枚举)
		  if((*recbuf&0x3f)==9) procsbasicpara(0x22);
//位置号码
		  if((*recbuf&0x3f)==10) procINAPADDR(0x25);
//杂项呼叫信息
		  if((*recbuf&0x3f)==0x2b)//杂项呼叫信息
		  {indeffmt2=procsequencetag(0x29);//杂项呼叫信息 sequence
		   if((*recbuf&0x3f)==0) procsbasicpara(0x2b); //信息类型(枚举)
		   if((*recbuf&0x3f)==1) procsbasicpara(0x2e); //dp分配(枚举)
		   if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
		  }//杂项呼叫信息
//原被叫用户ID
		  if((*recbuf&0x3f)==12) procINAPADDR(0x31);
//业务轮廓表示语
		  if((*recbuf&0x3f)==13) procsbasicpara(0x35);
//终端类型(枚举)
		  if((*recbuf&0x3f)==14) procsbasicpara(0x38);

⌨️ 快捷键说明

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