📄 msgtext.cpp
字号:
break;
default:
strcpy(Str1,"?");
strcpy(Str,": ?");
break;
}
} //if(bshow)
else I+=Len3;
}//else !=0xfe
}
else if(DataKind==11) {//Cap msg
if(FieldNo==0xfe) { //len 2 byte
Len2=BUFDISPLAY[I]; //data 16h len
I++;
Len2+=BUFDISPLAY[I]*256;
I++;
if(DetailType==0) //overview :not main field
bDrawOK=FALSE;
if(bDrawOK) {
nDrawX+=20;K=0;
ShowType=2;
strcpy(Str2,"");
for(J=0;J<Len2;++J) {
K++;
bData=BUFDISPLAY[I];
I++;
Num=8;
bEnd=GetDataStr(bData,Num,ShowType); //No Err
strcat(Str2," ");
strcat(Str2,DataStr);
if(K>=20) {
K=0;
sprintf(Str,"%sh",Str2);
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
strcpy(Str2,"");
nDrawY+=DltY;
}
}
if(K!=0) {
sprintf(Str,"%sh",Str2);
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
strcpy(Str2,"");
nDrawY+=DltY;
}
nDrawX=X0;
}//IF
else I+=Len2;
}
else {
//no use to getmsgfkind filedno-1=msgfkind
GetCapMsgFKind();//MsgFKind=FieldNo-1;
if(DetailType==0) {//overview
bShowDetail=ShowCapField();
if(!bShowDetail)
bDrawOK=FALSE;
}
if(bDrawOK) {
sprintf(Str,"xxh");
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
}
//data fields zxw 2000-08-18
Len2=BUFDISPLAY[I];
I++;
if(Len2==0) {
Len3=BUFDISPLAY[I]; //bytenum
I++;
}
else {
if((Len2%8)==0)
Len3=Len2/8;
else Len3=Len2/8+1;
}
if(bDrawOK) {
nDrawY=DrawCapVeiw(*this,I,Len2,Len3,nDrawX,nDrawY,DltY,PtRate);
nDrawX=X0;
} //if(bshow)
I+=Len3;
}//else !=0xfe
}
else if(DataKind==12) {//Cap err msg
if(FieldNo==0xfe) { //len 2 byte
Len2=BUFDISPLAY[I]; //data 16h len
I++;
Len2+=BUFDISPLAY[I]*256;
I++;
if(DetailType==0) //overview :not main field
bDrawOK=FALSE;
if(bDrawOK) {
nDrawX+=20;K=0;
ShowType=2;
strcpy(Str2,"");
for(J=0;J<Len2;++J) {
K++;
bData=BUFDISPLAY[I];
I++;
Num=8;
bEnd=GetDataStr(bData,Num,ShowType); //No Err
strcat(Str2," ");
strcat(Str2,DataStr);
if(K>=20) {
K=0;
sprintf(Str,"%sh",Str2);
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
strcpy(Str2,"");
nDrawY+=DltY;
}
}
if(K!=0) {
sprintf(Str,"%sh",Str2);
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
strcpy(Str2,"");
nDrawY+=DltY;
}
nDrawX=X0;
}//IF
else I+=Len2;
}
else {
//no use to getmsgfkind filedno-1=msgfkind
MsgFKind=FieldNo-1;
if(bDrawOK) {
sprintf(Str,"xxh");
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
}
//data fields zxw 2000-08-18
Len2=BUFDISPLAY[I];
I++;
if(Len2==0) {
Len3=BUFDISPLAY[I]; //bytenum
I++;
}
else {
if((Len2%8)==0)
Len3=Len2/8;
else Len3=Len2/8+1;
}
I+=Len3;
}//else !=0xfe
}
else if(DataKind==7) {//bssmap msg
if(FieldNo==0xfe) { //len 2 byte
Len2=BUFDISPLAY[I]; //data 16h len
I++;
Len2+=BUFDISPLAY[I]*256;
I++;
if(DetailType==0) //overview :not main field
bDrawOK=FALSE;
if(bDrawOK) {
nDrawX+=20;K=0;
ShowType=2;
strcpy(Str2,"");
for(J=0;J<Len2;++J) {
K++;
bData=BUFDISPLAY[I];
I++;
Num=8;
bEnd=GetDataStr(bData,Num,ShowType); //No Err
strcat(Str2," ");
strcat(Str2,DataStr);
if(K>=20) {
K=0;
sprintf(Str,"%sh",Str2);
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
strcpy(Str2,"");
nDrawY+=DltY;
}
}
if(K!=0) {
sprintf(Str,"%sh",Str2);
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
strcpy(Str2,"");
nDrawY+=DltY;
}
nDrawX=X0;
}//IF
else I+=Len2;
}
else {
//judge if bssmap or dtap
switch(FieldNo)
{
case 1:
bDrawOK=TRUE; //show DiscriminatePara
if(bDrawOK) {
sprintf(Str,"xxh");
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
}
//data fields
Len2=BUFDISPLAY[I];
I++;
Len3=0;
if(Len2==0) {
Len2=BUFDISPLAY[I]; //bitnum
I++;
if((Len2%8)==0)
Len3=Len2/8;
else Len3=Len2/8+1;
}
else {
Len3=Len2;
}
bData=BUFDISPLAY[I];
I++;
if((bData&0x01)!=0)
DataKind=8; //RADIORES
if(bDrawOK) {
ShowType=BSSMAPHead_Crit[FieldNo-1][3];
strcpy(Str2,"");
Num=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,BSSMAPHead[FieldNo-1]);
nDrawX+=DeltaXL;
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," ");
strcat(Str,"鉴别参数: ");
if(DataKind==8)
strcat(Str,"直接传输应用部分(DTAP)");
else strcat(Str,"基站子系统管理应用部分(BSSMAP)");
nDrawX+=DeltaX;
AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
nDrawY+=DltY;
} //if(bshow)
break;
case 4: //MT
bDrawOK=TRUE; //show MT
if(bDrawOK) {
sprintf(Str,"xxh");
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
}
//data fields
Len2=BUFDISPLAY[I];
I++;
Len3=0;
if(Len2==0) {
Len2=BUFDISPLAY[I]; //bitnum
I++;
if((Len2%8)==0)
Len3=Len2/8;
else Len3=Len2/8+1;
}
else {
Len3=Len2;
}
if(Len3!=1) {//--- Err Handle
if(bDrawOK) {
sprintf(Str,"BSSMAP ?");
nDrawX+=DeltaXL;
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
I--;
while(1) {
if(BUFDISPLAY[I]==0xcc && BUFDISPLAY[I+1]==0xee) {
I++;
break;
}
I++;
if(I>Len+4) {
return;
}
}
break;
}
}
bData=BUFDISPLAY[I];
I++;
SelOcKind=7; //BSSmap
BssMapKind=SelChildKind=GetBssMapKind(bData);
if(BssMapKind==0xff) {
if(bDrawOK) {
sprintf(Str,"BSSMAP ?");
nDrawX+=DeltaXL;
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
I--;
while(1) {
if(BUFDISPLAY[I]==0xcc && BUFDISPLAY[I+1]==0xee) {
I++;
break;
}
I++;
if(I>Len+4) {
return;
}
}
break;
}
} //==0xff
if(bDrawOK) {
ShowType=BSSMAPHead_Crit[FieldNo-1][3];
strcpy(Str2,"");
Num=8;
bEnd=GetDataStr(bData,Num,ShowType);
if(!bEnd) {
sprintf(Str2,"?: %02Xh",bData);
I+=(Len3-1-J);
break;
}
strcat(Str2,DataStr);
strcpy(Str1,BSSMAPHead[FieldNo-1]);
nDrawX+=DeltaXL;
AddString(nDrawX*PtRate ,nDrawY*PtRate,Str1,strlen(Str1));
GetBssMapStr(BssMapKind);
sprintf(Str,": %sh BSSMAP: %s %s",Str2,BSSMAPMsg[BssMapKind],DataStr);
nDrawX+=DeltaX;
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
nDrawY+=DltY;
} //if(bshow)
break;
case 2: //no 2 field
case 3:
if(DetailType==0) //overview :not main field
bDrawOK=FALSE;
else bDrawOK=TRUE;
if(bDrawOK) {
sprintf(Str,"xxh");
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
}
//data fields
Len2=BUFDISPLAY[I];
I++;
Len3=0;
if(Len2==0) {
Len2=BUFDISPLAY[I]; //bitnum
I++;
if((Len2%8)==0)
Len3=Len2/8;
else Len3=Len2/8+1;
}
else {
Len3=Len2;
}
if(bDrawOK) {
ShowType=BSSMAPHead_Crit[FieldNo-1][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);
if(!bEnd) {
sprintf(Str2,"?: %02Xh",bData);
I+=(Len3-1-J);
break;
}
strcat(Str2,DataStr);
}
strcpy(Str1,BSSMAPHead[FieldNo-1]);
if(ShowType==1)
sprintf(Str,": %sb",Str2);
else {
if(ShowType==2)
sprintf(Str,": %sh",Str2);
else sprintf(Str,": %s",Str2);
}
nDrawX+=DeltaXL;
AddString(nDrawX*PtRate,nDrawY*PtRate,Str1,strlen(Str1));
strcat(Str," ");
strcat(Str,"长度指示");
nDrawX+=DeltaX;
AddString(nDrawX*PtRate ,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
nDrawY+=DltY;
} //if(bshow)
else I+=Len3;
break;
default: // FieldNo>=5
//no use to getmsgfkind filedno-5=msgfkind
MsgFKind=FieldNo-5;
if(DetailType==0) {//overview
bShowDetail=ShowBssMapField();
if(!bShowDetail)
bDrawOK=FALSE;
}
if(bDrawOK) {
sprintf(Str,"xxh");
AddString(nDrawX*PtRate,nDrawY*PtRate,Str,strlen(Str));
nDrawX=X0;
}
//data fields
Len2=BUFDISPLAY[I];
I++;
Len3=0;
if(Len2==0) {
Len2=BUFDISPLAY[I]; //bitnum
I++;
if((Len2%8)==0)
Len3=Len2/8;
else Len3=Len2/8+1;
}
else {
Len3=Len2;
}
if(bDrawOK) {
nDrawY=DrawBssMapVeiw(*this,I,Len2,Len3,wCIC,nDrawX,nDrawY,DltY,PtRate);
nDrawX=X0;
} //if(bshow)
I+=Len3;
break;
}//switch
}//else !=0xfe
}
else if(DataKind==8) {//RADIORES msg
if(FieldNo==0xfe) { //len 2 byte
Len2=BUFDISPLAY[I]; //data 16h len
I++;
Len2+=BUFDISPLAY[I]*256;
I++;
if(DetailType==0) //overview :not main field
bDrawOK=FALSE;
if(bDrawOK) {
nDrawX+=20;K=0;
ShowType=2;
strcpy(Str2,"");
for(J=0;J<Len2;++J) {
K++;
bData=BUFDISPLAY[I];
I++;
Num=8;
bEnd=GetDataStr(bData,Num,ShowType); //No Err
strcat(Str2," ");
strcat(Str2,DataStr);
if(K>=20) {
K=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -