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

📄 dspdetailisup.cpp

📁 七号信令解码器
💻 CPP
📖 第 1 页 / 共 5 页
字号:
//DetailView.cpp : implementation file
//zxw 2000-10-05 修改消息显示

#include "stdafx.h"
#include "detailcommon.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

char detailisup_TotalDataStr[5000]; 
//////////function variables///////////////
extern char word1_TotalDataStr[5000];
/////////common variables//////////////////
extern tagScrOption     ScreenConfig;
extern tagShowConfig     ShowConfig;

////////////common variables//////////
extern BOOL			bHelp;

extern BYTE			MsgSU,MsgUP,MsgKind,MsgFKind,FieldNo;

extern BYTE			DataKind; //=0:NORMAL 1:SCMG =2:TCAP 3:MAP 4:MAPERR 5:INAP 6:INAPERR
extern BYTE			TcapKind,TcapCpntKind,ScmgKind,MapKind,MapErrKind,InapKind,InapErrKind,CapKind,CapErrKind,BssMapKind,RadioResKind,MobilityKind,CallControlKind;

//--------- Variable for BOOL----------
//0:brecdata历史数据 1:bSavData存盘数据 2:bAddData被叫号码 3:bCallData主叫号码 0xff:normal
//4:MAP Calltrac 5:MAP regist 6:MAP del 7:MAP AUC 8:ISUP 被叫号码 9:ISUP主叫号码
//20: 实时数据 21:实时被叫号码 22:实时主叫号码 23:ISUP 实时被叫号码 24 ISUP实时主叫号码
extern BYTE			DataType;

extern BOOL			bAddr;
extern BOOL			bDPC;

extern char			DataStr[100];

///////////define  far data segment//////////////////
extern BYTE			BUFDISPLAY[SIZE_OF_DATA_AREA];

//ISUP
extern char  ISUP_IAM_Field[147][12];

extern BYTE  ISUP_IAM_FieldCrit[147][4];

extern char  ISUP_SAM_Field[6][12];

extern BYTE  ISUP_SAM_FieldCrit[6][4];

extern char  ISUP_INR_Field[17][12];

extern BYTE  ISUP_INR_FieldCrit[17][4];

extern char  ISUP_INF_Field[35][12];

extern BYTE  ISUP_INF_FieldCrit[35][4];

extern char  ISUP_COT_Field[1][12];

extern BYTE  ISUP_COT_FieldCrit[1][4];

extern char  ISUP_ACM_Field[66][12];

extern BYTE  ISUP_ACM_FieldCrit[66][4];

extern char  ISUP_CON_Field[78][12];

extern BYTE  ISUP_CON_FieldCrit[78][4];

extern char  ISUP_FOT_Field[6][12];

extern BYTE  ISUP_FOT_FieldCrit[6][4];

extern char  ISUP_ANM_Field[80][12];

extern BYTE  ISUP_ANM_FieldCrit[80][4];

extern char  ISUP_REL_Field[49][12];

extern BYTE  ISUP_REL_FieldCrit[49][4];

extern char  ISUP_SUS_Field[7][12];

extern BYTE  ISUP_SUS_FieldCrit[7][4];

extern char  ISUP_RES_Field[7][12];

extern BYTE  ISUP_RES_FieldCrit[8][4];

extern char  ISUP_RLC_Field[8][12];

extern BYTE  ISUP_RLC_FieldCrit[87][4];

extern char  ISUP_GRS_Field[5][12];

extern BYTE  ISUP_GRS_FieldCrit[5][4];

extern char  ISUP_CGB_Field[5][12];

extern BYTE  ISUP_CGB_FieldCrit[5][4];

extern char  ISUP_CGU_Field[5][12];

extern BYTE  ISUP_CGU_FieldCrit[5][4];

extern char  ISUP_CGBA_Field[5][12];

extern BYTE  ISUP_CGBA_FieldCrit[5][4];

extern char  ISUP_CGUA_Field[5][12];

extern BYTE  ISUP_CGUA_FieldCrit[5][4];

extern char  ISUP_CMR_Field[10][12];

extern BYTE  ISUP_CMR_FieldCrit[10][4];

extern char  ISUP_CMC_Field[10][12];

extern BYTE  ISUP_CMC_FieldCrit[10][4];

extern char  ISUP_CMRJ_Field[10][12];

extern BYTE  ISUP_CMRJ_FieldCrit[10][4];

extern char  ISUP_FAR_Field[19][12];

extern BYTE  ISUP_FAR_FieldCrit[19][4];

extern char  ISUP_FAA_Field[19][12];

extern BYTE  ISUP_FAA_FieldCrit[19][4];

extern char  ISUP_FRJ_Field[12][12];

extern BYTE  ISUP_FRJ_FieldCrit[12][4];

extern char  ISUP_DRS_Field[6][12];

extern BYTE  ISUP_DRS_FieldCrit[6][4];

extern char  ISUP_GRA_Field[5][12];

extern BYTE  ISUP_GRA_FieldCrit[5][4];

extern char  ISUP_CQM_Field[5][12];

extern BYTE  ISUP_CQM_FieldCrit[5][4];

extern char  ISUP_CQR_Field[6][12];

extern BYTE  ISUP_CQR_FieldCrit[6][4];

extern char  ISUP_CPG_Field[66][12];

extern BYTE  ISUP_CPG_FieldCrit[66][4];

extern char  ISUP_USR_Field[8][12];

extern BYTE  ISUP_USR_FieldCrit[8][4];

extern char  ISUP_CONF_Field[7][12];

extern BYTE  ISUP_CONF_FieldCrit[7][4];

extern char  ISUP_NRM_Field[14][12];

extern BYTE  ISUP_NRM_FieldCrit[14][4];

extern char  ISUP_FAC_Field[14][12];

extern BYTE  ISUP_FAC_FieldCrit[14][4];

extern char  ISUP_UPT_Field[5][12];

extern BYTE  ISUP_UPT_FieldCrit[5][4];

extern char  ISUP_UPA_Field[5][12];

extern BYTE  ISUP_UPA_FieldCrit[5][4];

extern char  ISUP_IDR_Field[11][12];

extern BYTE  ISUP_IDR_FieldCrit[11][4];

extern char  ISUP_IRS_Field[33][12];

extern BYTE  ISUP_IRS_FieldCrit[33][4];

extern char  ISUP_SGM_Field[29][12];

extern BYTE  ISUP_SGM_FieldCrit[29][4];

extern char  ISUP_CCL_Field[5][12];

extern BYTE  ISUP_CCL_FieldCrit[5][4];

extern char  ISUP_MPM_Field[6][12];

extern BYTE  ISUP_MPM_FieldCrit[6][4];

extern char  ISUP_OPR_Field[5][12];

extern BYTE  ISUP_OPR_FieldCrit[5][4];

int DrawIsupVeiw(CMsgText& msgText,WORD I,WORD Len2,WORD Len3,WORD wCIC,BOOL bDrawOK,int nDrawX,int nDrawY,int DltY, float PtRate,bool YOrNTxt)
{       //SCCP
	char  Str[250],Str1[100],Str2[270];
	WORD  K,Wnum,Len4; //M16,  16: ?16H
	BYTE  J,Num,ByteNum,bData,ShowType;      //sccp
	int   DeltaXL,DeltaXS,DeltaX,X0;
	BOOL  bEnd;

	strcpy(detailisup_TotalDataStr,"");
	DeltaXL=120;
	DeltaX=130;
	DeltaXS=40;
	switch(MsgKind) {
		case 1:         //iam
			if(MsgFKind<147) {
				switch(MsgFKind+1) {
				case 1:       //NATCI
					ShowType=ISUP_IAM_FieldCrit[MsgFKind][3];
					strcpy(Str2,"");
					for(J=0;J<Len3;++J) {
						bData=BUFDISPLAY[I];
						I++;
						if(bDrawOK) {	//in print range except BUFDISPLAY[I];I++;
							Num=8;
							if(Len2!=Len3 && J==(Len2/8))
								Num=Len2%8;
							bEnd=GetDataStr(bData,Num,ShowType);
							strcat(Str2,DataStr);
						}
					}
					if(bDrawOK) {	//in print range except BUFDISPLAY[I];I++;
						strcpy(Str,ISUP_IAM_Field[MsgFKind]);
						nDrawX+=DeltaXL;
						if(YOrNTxt==true)
						strcat(detailisup_TotalDataStr,Str);
						else
						msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
						
						sprintf(Str,": %sb  ",Str2);
						strcat(Str," 连接性质表示语");
						nDrawX+=DeltaX;
						if(YOrNTxt==true)
						strcat(detailisup_TotalDataStr,Str);
						else
						msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
						
						nDrawY=DrawNATCIStr(msgText,bData,nDrawX,nDrawY,DltY,PtRate,YOrNTxt);
						if(YOrNTxt==true)
						{strcat(detailisup_TotalDataStr,word1_TotalDataStr);
						strcat(detailisup_TotalDataStr,"\r\n");}
						nDrawY+=DltY;
					}
					break;
				case 2:       //focin
					ShowType=ISUP_IAM_FieldCrit[MsgFKind][3];
					strcpy(Str2,"");
					bData=BUFDISPLAY[I];
					I++;
					Num=8;
					bEnd=GetDataStr(bData,Num,ShowType);
					strcat(Str2,DataStr);
					ByteNum=BUFDISPLAY[I];
					I++;
					if(bDrawOK) {	//in print range except BUFDISPLAY[I];I++;
						Num=8;
						bEnd=GetDataStr(ByteNum,Num,ShowType);
						strcat(Str2,DataStr);
						strcpy(Str,ISUP_IAM_Field[MsgFKind]);
						nDrawX+=DeltaXL;
						if(YOrNTxt==true)
						strcat(detailisup_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,"  前向呼叫表示语,16比特");
						nDrawX+=DeltaX;
						if(YOrNTxt==true)
						strcat(detailisup_TotalDataStr,Str);
						else
						msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
						
						Wnum=(WORD)bData;
						Wnum*=256;
						Wnum+=ByteNum;
						nDrawY=DrawFOCINStr(msgText,Wnum,nDrawX,nDrawY,DltY,PtRate,YOrNTxt);
						if(YOrNTxt==true)
						{strcat(detailisup_TotalDataStr,word1_TotalDataStr);
						strcat(detailisup_TotalDataStr,"\r\n");}
						nDrawY+=DltY;
					}
					break;
				default:
					if(bDrawOK) {	//in print range except BUFDISPLAY[I];I++;
						strcpy(Str,ISUP_IAM_Field[MsgFKind]);
						nDrawX+=DeltaXL;
						if(YOrNTxt==true)
						strcat(detailisup_TotalDataStr,Str);
						else
						msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
						
					}
					ShowType=ISUP_IAM_FieldCrit[MsgFKind][3];
					 if(Len3<MAX_LEN_OF_DETAILSHOW)
					 {
						 strcpy(Str2,"");
						 for(J=0;J<Len3;++J) {
							 bData=BUFDISPLAY[I];
							 I++;
							if(bDrawOK) {	//in print range except 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);
							}
						 }
						if(bDrawOK) {	//in print range except BUFDISPLAY[I];I++;
							if(ShowType==1)
								sprintf(Str,": %sb",Str2);
							else {
								if(ShowType==2)
									sprintf(Str,": %sh",Str2);
								else  sprintf(Str,": %s",Str2);
							}
							strcat(Str,"   ");
							GetISUPStr(bData);
							strcat(Str,DataStr);
							nDrawX+=DeltaX;
							if(YOrNTxt==true)
						{strcat(detailisup_TotalDataStr,Str);
						strcat(detailisup_TotalDataStr,"\r\n");}
							else
							msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
							
							nDrawY+=DltY;
						}
					 }
					 else
					 {
						ShowType=2;		//HEX
						 for(K=0;K<Len3/15;++K) {
							 strcpy(Str2,"");
							 for(J=0;J<15;++J) {
								 bData=BUFDISPLAY[I];
								 I++;
								if(bDrawOK) {	//in print range except BUFDISPLAY[I];I++;
									 Num=8;
									 bEnd=GetDataStr(bData,Num,ShowType);  //2 is show type
									 strcat(Str2,DataStr);
									 strcat(Str2," ");
								}
							 }
							if(bDrawOK) {	//in print range except BUFDISPLAY[I];I++;
								nDrawX+=DeltaX;
								strcpy(Str,Str2);
								if(YOrNTxt==true)
						{strcat(detailisup_TotalDataStr,Str);
						strcat(detailisup_TotalDataStr,"\r\n");}
								else
								msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
								
								nDrawY+=DltY;
								nDrawX-=DeltaX;
							}
						 }
						 strcpy(Str2,"");
						 for(J=0;J<Len3%15;++J) {
							 bData=BUFDISPLAY[I];
							 I++;
							 Num=8;
							 bEnd=GetDataStr(bData,Num,ShowType);  //2 is show type
							 strcat(Str2,DataStr);
							 strcat(Str2," ");
						 }
						if(bDrawOK) {	//in print range except BUFDISPLAY[I];I++;
							strcpy(Str,Str2);
							strcat(Str," ");
							GetISUPStr(bData);
							strcat(Str,DataStr);
							nDrawX+=DeltaX;
							if(YOrNTxt==true)
						{strcat(detailisup_TotalDataStr,Str);
						strcat(detailisup_TotalDataStr,"\r\n");}
							else
							msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
							
							nDrawY+=DltY;
						}
					 }
					break;
				case 34:       //OFCIN
					ShowType=ISUP_IAM_FieldCrit[MsgFKind][3];
					strcpy(Str2,"");
					for(J=0;J<Len3;++J) {
						bData=BUFDISPLAY[I];
						I++;
						if(bDrawOK) {	//in print range except BUFDISPLAY[I];I++;
							Num=8;
							if(Len2!=Len3 && J==(Len2/8))
								Num=Len2%8;
							bEnd=GetDataStr(bData,Num,ShowType);
							strcat(Str2,DataStr);
						}
					}
					if(bDrawOK) {	//in print range except BUFDISPLAY[I];I++;
						strcpy(Str,ISUP_IAM_Field[MsgFKind]);
						nDrawX+=DeltaXL;
						if(YOrNTxt==true)
						strcat(detailisup_TotalDataStr,Str);
						else
						msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
						
						sprintf(Str,": %sb  ",Str2);
						strcat(Str," 任选前向呼叫");
						nDrawX+=DeltaX;
						if(YOrNTxt==true)
						strcat(detailisup_TotalDataStr,Str);
						else
						msgText.AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
						
						nDrawY=DrawOFCINStr(msgText,bData,nDrawX,nDrawY,DltY,PtRate,YOrNTxt);
						if(YOrNTxt==true)
						{strcat(detailisup_TotalDataStr,word1_TotalDataStr);

⌨️ 快捷键说明

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