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

📄 dspdetaibssmap.cpp

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

extern char  Net_MS_Alerting_Field[12][30];

extern BYTE  Net_MS_Alerting_FieldCrit[12][4];

extern char  MS_Net_Alerting_Field[10][30];

extern BYTE  MS_Net_Alerting_FieldCrit[10][4];

extern char  CallConfirmed_Field[14][30];

extern BYTE  CallConfirmed_FieldCrit[14][4];

extern char  CallProceeding_Field[15][30];

extern BYTE  CallProceeding_FieldCrit[15][4];

extern char  CongestionControl_Field[8][30];

extern BYTE  CongestionControl_FieldCrit[8][4];

extern char  Net_MS_Connect_Field[23][30];

extern BYTE  Net_MS_Connect_FieldCrit[23][4];

extern char  MS_Net_Connect_Field[14][30];

extern BYTE  MS_Net_Connect_FieldCrit[14][4];

extern char  Net_MS_Disconnect_Field[18][30];

extern BYTE  Net_MS_Disconnect_FieldCrit[18][4];

extern char  MS_Net_Disconnect_Field[16][30];

extern BYTE  MS_Net_Disconnect_FieldCrit[16][4];

extern char  EmergencySetup_Field[3][30];

extern BYTE  EmergencySetup_FieldCrit[3][4];

extern char  Net_MS_Facility_Field[2][30];

extern BYTE  Net_MS_Facility_FieldCrit[2][4];


extern char  MS_Net_Facility_Field[5][30];

extern BYTE  MS_Net_Facility_FieldCrit[5][4];

extern char  HoldReject_Field[6][30];

extern BYTE  HoldReject_FieldCrit[6][4];

extern char  Modify_Field[13][30];

extern BYTE  Modify_FieldCrit[13][4];

extern char  ModifyComplete_Field[13][30];

extern BYTE  ModifyComplete_FieldCrit[13][4];

extern char  ModifyReject_Field[18][30];

extern BYTE  ModifyReject_FieldCrit[18][4];

extern char  Notify_Field[1][30];

extern BYTE  Notify_FieldCrit[1][4];

extern char  Progress_Field[9][30];

extern BYTE  Progress_FieldCrit[9][4];

extern char  Net_MS_Release_Field[21][30];

extern BYTE  Net_MS_Release_FieldCrit[21][4];

extern char  MS_Net_Release_Field[24][30];

extern BYTE  MS_Net_Release_FieldCrit[24][4];

extern char  Net_MS_ReleaseComplete_Field[14][30];

extern BYTE  Net_MS_ReleaseComplete_FieldCrit[14][4];

extern char  MS_Net_ReleaseComplete_Field[17][30];

extern BYTE  MS_Net_ReleaseComplete_FieldCrit[17][4];

extern char  RetrieveReject_Field[6][30];

extern BYTE  RetrieveReject_FieldCrit[6][4];

extern char  Start_DTMF_Reject_Field[6][30];

extern BYTE  Start_DTMF_Reject_FieldCrit[6][4];

extern char  MobileTerminateSetup_Field[63][30];

extern BYTE  MobileTerminateSetup_FieldCrit[63][4];

extern char  MobileOriginateSetup_Field[54][30];

extern BYTE  MobileOriginateSetup_FieldCrit[54][4];

extern char  Start_DTMF_Field[2][30];

extern BYTE  Start_DTMF_FieldCrit[2][4];

extern char  Start_DTMF_Ack_Field[2][30];

extern BYTE  Start_DTMF_Ack_FieldCrit[2][4];

extern char  Status_Field[10][30];

extern BYTE  Status_FieldCrit[10][4];

extern char  UserInformation_Field[4][30];

extern BYTE  UserInformation_FieldCrit[4][4];


//local function

extern BYTE			TcapKind,TcapCpntKind,ScmgKind,MapKind,MapErrKind,BssMapKind,RadioResKind,MobilityKind,CallControlKind;
extern BYTE			MsgSU,MsgUP,MsgKind,MsgFKind,FieldNo;
extern char			DataStr[100];

/****************************************************************************
 *                                                                          *
 *  FUNCTION   : GetBssMapKind()                                             *
 *  PURPOSE  : Get One Byte Data's Str
 *
 ****************************************************************************/
int DrawBssMapVeiw(CMsgText& msgText,WORD I,WORD Len2,WORD Len3,WORD wCIC,int nDrawX,int nDrawY,int DltY, float PtRate,bool YOrNTxt)
{       //SCCP
	char  Str[250],Str1[100],Str2[270];
	BYTE  J,Num,bData,ShowType,ByteNum,ByteNum1;
	WORD  Wnum;      //sccp
	DWORD  dwNum;      //sccp
	int   DeltaXL,DeltaXS,DeltaX,X0,Len4,K;
	BOOL  bEnd;

	strcpy(bssmap_TotalDataStr,"");
	DeltaXL=120;
	DeltaX=130;
	DeltaXS=40;
	switch(BssMapKind) {
		case 1:         //AssignRequest
			if(MsgFKind<19) {
				switch(MsgFKind+1) {
				default:
					ShowType=AssignRequest_FieldCrit[MsgFKind][3];
					strcpy(Str2,"");
					for(J=0;J<Len3;++J) {
						bData=BUFDISPLAY[I];
						I++;
						Num=8;
						if(Len2!=Len3 && J==(Len2/8))
							Num=Len2%8;
						bEnd=GetDataStr(bData,Num,ShowType);  //2 is show type
						if(!bEnd) {
							sprintf(Str2,"?: %02Xh",bData);
							I+=(Len3-1-J);
							break;
						}
						strcat(Str2,DataStr);
					}
					strcpy(Str,AssignRequest_Field[MsgFKind]);
					nDrawX+=DeltaXL;
					if(YOrNTxt==true)
					strcat(bssmap_TotalDataStr,Str);
					else
					msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
					if(ShowType==1)
						sprintf(Str,": %sb",Str2);
					else {
						if(ShowType==2)
							sprintf(Str,": %sh",Str2);
						else  sprintf(Str,": %s",Str2);
					}
					strcat(Str,"   ");
					GetBssMapFieldStr(bData);
					strcat(Str,DataStr);
					nDrawX+=DeltaX;
					if(YOrNTxt==true)
					{strcat(bssmap_TotalDataStr,Str);
					strcat(bssmap_TotalDataStr,"\r\n");}
					else
					msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
					nDrawY+=DltY;
					break;

				case 5://	VolCode_DataSpeedID
					ShowType=AssignRequest_FieldCrit[MsgFKind][3];
					strcpy(Str2,"");
					for(J=0;J<Len3;++J) {
						bData=BUFDISPLAY[I];
						I++;
						Num=8;
						if(Len2!=Len3 && J==(Len2/8))
							Num=Len2%8;
						bEnd=GetDataStr(bData,Num,ShowType);
						strcat(Str2,DataStr);
					}
					strcpy(Str,AssignRequest_Field[MsgFKind]);
					nDrawX+=DeltaXL;
					if(YOrNTxt==true)
					strcat(bssmap_TotalDataStr,Str);
					else
					msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
					sprintf(Str,": %sb  ",Str2);
					strcat(Str," 语音编码算法/数据速率和透明指示");
					nDrawX+=DeltaX;
					if(YOrNTxt==true)
					strcat(bssmap_TotalDataStr,Str);
					else
					msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
					nDrawY=DrawVolCode_DataSpeedIDStr(msgText,bData,nDrawX,nDrawY,DltY,PtRate,YOrNTxt);
					if(YOrNTxt==true)
					{strcat(bssmap_TotalDataStr,bssmapstr_TotalDataStr);
					strcat(bssmap_TotalDataStr,"\r\n");}
					nDrawY+=DltY;
					break;
				case 12://	Priority
					ShowType=AssignRequest_FieldCrit[MsgFKind][3];
					strcpy(Str2,"");
					for(J=0;J<Len3;++J) {
						bData=BUFDISPLAY[I];
						I++;
						Num=8;
						if(Len2!=Len3 && J==(Len2/8))
							Num=Len2%8;
						bEnd=GetDataStr(bData,Num,ShowType);
						strcat(Str2,DataStr);
					}
					strcpy(Str,AssignRequest_Field[MsgFKind]);
					nDrawX+=DeltaXL;
					if(YOrNTxt==true)
					strcat(bssmap_TotalDataStr,Str);
					else
					msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
					sprintf(Str,": %sb  ",Str2);
					strcat(Str," 优先级");
					nDrawX+=DeltaX;
					if(YOrNTxt==true)
					strcat(bssmap_TotalDataStr,Str);
					else
					msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
					nDrawY=DrawPriorityStr(msgText,bData,nDrawX,nDrawY,DltY,PtRate,YOrNTxt);
					if(YOrNTxt==true)
					{strcat(bssmap_TotalDataStr,bssmapstr_TotalDataStr);
					strcat(bssmap_TotalDataStr,"\r\n");}
					nDrawY+=DltY;
					break;
				case 14://	CIC
					ShowType=AssignRequest_FieldCrit[MsgFKind][3];
					strcpy(Str2,"");
					if(Len3==2) {
						bData=BUFDISPLAY[I];
						I++;
						Num=8;
						bEnd=GetDataStr(bData,Num,ShowType);
						strcat(Str2,DataStr);
						ByteNum=BUFDISPLAY[I];
						I++;
						Num=8;
						bEnd=GetDataStr(ByteNum,Num,ShowType);
						strcat(Str2,DataStr);
						strcpy(Str,AssignRequest_Field[MsgFKind]);
						nDrawX+=DeltaXL;
						if(YOrNTxt==true)
						strcat(bssmap_TotalDataStr,Str);
						else
						msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
						if(ShowType==1)
							 sprintf(Str,": %sb",Str2);
						else {
							 if(ShowType==2)
								 sprintf(Str,": %sh",Str2);
							 else  sprintf(Str,": %s",Str2);
						}
						strcat(Str," CIC值");
						nDrawX+=DeltaX;
						if(YOrNTxt==true)
						strcat(bssmap_TotalDataStr,Str);
						else
						msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
						Wnum=(WORD)bData;
						Wnum*=256;
						Wnum+=ByteNum;
						nDrawY=DrawCICStr(msgText,Wnum,nDrawX,nDrawY,DltY,PtRate,YOrNTxt);
						if(YOrNTxt==true)
						{strcat(bssmap_TotalDataStr,bssmapstr_TotalDataStr);
						strcat(bssmap_TotalDataStr,"\r\n");}
						nDrawY+=DltY;
					}
					else I+=Len3;		//error not show error skip
					break;
				case 19://	ClassMarkInfo2
					ShowType=AssignRequest_FieldCrit[MsgFKind][3];
					strcpy(Str2,"");
					if(Len3>=3) {		//only handle 3
						bData=BUFDISPLAY[I];
						I++;
						Num=8;
						bEnd=GetDataStr(bData,Num,ShowType);
						strcat(Str2,DataStr);
						ByteNum=BUFDISPLAY[I];
						I++;
						Num=8;
						bEnd=GetDataStr(ByteNum,Num,ShowType);
						strcat(Str2,DataStr);
						ByteNum1=BUFDISPLAY[I];
						I++;
						I-=3;		//restore I 
						Num=8;
						bEnd=GetDataStr(ByteNum1,Num,ShowType);
						strcat(Str2,DataStr);
						strcpy(Str,AssignRequest_Field[MsgFKind]);
						nDrawX+=DeltaXL;
						if(YOrNTxt==true)
						strcat(bssmap_TotalDataStr,Str);
						else
						msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
						if(ShowType==1)
							 sprintf(Str,": %sb",Str2);
						else {
							 if(ShowType==2)
								 sprintf(Str,": %sh",Str2);
							 else  sprintf(Str,": %s",Str2);
						}
						strcat(Str," 级别信息类型2");
						nDrawX+=DeltaX;
						if(YOrNTxt==true)
						strcat(bssmap_TotalDataStr,Str);
						else
						msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
						dwNum=(DWORD)bData;
						dwNum*=65536;
						dwNum+=(DWORD)ByteNum*256;
						dwNum+=ByteNum1;
						nDrawY=DrawClassMarkInfo2Str(msgText,dwNum,nDrawX,nDrawY,DltY,PtRate,YOrNTxt);
						if(YOrNTxt==true)
						{strcat(bssmap_TotalDataStr,bssmapstr_TotalDataStr);
						strcat(bssmap_TotalDataStr,"\r\n");}
						nDrawY+=DltY;
					}
					I+=Len3;		//error not show error skip
					break;
				}
			}
			break;	
		case 2:         //AssignComplete
			if(MsgFKind<15) {
				ShowType=AssignComplete_FieldCrit[MsgFKind][3];
				strcpy(Str2,"");
				for(J=0;J<Len3;++J) {
					bData=BUFDISPLAY[I];
					I++;
					Num=8;
					if(Len2!=Len3 && J==(Len2/8))
						Num=Len2%8;
					bEnd=GetDataStr(bData,Num,ShowType);  //2 is show type
					if(!bEnd) {
						sprintf(Str2,"?: %02Xh",bData);
						I+=(Len3-1-J);
						break;
					}
					strcat(Str2,DataStr);
				}
				strcpy(Str,AssignComplete_Field[MsgFKind]);
				nDrawX+=DeltaXL;
				if(YOrNTxt==true)
				strcat(bssmap_TotalDataStr,Str);
				else		
				msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
				if(ShowType==1)
					sprintf(Str,": %sb",Str2);
				else {
					if(ShowType==2)
						sprintf(Str,": %sh",Str2);
					else  sprintf(Str,": %s",Str2);
				}
				strcat(Str,"   ");
				GetBssMapFieldStr(bData);
				strcat(Str,DataStr);
				nDrawX+=DeltaX;
				if(YOrNTxt==true)
				{strcat(bssmap_TotalDataStr,Str);
				strcat(bssmap_TotalDataStr,"\r\n");}
				else
				msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
				nDrawY+=DltY;
				break;
			}
			break;	
		case 3:         //AssignFailure
			if(MsgFKind<10) {
				ShowType=AssignFailure_FieldCrit[MsgFKind][3];
				strcpy(Str2,"");
				for(J=0;J<Len3;++J) {
					bData=BUFDISPLAY[I];
					I++;
					Num=8;
					if(Len2!=Len3 && J==(Len2/8))
						Num=Len2%8;
					bEnd=GetDataStr(bData,Num,ShowType);  //2 is show type
					if(!bEnd) {
						sprintf(Str2,"?: %02Xh",bData);
						I+=(Len3-1-J);
						break;
					}
					strcat(Str2,DataStr);
				}
				strcpy(Str,AssignFailure_Field[MsgFKind]);
				nDrawX+=DeltaXL;
				if(YOrNTxt==true)
				strcat(bssmap_TotalDataStr,Str);
				else
				msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
				if(ShowType==1)
					sprintf(Str,": %sb",Str2);
				else {
					if(ShowType==2)
						sprintf(Str,": %sh",Str2);
					else  sprintf(Str,": %s",Str2);
				}
				strcat(Str,"   ");
				GetBssMapFieldStr(bData);
				strcat(Str,DataStr);
				nDrawX+=DeltaX;
				if(YOrNTxt==true)
				{strcat(bssmap_TotalDataStr,Str);
				strcat(bssmap_TotalDataStr,"\r\n");}
				else
				msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
				nDrawY+=DltY;
			}
			break;	
		case 4:         //HandoverRequest
			if(MsgFKind<43) {
				switch(MsgFKind+1) {
				default:
					ShowType=HandoverRequest_FieldCrit[MsgFKind][3];
					strcpy(Str2,"");
					for(J=0;J<Len3;++J) {
						bData=BUFDISPLAY[I];
						I++;
						Num=8;
						if(Len2!=Len3 && J==(Len2/8))
							Num=Len2%8;
						bEnd=GetDataStr(bData,Num,ShowType);  //2 is show type
						if(!bEnd) {

⌨️ 快捷键说明

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