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

📄 preprocmsg.cpp

📁 七号信令解码器
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	Thirdlayermsg(buffer);  //提取第三层消息                //提取DTAP消息类型
	buffer++;
  }
  return;
}

//******************************************************************

int CShowMsg::BSSMAPmsgtype(unsigned char *buffer)   
{
	//提取BSSAP消息类型
	int msgstrlen;                 // 显示消息的字符串长度
	msgstrlen=strlen(mshowmsg.msgtype);
	switch(*buffer)
	{
	case 0x01:  sprintf(mshowmsg.msgtype+msgstrlen,"  Assignment Request ");
		return  0x01;		
	case 0x02:  sprintf(mshowmsg.msgtype+msgstrlen,"  Assignment Complete ");
		return  0x02;		
	case 0x03:  sprintf(mshowmsg.msgtype+msgstrlen,"  Assignment Failure ");
		return  0x03;		
	case 0x10:  sprintf(mshowmsg.msgtype+msgstrlen,"  Handover Request ");
		return  0x10;		
	case 0x11:  sprintf(mshowmsg.msgtype+msgstrlen,"  Handover Required ");
		return  0x11;		
	case 0x12:  sprintf(mshowmsg.msgtype+msgstrlen,"  Handover Request Acknowledge ");
		return  0x12;		
	case 0x13:  sprintf(mshowmsg.msgtype+msgstrlen,"  Handover Command ");
		return  0x13;		
	case 0x14:  sprintf(mshowmsg.msgtype+msgstrlen,"  Handover Complete ");
		return  0x14;		
	case 0x16:  sprintf(mshowmsg.msgtype+msgstrlen,"  Handover Failure ");
		return  0x16;		
	case 0x17:  sprintf(mshowmsg.msgtype+msgstrlen,"  Handover Performed ");
		return  0x17;		
	case 0x18:  sprintf(mshowmsg.msgtype+msgstrlen,"  Handover Candidate Enquiry ");
		return  0x18;		
	case 0x19:  sprintf(mshowmsg.msgtype+msgstrlen,"  Handover Candidate Response ");
		return  0x19;	
	case 0x1A:  sprintf(mshowmsg.msgtype+msgstrlen,"  Handover Required Reject ");
		return  0x1A;		
	case 0x1B:  sprintf(mshowmsg.msgtype+msgstrlen,"  Handover Detect ");
		return  0x1B;		
	case 0x20:  sprintf(mshowmsg.msgtype+msgstrlen,"  Clear Command ");
		return  0x20;		
	case 0x21:  sprintf(mshowmsg.msgtype+msgstrlen,"  Clear Complete ");
		return  0x21;		
	case 0x22:  sprintf(mshowmsg.msgtype+msgstrlen,"  Clear Request ");
		return  0x22;		
	case 0x25:  sprintf(mshowmsg.msgtype+msgstrlen,"  SAP“n”Reject ");
		return  0x25;		
	case 0x26:  sprintf(mshowmsg.msgtype+msgstrlen,"  Confusion ");
		return  0x26;		
	case 0x30:  sprintf(mshowmsg.msgtype+msgstrlen,"  Reset ");
		return  0x30;		
	case 0x31:  sprintf(mshowmsg.msgtype+msgstrlen,"  Reset Acknowledge ");
		return  0x31;		
	case 0x32:  sprintf(mshowmsg.msgtype+msgstrlen,"  Overload ");
		return  0x32;		
	case 0x34:  sprintf(mshowmsg.msgtype+msgstrlen,"  Reset Circuit ");
		return  0x34;		
	case 0x35:  sprintf(mshowmsg.msgtype+msgstrlen,"  Reset Circuit Acknowledge ");
		return  0x35;		
	case 0x36:  sprintf(mshowmsg.msgtype+msgstrlen,"  MSC Invoke Trace ");
		return  0x36;		
	case 0x37:  sprintf(mshowmsg.msgtype+msgstrlen,"  BSS Invoke Trace ");
		return  0x37;	
	case 0x40:  sprintf(mshowmsg.msgtype+msgstrlen,"  Block ");
		return  0x40;		
	case 0x41:  sprintf(mshowmsg.msgtype+msgstrlen,"  Block Acknowledge ");
		return  0x41;		
	case 0x42:  sprintf(mshowmsg.msgtype+msgstrlen,"  Unblock ");
		return  0x42;		
	case 0x43:  sprintf(mshowmsg.msgtype+msgstrlen,"  Unblocking Acknowledge ");
		return  0x43;		
	case 0x44:  sprintf(mshowmsg.msgtype+msgstrlen,"  Circuit Group Block ");
		return  0x44;		
	case 0x45:  sprintf(mshowmsg.msgtype+msgstrlen,"  Circuit Group Blocking Acknowledge ");
		return  0x45;		
	case 0x46:  sprintf(mshowmsg.msgtype+msgstrlen,"  Circuit Group Unblock ");
		return  0x46;		
	case 0x47:  sprintf(mshowmsg.msgtype+msgstrlen,"  Circuit Group Unblocking Acknowledge ");
		return  0x47;		
	case 0x48:  sprintf(mshowmsg.msgtype+msgstrlen,"  Unequipped Circuit ");
		return  0x48;		
	case 0x50:  sprintf(mshowmsg.msgtype+msgstrlen,"  Resource Request ");
		return  0x50;		
	case 0x51:  sprintf(mshowmsg.msgtype+msgstrlen,"  Resource Indication ");
		return  0x51;		
	case 0x52:  sprintf(mshowmsg.msgtype+msgstrlen,"  Paging ");
		return  0x52;		
	case 0x53:  sprintf(mshowmsg.msgtype+msgstrlen,"  Cipher Mode Command ");
		return  0x53;		
	case 0x54:  sprintf(mshowmsg.msgtype+msgstrlen,"  Classmark Update ");
		return  0x54;		
	case 0x55:  sprintf(mshowmsg.msgtype+msgstrlen,"  Cipher Mode Complete ");
		return  0x55;		
	case 0x56:  sprintf(mshowmsg.msgtype+msgstrlen,"  Queuing Indication ");
		return  0x56;		
	case 0x57:  sprintf(mshowmsg.msgtype+msgstrlen,"  Complete Layer 3 Information ");
		return  0x57;		
	case 0x58:  sprintf(mshowmsg.msgtype+msgstrlen,"  Classmak Request ");
		return  0x58;		
	case 0x59:  sprintf(mshowmsg.msgtype+msgstrlen,"  Cipher Mode Reject ");
		return  0x59;		
	case 0x5A:  sprintf(mshowmsg.msgtype+msgstrlen,"  Load Indication ");
		return  0x5A;		
	default:
		return 0xFF;
	}
}

//******************************************************************

void CShowMsg::BSSMAPnumtaking(unsigned char *buffer,unsigned char operatecode)
{
    //提取BSSMAP主叫号码
	switch(operatecode)
	{
	case 0x12:         //切换请求证实
		{
			buffer+=2;              //指向第三层消息第一字节
			Thirdlayermsg(buffer);  //提取第三层消息
		}
		break;
	case 0x13:         //切换命令
		{
			buffer+=2;               //指向第三层消息第一字节
			Thirdlayermsg(buffer);   //提取第三层消息
		}
		break;
	case 0x52:         //寻呼
		{
			int imsilen=0;                        //IMSI号长度
			buffer++;                             //指向IMSI长度指示语
			imsilen=*buffer;					  //  IMSI长度 
			BSSAPIMSIcode(buffer,imsilen);        //提取IMSI号
			buffer+=imsilen+1;
			if(*buffer==0x09)                     //包含TMSI
			{
				int tmsilen=0;                    //TMSI号长度
				buffer++;
				tmsilen=*buffer;                        //TMSI长度
				BSSAPTMSIcode(buffer,tmsilen);    //提取TMSI号
			    buffer+=tmsilen+1;
			}
		}
		break;
	case 0x57:
		{
			buffer++;                 //指向小区识别长度
			buffer+=*buffer+3;        //指向第三层消息第一字节
			Thirdlayermsg(buffer);    //提取第三层消息
		}
	}

}

//******************************************************************

void CShowMsg::Thirdlayermsg(unsigned char *buffer)
{
	//提取第三层消息
	int msgstrlen;                 // 显示消息的字符串长度
	unsigned char operatecode;
	msgstrlen=strlen(mshowmsg.msgtype);
	switch((((*buffer)&0x06)<<5)|((*(buffer+1))&0x3F))
	{
		buffer++;
	case 0xFB: sprintf(mshowmsg.msgtype+msgstrlen," Additional Assignment ");  
		operatecode=0xFB;
	    break;
	case 0xFF: sprintf(mshowmsg.msgtype+msgstrlen," Immediate Assignment ");  
		operatecode=0xFF;
	    break;
	case 0xF9: sprintf(mshowmsg.msgtype+msgstrlen," Immediate Assignment Extended "); 
		operatecode=0xF9;
	    break;
	case 0xFA: sprintf(mshowmsg.msgtype+msgstrlen," Immediate Assignment Reject "); 
		operatecode=0xFA;
	    break;
	case 0xF5: sprintf(mshowmsg.msgtype+msgstrlen," Ciphering Mode Command ");
		operatecode=0xF5;
	    break;
	case 0xF2: sprintf(mshowmsg.msgtype+msgstrlen," Ciphering Mode Complete ");  
		operatecode=0xF2;
	    break;
	case 0xEE: sprintf(mshowmsg.msgtype+msgstrlen," Assignment Command ");
		operatecode=0xEE;
	    break;
	case 0xE9: sprintf(mshowmsg.msgtype+msgstrlen," Assignment Complete ");
		operatecode=0xE9;
	    break;
	case 0xEF: sprintf(mshowmsg.msgtype+msgstrlen," Assignment Failure ");  
		operatecode=0xEF;
	    break;
	case 0xEB: sprintf(mshowmsg.msgtype+msgstrlen," Handover Command ");  
		operatecode=0xEB;
	    break;
	case 0xEC: sprintf(mshowmsg.msgtype+msgstrlen," Handover Complete ");  
		operatecode=0xEC;
	    break;
    case 0xE8: sprintf(mshowmsg.msgtype+msgstrlen," Handover Failure ");  
		operatecode=0xE8;
	    break;
	case 0xED: sprintf(mshowmsg.msgtype+msgstrlen," Physical Information ");  
		operatecode=0xED;
	    break;
	case 0xCD: sprintf(mshowmsg.msgtype+msgstrlen," Channel Release ");  
		operatecode=0xCD;
	    break;
	case 0xCA: sprintf(mshowmsg.msgtype+msgstrlen," Partial Release ");  
		operatecode=0xCA;
	    break;
	case 0xCF: sprintf(mshowmsg.msgtype+msgstrlen," Partial Release Complete ");  
		operatecode=0xCF;
	    break;
	case 0xE1: sprintf(mshowmsg.msgtype+msgstrlen," Paging Request Type1 ");  
		operatecode=0xE1;
	    break;
	case 0xE2: sprintf(mshowmsg.msgtype+msgstrlen," Paging Request Type2 ");  
		operatecode=0xE2;
	    break;
	case 0xE4: sprintf(mshowmsg.msgtype+msgstrlen," Paging Request Type3 ");  
		operatecode=0xE4;
	    break;
	case 0xE7: sprintf(mshowmsg.msgtype+msgstrlen," Paging Response ");  
		operatecode=0xE7;
	    break;
	case 0xD8: sprintf(mshowmsg.msgtype+msgstrlen," System Information Type8 ");  
		operatecode=0xD8;
	    break;
	case 0xD9: sprintf(mshowmsg.msgtype+msgstrlen," System Information Type1 ");  
		operatecode=0xD9;
	    break;
	case 0xDA: sprintf(mshowmsg.msgtype+msgstrlen," System Information Type2 ");  
		operatecode=0xDA;
	    break;
	case 0xDB: sprintf(mshowmsg.msgtype+msgstrlen," System Information Type3 ");  
		operatecode=0xDB;
	    break;
	case 0xDC: sprintf(mshowmsg.msgtype+msgstrlen," System Information Type4 ");  
		operatecode=0xDC;
	    break;
	case 0xDD: sprintf(mshowmsg.msgtype+msgstrlen," System Information Type5 ");  
		operatecode=0xDD;
	    break;
	case 0xDE: sprintf(mshowmsg.msgtype+msgstrlen," System Information Type6 ");  
		operatecode=0xDE;
	    break;
	case 0xDF: sprintf(mshowmsg.msgtype+msgstrlen," System Information Type7 ");  
		operatecode=0xDF;
	    break;
	case 0xC2: sprintf(mshowmsg.msgtype+msgstrlen," System Information Type 2bis ");  
		operatecode=0xC2;
	    break;
	case 0xC3: sprintf(mshowmsg.msgtype+msgstrlen," System Information Type 2ter ");  
		operatecode=0xC3;
	    break;
	case 0xC5: sprintf(mshowmsg.msgtype+msgstrlen," System Information Type 5bis ");  
		operatecode=0xC5;
	    break;
	case 0xC6: sprintf(mshowmsg.msgtype+msgstrlen," System Information Type 5ter ");  
		operatecode=0xC6;
	    break;
	case 0xD0: sprintf(mshowmsg.msgtype+msgstrlen," Channel Mode Modify ");  
		operatecode=0xD0;
	    break;
	case 0xD2: sprintf(mshowmsg.msgtype+msgstrlen," RR Status ");  
		operatecode=0xD2;
	    break;
	case 0xD7: sprintf(mshowmsg.msgtype+msgstrlen," Channel Mode Modify Acknowledge ");  
		operatecode=0xD7;
	    break;
	case 0xD4: sprintf(mshowmsg.msgtype+msgstrlen," Frequency Redefinition ");  
		operatecode=0xD4;
	    break;
	case 0xD5: sprintf(mshowmsg.msgtype+msgstrlen," Measurement Report ");  
		operatecode=0xD5;
	    break;
	case 0xD6: sprintf(mshowmsg.msgtype+msgstrlen," Classmark Change ");  
		operatecode=0xD6;
	    break;
	case 0xD3: sprintf(mshowmsg.msgtype+msgstrlen," Classmark Enquiry ");  
		operatecode=0xD3;
	    break;
	case 0x81: sprintf(mshowmsg.msgtype+msgstrlen," IMSI Detach Indication ");  
		operatecode=0x81;
	    break;
	case 0x82: sprintf(mshowmsg.msgtype+msgstrlen," Location Updating Accept ");  
		operatecode=0x82;
	    break;
	case 0x84: sprintf(mshowmsg.msgtype+msgstrlen," Location Updating Reject ");  
		operatecode=0x84;
	    break;
	case 0x88: sprintf(mshowmsg.msgtype+msgstrlen," Location Updating Request ");  
		operatecode=0x88;
	    break;
	case 0x91: sprintf(mshowmsg.msgtype+msgstrlen," Authentication Reject ");  
		operatecode=0x91;
	    break;
	case 0x92: sprintf(mshowmsg.msgtype+msgstrlen," Authentication Request ");  
		operatecode=0x92;
	    break;
	case 0x94: sprintf(mshowmsg.msgtype+msgstrlen," Authentication Response ");  
		operatecode=0x94;
	    break;
	case 0x98: sprintf(mshowmsg.msgtype+msgstrlen," Identity Request ");  
		operatecode=0x98;
	    break;
	case 0x99: sprintf(mshowmsg.msgtype+msgstrlen," Identity Response ");  
		operatecode=0x99;
	    break;
	case 0x9A: sprintf(mshowmsg.msgtype+msgstrlen," TMSI Reallocation Commond ");  
		operatecode=0x9A;
	    break;
	case 0x9B: sprintf(mshowmsg.msgtype+msgstrlen," TMSI Reallocation Complete ");  
		operatecode=0x9B;
	    break;
	case 0xA1: sprintf(mshowmsg.msgtype+msgstrlen," CM Service Accept ");  
		operatecode=0xA1;
	    break;
	case 0xA2: sprintf(mshowmsg.msgtype+msgstrlen," CM Service Reject ");  
		operatecode=0xA2;
	    break;
	case 0xA3: sprintf(mshowmsg.msgtype+msgstrlen," CM Service Abort ");  
		operatecode=0xA3;
	    break;
	case 0xA4: sprintf(mshowmsg.msgtype+msgstrlen," CM Service Request ");  
		operatecode=0xA4;
	    break;
	case 0xA8: sprintf(mshowmsg.msgtype+msgstrlen," CM Re-Establishment Request ");  
		operatecode=0xA8;
	    break;
	case 0xA9: sprintf(mshowmsg.msgtype+msgstrlen," Abort ");  
		operatecode=0xA9;
	    break;
	case 0xB1: sprintf(mshowmsg.msgtype+msgstrlen," MM Status ");  
		operatecode=0xB1;
	    break;
	case 0x40: sprintf(mshowmsg.msgtype+msgstrlen," Escape to Nationally Specific ");  
		operatecode=0x40;
	    break;
	case 0x41: sprintf(mshowmsg.msgtype+msgstrlen," Alarting ");  
		operatecode=0x41;
	    break;
	case 0x48: sprintf(mshowmsg.msgtype+msgstrlen," Call Confirmed ");  
		operatecode=0x48;
	    break;
	case 0x42: sprintf(mshowmsg.msgtype+msgstrlen," Call Proceeding ");  
		operatecode=0x42;
	    break;
	case 0x47: sprintf(mshowmsg.msgtype+msgstrlen," Connect ");  
		operatecode=0x47;
	    break;
	case 0x4F: sprintf(mshowmsg.msgtype+msgstrlen," Connect Acknowledge ");  
		operatecode=0x4F;
	    break;
	case 0x4E: sprintf(mshowmsg.msgtype+msgstrlen," Emergency Setup ");  
		operatecode=0x4E;
	    break;
	case 0x43: sprintf(mshowmsg.msgtype+msgstrlen," Progress ");  
		operatecode=0x43;
	    break;
	case 0x45: sprintf(mshow

⌨️ 快捷键说明

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