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

📄 svmapdisp.cpp

📁 七号信令解码器
💻 CPP
📖 第 1 页 / 共 5 页
字号:
					return;
			}

			if((*recbuf&0x3f)==0x0d&&tempmap>0)
			{
				procNULL(0x36);//Ccbs呼叫
				if(tempmap>=2)
					tempmap-=2;
				else
					return;
			}
			if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
			if(tempmap!=0)
				return;
			// UDTlen-=indeffmt*2;
		}//operate
		else//result
		{
			if(*recbuf==0x30) //zxf 2001-8-14 for map2+
			{
				indeffmt=procsequencetag(0x01); 
				tempmap=iDataLength-indeffmt*2;
				procsISDNADDR(0x1f);  //漫游号码
				if(tempmap>=iAllLength)
					tempmap-=iAllLength;
				else
					return;
				if(*recbuf==0x30&&tempmap>0)
				{
					procExtension(0x23);
					if(tempmap>=iAllLength)
						tempmap-=iAllLength;
					else
						return;
				}
		        if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
				if(tempmap!=0)
					return;
			}
			else
				procsISDNADDR(0x1f);  //漫游号码 for map2			
		}
		break;
	 case 6://resumeCallHandling  MAP2+ zxf 
		 if (compt==1)
		 {
			indeffmt=procsequencetag(0x01);//resumeCallHandling  tag]
			tempmap=iDataLength-indeffmt*2;
			//tag=0 CallReferenceNumber
			procsbasicparamap2plus(0x03);//CallRefenceNo 0
			tempmap-=iAllLength;
			//tag=1 Ext_BasicServiceCode
			indeffmt1=procsequencetag(0x06);// 1  basicServiceGroup
			tempmap1=iDataLength-indeffmt1*2;
			if(tempmap>=iAllLength)
				tempmap-=iAllLength;
			else
				return;
			if((*recbuf&0x1f)==2&&tempmap1>0)
			{
				procsbasicparamap2plus(0x08);
				if(tempmap1>=iAllLength)
					tempmap1-=iAllLength;
				else
					return;
			}
			else if((*recbuf&0x1f)==3&&tempmap1>0)
			{
				procsbasicparamap2plus(0x0b);
				if(tempmap1>=iAllLength)
					tempmap1-=iAllLength;
				else
					return;
			}
		    if(indeffmt1!=0) {recbuf+=2;UDTlen-=2;}
			if(tempmap1!=0)
				return;
            //tag=2 forwardingData
			indeffmt1=procsequencetag(0x0e);//forwardingData
			tempmap1=iDataLength-indeffmt1*2;
			if(tempmap>=iAllLength)
				tempmap-=iAllLength;
			else
				return;
			if((*recbuf&0x1f)==5&&tempmap1>0)
			{
				procsISDNADDR(0x10);//forwardedToNumber
				if(tempmap1>=iAllLength)
					tempmap1-=iAllLength;
				else
					return;
			}
			if((*recbuf&0x1f)==4&&tempmap1>0)
			{
				procsISDNADDR(0x14);//forwardedToSubaddress
				if(tempmap1>=iAllLength)
					tempmap1-=iAllLength;
				else
					return;
			}
			if((*recbuf&0x1f)==6&&tempmap1>0)
			{
				procsbasicparamap2plus(0x18);//forwardingOptions
				if(tempmap1>=iAllLength)
					tempmap1-=iAllLength;
				else
					return;
			}
			if((*recbuf&0x1f)==7&&tempmap1>0)
			{
				procExtension(0x1b);//extensionContainer
				if(tempmap1>=iAllLength)
					tempmap1-=iAllLength;
				else
					return;
			}
		    if(indeffmt1!=0) {recbuf+=2;UDTlen-=2;}
			if(tempmap1!=0)
				return;
			//tag=3 imsi
			procIMSI(0x1e);//imsi 
			if(tempmap>=iAllLength)
				tempmap-=iAllLength;
			else
				return;
            //tag=4 CUG-CheckInfo
			if((*recbuf&0x1f)==4&&tempmap>0)
			{
				indeffmt1=procsequencetag(0x21);
				tempmap1=iDataLength-indeffmt1*2;
				if(tempmap>=iAllLength)
					tempmap-=iAllLength;
				else
					return;
				procsbasicparamap2plus(0x23);//CUG-Interlock
				tempmap1-=iAllLength;
				if(*recbuf==0x05&&tempmap1>0)
				{
					procNULL(0x26);//cug-OutgoingAccess
					if(tempmap1>=2)
						tempmap1-=2;
					else
						return;
				}
				if(*recbuf==0x30&&tempmap1>0)
				{
					procExtension(0x1b);//extensionContainer
					if(tempmap1>=iAllLength)
						tempmap1-=iAllLength;
					else
						return;
				}

				if(indeffmt1!=0) {recbuf+=2;UDTlen-=2;}
				if(tempmap1!=0)
					return;
			}
			//tag=5 0_Csi  
			if((*recbuf&0x1f)==5&&tempmap>0)
			{
				indeffmt1=procsequencetag(0x28);  //o-CSI sequence
				tempmap1=iDataLength-indeffmt1*2;
				if(tempmap>=iAllLength)
					tempmap-=iAllLength;
				else
					return;
				icounter=0;
				indeffmt2=procsequencetag(0x2a);//o-BcsmCamelTDP数据清单
				tempmap2=iDataLength-indeffmt2*2;
				if(tempmap1>=iAllLength)
					tempmap1-=iAllLength;
				else
					return;
				while((*recbuf==0x30)&&(icounter<=10)&&tempmap2>0)
				{
					indeffmt6=procsequencetag(0x2c);//-o-BcsmCamelTDP数据 
					tempmap3=iDataLength-indeffmt6*2;
					if(tempmap2>=iAllLength)
						tempmap2-=iAllLength;
					else
						return;
					procsbasicparamap2plus(0x2e);//o-BCSMTDP
					if(tempmap3>=iAllLength)
						tempmap3-=iAllLength;
					else
						return;
					procsbasicparamap2plus(0x31);//业务键(ServiceKey) 
					if(tempmap3>=iAllLength)
						tempmap3-=iAllLength;
					else
						return;
					procsISDNADDR(0x34);//gsmSCF地址 tag=xxx00000
					if(tempmap3>=iAllLength)
						tempmap3-=iAllLength;
					else
						return;
					procsbasicparamap2plus(0x38);//默认呼叫处理 tag=xxx00001
					if(tempmap3>=iAllLength)
						tempmap3-=iAllLength;
					else
						return;
					if((*recbuf&0x1f)==2&&tempmap3>0)
					{
						procExtension(0x1b);//扩展sequence
						if(tempmap3>=iAllLength)
							tempmap3-=iAllLength;
						else
							return;
					}
					if((*recbuf&0x1f)==3&&tempmap3>0) //o-BcsmCamelTDP标准
					{
						indeffmt3=procsequencetag(0x3b);//o-BcsmCamelTDP标准
						tempmap4=iDataLength-indeffmt3*2;
						if(tempmap3>=iAllLength)
							tempmap3-=iAllLength;
						else
							return;
						if((*recbuf&0x1f)==0&&tempmap4>0) //目的号码标准
						{
							indeffmt4=procsequencetag(0x3d);//目的号码标准
							tempmap5=iDataLength-indeffmt4*2;
							if(tempmap4>=iAllLength)
								tempmap4-=iAllLength;
							else
								return;
							procsbasicparamap2plus(0x3f);//匹配类型(matchType)
							tempmap5-=iAllLength;
							icounter1=0;
							if((*recbuf&0x1f)==1&&tempmap5>0)//destinationNumberList
							{
								indeffmt5=procsequencetag(0x42);//目的号码清单
								if(tempmap5>=iAllLength)
									tempmap5-=iAllLength;
								else
									return;
								tempmap6=iDataLength-indeffmt5*2;
								while(((*recbuf&0x1f)==1)&&(icounter1<10)&&tempmap6>0)//目的号码清单
								{
									procsISDNADDR(0x44);//目的号码(DestNumber)
									tempmap6-=iAllLength;
									icounter1++;
								}
								if(UDTlen>=indeffmt5*2){recbuf+=indeffmt5*2;UDTlen-=indeffmt5*2;}
								if(tempmap6!=0)
									return;
							}
							if((*recbuf&0x1f)==2&&tempmap5>0)//DestinationNumberLengthList
							{
								icounter1=0;
								indeffmt5=procsequencetag(0x48);//目的号码长度清单
                                tempmap6=iDataLength-indeffmt5*2;
								if(tempmap5>=iAllLength)
									tempmap5-=iAllLength;
								else
									return;
								while(((*recbuf&0x1f)==2)&&(icounter1<3)&&tempmap6>0)//目的号码长度清单
								{
									procsbasicparamap2plus(0x4a);//目的号码长度(DestNoLen)
									tempmap6-=iAllLength;
									icounter1++;
								}
								if(UDTlen>=indeffmt5*2){recbuf+=indeffmt5*2;UDTlen-=indeffmt5*2;}
								if(tempmap6!=0)
									return;
							}
							
							if(UDTlen>=indeffmt4*2){recbuf+=indeffmt4*2;UDTlen-=indeffmt4*2;}
							if(tempmap5!=0)
								return;
						}
						if((*recbuf&0x1f)==1&&tempmap4>0)//基本业务标准
						{
							indeffmt5=procsequencetag(0x4d);//基本业务标准
							tempmap5=iDataLength-indeffmt5*2;
							if(tempmap4>=iAllLength)
								tempmap4-=iAllLength;
							else
								return;
							if((*recbuf&0x1f)==2&&tempmap5>0)
							{
								procsbasicparamap2plus(0x4f);//承载业务码
								if(tempmap5>=iAllLength)
									tempmap5-=iAllLength;
								else
									return;
							}
							else if((*recbuf&0x1f)==3&&tempmap5>0) 
							{
								procsbasicparamap2plus(0x52);//电信业务码
								if(tempmap5>=iAllLength)
									tempmap5-=iAllLength;
								else
									return;
							}
							if(UDTlen>=indeffmt5*2){recbuf+=indeffmt5*2;UDTlen-=indeffmt5*2;}
							if(tempmap5!=0)
								return;
						}
						if((*recbuf&0x1f)==2&&tempmap4>0)
						{
							procsbasicparamap2plus(0x55);//呼叫类型标准
							if(tempmap4>=iAllLength)
								tempmap4-=iAllLength;
							else
								return;
						}
						
						if(UDTlen>=indeffmt3*2)
						{
							recbuf+=indeffmt3*2;
							UDTlen-=indeffmt3*2;
						}
						if(tempmap4!=0) 
							return;
					}
					if(UDTlen>=indeffmt6*2)
					{
						recbuf+=indeffmt6*2;
						UDTlen-=indeffmt6*2;
					}
					icounter++;
					if(tempmap3!=0)
						return;
				}
				
				if(UDTlen>=indeffmt2*2)
				{
					recbuf+=indeffmt2*2;
					UDTlen-=indeffmt2*2;
				}
				if(tempmap2!=0)
					return;
				if(*recbuf==0x30&&tempmap1>0)
				{
					procExtension(0x1b);//扩展(extension) 
					if(tempmap1>=iAllLength)
						tempmap1-=iAllLength;
					else
						return;
				}
				if((*recbuf&0x1f)==0&&tempmap1>0)
				{
					procsbasicparamap2plus(0x58);//Camel能力处理
					if(tempmap1>=iAllLength)
						tempmap1-=iAllLength;
					else
						return;
				}
				if(UDTlen>=indeffmt1*2)
				{
					recbuf+=indeffmt1*2;
					UDTlen-=indeffmt1*2;
				}
				if(tempmap1!=0)
					return;
			}
			//tag=7 扩展(extension)
			if((*recbuf&0x1f)==7&&tempmap>0)
			{
				procsbasicparamap2plus(0x1b);//扩展(extension)
				if(tempmap>=iAllLength)
					tempmap-=iAllLength;
				else
					return;
			}
			//tag=8 ccbsPossible
			if((*recbuf&0x1f)==8&&tempmap>0)
			{
				procNULL(0x5b);
				if(tempmap>=2)
					tempmap-=2;
				else
					return;
			}
			if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
			if(tempmap!=0)
				return;
		 }
		 else
		 {
			indeffmt=procsequencetag(0x01);
			tempmap=iDataLength-indeffmt*2;
			if(*recbuf==0x30&&tempmap>0)
			{
				procsbasicparamap2plus(0x1b);//扩展(extension)
				if(tempmap>=iAllLength)
					tempmap-=iAllLength;
				else
					return;
			}
			if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
			if(tempmap!=0)
				return;
		 }
		 break;
	 case 7:  //insert subscriber data
		if(compt==1)
		{	
			indeffmt=procsequencetag(0x01);
			if(iDataLength<=UDTlen)
				tempmap=iDataLength-indeffmt*2;
			else 
				tempmap=UDTlen-indeffmt*2;
			if((*recbuf&0x3f)==0)  //存在IMSI(任选项)
			{
				procIMSI(0x03);
				tempmap-=iAllLength;
			}
			//用户数据
			buf=&USERDATAfld[0];
			*buf++=0x06;  //ms isdn(任选项)
			*buf++=0x0a;  //类别(任选项)1
			*buf++=0x0d;  //用户状态(任选项)2
			*buf++=0x10;  //承载业务清单3
			*buf++=0x12;  //承载业务4
			*buf++=0x15;  //电信业务清单5
			*buf++=0x17;  //电信业务
			*buf++=0x1a;  //SS信息清单7
			//SS信息选择"前转信息"
			*buf++=0x1c;  //前转信息
			*buf++=0x1e;  //SS码
			*buf++=0x21;  //前转特性清单 sequence
			*buf++=0x23;   //前转特性 sequence
			//基本业务:"承载业务"和"电信业务"选择其一
			*buf++=0x12;  //承载业务
			*buf++=0x17;  //电信业务
			
			*buf++=0x25;  //SS状态
			*buf++=0x28;  //前转至的号码
			*buf++=0x3a;  //前转至子地址,V2
			*buf++=0x2c;  //前转选择
			*buf++=0x2f;  //无应答条件时间
			//SS信息选择"限制呼叫信息"
			*buf++=0x32;  //限制呼叫信息 sequence
			*buf++=0x1e;  //SS码
			*buf++=0x34;  //限制呼叫特性清单 sequence
			*buf++=0x36;  //限制呼叫特性 sequence
			//基本业务:"承载业务"和"电信业务"选择其一
			*buf++=0x12;  //承载业务
			*buf++=0x17;  //电信业务
			*buf++=0x25;  //SS状态
			//SS信息选择"SS数据"
			*buf++=0x38;  //SS数据 sequence
			*buf++=0x1e;  //SS码
			*buf++=0x25;  //SS状态//change 0x23 into 0x25 zxf 2001-8-20
			*buf++=0x3e;  //呼叫线识别限制选择
			*buf++=0x41;  //超跃种类
			*buf++=0x44;  //基本业务组清单
			*buf++=0x12;  //承载业务
			*buf++=0x17;  //电信业务
			
			
			USERDATAfld[129]=0x57;  //ODB一般数据
			USERDATAfld[130]=0x5a;  //ODB-HPLMN数据
			USERDATAfld[131]=0x5d;  //由于不支持的特性漫游限制(NULL)
			USERDATAfld[132]=0x5f;  //区域签约数据
			USERDATAfld[133]=0x61;  //签约码
			
			USERDATAfld[160]=0x46;  //CUG信息 sequence
			USERDATAfld[161]=0x48;  //CUG签约清单
			USERDATAfld[162]=0x4a;  //CUG签约 sequence
			USERDATAfld[163]=0x4c;  //CUG索引
			USERDATAfld[164]=0x4f;  //CUG连锁
			USERDATAfld[165]=0x52;  //内部CUG选择
			USERDATAfld[166]=0x44;  //基本业务组清单
			USERDATAfld[167]=0x12;  //承载业务码
			USERDATAfld[168]=0x17;  //电信业务码
			
			//zxf add down		 
			
			USERDATAfld[169]=0x64;  //CUG特性清单
			USERDATAfld[170]=0x6c;  //CUG特性
			USERDATAfld[171]=0x12;  //承载业务码
			USERDATAfld[172]=0x17;  //电信业务码
			USERDATAfld[173]=0x66;  //优先CUG指示
			USERDATAfld[174]=0x69;  //CUG内限制
			
			USERDATAfld[175]=0x73;//vbs签约数据(vbsSubscriptData)
			USERDATAfld[176]=0x75;//--话音广播数据(VBD)	
			USERDATAfld[177]=0x77;//--组标识(GroupId) 
			USERDATAfld[178]=0x7a;//--广播初始名称
			
			
			USERDATAfld[179]=0x7f;//vgcs签约数据
			USERDATAfld[180]=0x81;//--话音组呼叫数据(VoiceGroupCallData) 
			
			
			USERDATAfld[181]=0x83;//-vlrCamel签约信息
			
			USERDATAfld[182]=0x85;//--o-CSI sequence
			USERDATAfld[183]=0x87;//--o-BcsmCamelTDP数据清单
			USERDATAfld[184]=0xe5;//--o-BcsmCamelTDP数据
			USERDATAfld[185]=0x89;//-o-BCSMTDP
			USERDATAfld[186]=0x8c;//-业务键(ServiceKey)
			USERDATAfld[187]=0x8f;//-gsmSCF地址
			USERDATAfld[188]=0x93;//-默认呼叫处理
			USERDATAfld[189]=0x96;//-o-BcsmCamelTDP标准
			USERDATAfld[190]=0x98;//-目的号码标准
			USERDATAfld[191]=0x9a;//-匹配类型(matchType) 
			
			USERDATAfld[0xc0]=0x7c;//扩展(extension) zxf add 192
			USERDATAfld[0xc1]=0x99;//emlpp信息(emlpp Info)
			USERDATAfld[0xc2]=0x9b;//MaxEntitledPri
			USERDATAfld[0xc3]=0x9e;//默认优先级(DefaultPri)
			
			USERDATAfld[0xc4]=0x9d;//-目的号码清单(DestNoList)
			USERDATAfld[0xc5]=0x9f;//-目的号码
			USE

⌨️ 快捷键说明

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