📄 dspdetailisup.cpp
字号:
//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 + -