📄 svgsmadisp.cpp
字号:
/*************************************************
Update History:
2000.05.05,“完全第3层消息”增加显示封装的DTAP内容
2000.05.16:“完全第3层消息”增加“CM重建请求”,“IMSI分离”
2000.07.24:procsmallareaIDtable()
2000.08.29:DeYang MC:“信道类型”长度不为3,by LHG
2000.09.25:procLAI(),by LHG
2000.10.30:procPaswdInfo() & procBSSMAPdisp(),by LHG
**************************************************/
#include "stdafx.h"
#define u8 unsigned char
#define u16 unsigned short
#define u32 unsigned long
#define bb(y) *dispbuf++=y
#define bytedisp(x) bb(x);bb(1);bb(*recbuf++);bb(0xcc);displen+=4;
#define proc2byte(x) bb(x);bb(2);bb(*recbuf++);bb(*recbuf++);bb(0xcc);displen+=5;
#define proc3byte(x) bb(x),bb(3);bb(*recbuf++);bb(*recbuf++);bb(*recbuf++);bb(0xcc);displen+=6;
extern unsigned char *dispbuf,*recbuf;
extern unsigned short displen;
void procBSSMAPdisp();
void procDTAPdisp();
void procTraceRef(u8 dfldno) //跟踪参考
{
//单元识别
*dispbuf++=dfldno;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//跟踪参考(2字节)
*dispbuf++=dfldno+1;
*dispbuf++=2;
*dispbuf++=*recbuf++;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=9;
}
void procGSMACIC(u8 dfldno)
{
//单元识别
*dispbuf++=dfldno;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//CIC(2字节)
*dispbuf++=dfldno+1;
*dispbuf++=2;
*dispbuf++=*recbuf++;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=9;
}
void procGSMACICtable(u8 dfldno) //电路识别码表
{ u8 i,li;
//单元识别
*dispbuf++=dfldno;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//电路识别码表长度
*dispbuf++=dfldno+1;
*dispbuf++=1;
li=*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//电路识别码表范围
*dispbuf++=dfldno+2;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//状态
li--;
*dispbuf++=dfldno+3;
*dispbuf++=li;
for(i=0;i<li;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=li+15;
}
void procmix2byte(u8 dfldno)
{
//单元识别
*dispbuf++=dfldno;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//1字节
*dispbuf++=dfldno+1;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=8;
}
void procusableresoure(u8 dfldno)//可用资源
{
//单元识别
*dispbuf++=dfldno;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//干扰带1可用的全速率信道数(2字节)
*dispbuf++=dfldno+1;
*dispbuf++=2;
*dispbuf++=*recbuf++;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//干扰带1可用的半速率信道数(2字节)
*dispbuf++=dfldno+2;
*dispbuf++=2;
*dispbuf++=*recbuf++;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//干扰带2可用的全速率信道数(2字节)
*dispbuf++=dfldno+3;
*dispbuf++=2;
*dispbuf++=*recbuf++;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//干扰带2可用的半速率信道数(2字节)
*dispbuf++=dfldno+4;
*dispbuf++=2;
*dispbuf++=*recbuf++;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//干扰带3可用的全速率信道数(2字节)
*dispbuf++=dfldno+5;
*dispbuf++=2;
*dispbuf++=*recbuf++;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//干扰带3可用的半速率信道数(2字节)
*dispbuf++=dfldno+6;
*dispbuf++=2;
*dispbuf++=*recbuf++;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//干扰带4可用的全速率信道数(2字节)
*dispbuf++=dfldno+7;
*dispbuf++=2;
*dispbuf++=*recbuf++;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//干扰带4可用的半速率信道数(2字节)
*dispbuf++=dfldno+8;
*dispbuf++=2;
*dispbuf++=*recbuf++;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//干扰带5可用的全速率信道数(2字节)
*dispbuf++=dfldno+9;
*dispbuf++=2;
*dispbuf++=*recbuf++;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//干扰带5可用的半速率信道数(2字节)
*dispbuf++=dfldno+10;
*dispbuf++=2;
*dispbuf++=*recbuf++;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=54;
}
void procVARInfoUnit(u8 dfldno)
{ unsigned char li,i;
//单元识别
*dispbuf++=dfldno;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//长度
*dispbuf++=dfldno+1;
*dispbuf++=1;
li=*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
*dispbuf++=dfldno+2;
*dispbuf++=li;
for(i=0;i<li;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=li+11;
}
void procCHANNELType(u8 dfldno) //信道类型
{ BYTE li;
//单元识别
*dispbuf++=dfldno;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//长度
*dispbuf++=dfldno+1;
*dispbuf++=1;
li=*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//语音/数据指示符(1字节)
*dispbuf++=dfldno+2;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//信道速率和类型(1字节)
*dispbuf++=dfldno+3;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//语音编码算法/数据速率和透明指示(1字节)
*dispbuf++=dfldno+4;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
if(li>3) //2000.08.29 by LHG,DeYang MC:“信道类型”长度不为3
{ li-=3;
recbuf+=li;
}
displen+=20;
}
void procL3firstInfo(u8 dfldno) //第3层首标信息
{
//单元识别
*dispbuf++=dfldno;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//长度
*dispbuf++=dfldno+1;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//协议鉴别器
*dispbuf++=dfldno+2;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//处理识别
*dispbuf++=dfldno+3;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=16;
}
void procpriority(u8 dfldno) //优先级
{
//单元识别
*dispbuf++=dfldno;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//长度
*dispbuf++=dfldno+1;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//优先级
*dispbuf++=dfldno+2;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=12;
}
void procDTXFlag(u8 dfldno) //下行DTX标志
{
//单元识别
*dispbuf++=dfldno;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//下行DTX标志
*dispbuf++=dfldno+1;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=8;
}
void procsmallareaID(u8 dfldno) //“小区识别”
{ u8 code;
//单元识别
*dispbuf++=dfldno;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//长度
*dispbuf++=dfldno+1;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//小区识别鉴别器:D3-D0
*dispbuf++=dfldno+2;
*dispbuf++=0;
*dispbuf++=4;
code=*recbuf++;
*dispbuf++=code<<4;
*dispbuf++=0xcc;
displen+=13;
code&=0x0f;
switch(code)
{
case 0:
//小区识别之MCC
*dispbuf++=dfldno+3;
*dispbuf++=0;
*dispbuf++=12;
*dispbuf++=(*recbuf>>4)|(*recbuf<<4);
recbuf++;
*dispbuf++=*recbuf<<4;
recbuf++;
*dispbuf++=0xcc;
//小区识别之MNC
*dispbuf++=dfldno+4;
*dispbuf++=1;
*dispbuf++=(*recbuf>>4)|(*recbuf<<4);
recbuf++;
*dispbuf++=0xcc;
//小区识别之LAC
*dispbuf++=dfldno+5;
*dispbuf++=2;
*(u16 *)dispbuf=*(u16 *)recbuf;
recbuf+=2;
dispbuf+=2;
*dispbuf++=0xcc;
//小区识别之CI
*dispbuf++=dfldno+6;
*dispbuf++=2;
*(u16 *)dispbuf=*(u16 *)recbuf;
recbuf+=2;
dispbuf+=2;
*dispbuf++=0xcc;
displen+=20;
break;
case 1:
//小区识别之LAC
*dispbuf++=dfldno+5;
*dispbuf++=2;
*(u16 *)dispbuf=*(u16 *)recbuf;
recbuf+=2;
dispbuf+=2;
*dispbuf++=0xcc;
//小区识别之CI
*dispbuf++=dfldno+6;
*dispbuf++=2;
*(u16 *)dispbuf=*(u16 *)recbuf;
recbuf+=2;
dispbuf+=2;
*dispbuf++=0xcc;
displen+=10;
break;
case 2:
//小区识别之CI
*dispbuf++=dfldno+6;
*dispbuf++=2;
*(u16 *)dispbuf=*(u16 *)recbuf;
recbuf+=2;
dispbuf+=2;
*dispbuf++=0xcc;
displen+=5;
break;
case 3:
break;
default:break;
}//switch
}
void procsmallareaIDtable(BYTE dfldno) //“小区识别表”
{ BYTE code,li;
//单元识别
*dispbuf++=dfldno;
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//长度
*dispbuf++=dfldno+1;
*dispbuf++=1;
li=*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
//小区识别鉴别器:D3-D0
*dispbuf++=dfldno+2;
*dispbuf++=0;
*dispbuf++=4;
code=*recbuf++;
*dispbuf++=code<<4;
*dispbuf++=0xcc;
li--;
displen+=13;
code&=0x0f;
switch(code)
{
case 0:
//小区识别之MCC
while(li>=7)//update 2000.07.24 by LHG
{*dispbuf++=dfldno+3;
*dispbuf++=0;
*dispbuf++=12;
*dispbuf++=(*recbuf>>4)|(*recbuf<<4);
recbuf++;
*dispbuf++=*recbuf<<4;
recbuf++;
*dispbuf++=0xcc;
//小区识别之MNC
*dispbuf++=dfldno+4;
*dispbuf++=1;
*dispbuf++=(*recbuf>>4)|(*recbuf<<4);
recbuf++;
*dispbuf++=0xcc;
//小区识别之LAC
*dispbuf++=dfldno+5;
*dispbuf++=2;
*(WORD *)dispbuf=*(WORD *)recbuf;
recbuf+=2;
dispbuf+=2;
*dispbuf++=0xcc;
//小区识别之CI
*dispbuf++=dfldno+6;
*dispbuf++=2;
*(WORD *)dispbuf=*(WORD *)recbuf;
recbuf+=2;
dispbuf+=2;
*dispbuf++=0xcc;
displen+=20;
li-=7;
}
break;
case 1:
//小区识别之LAC
while(li>=4)//update 2000.07.24 by LHG
{*dispbuf++=dfldno+5;
*dispbuf++=2;
*(WORD *)dispbuf=*(WORD *)recbuf;
recbuf+=2;
dispbuf+=2;
*dispbuf++=0xcc;
//小区识别之CI
*dispbuf++=dfldno+6;
*dispbuf++=2;
*(WORD *)dispbuf=*(WORD *)recbuf;
recbuf+=2;
dispbuf+=2;
*dispbuf++=0xcc;
displen+=10;
li-=4;
}
break;
case 2:
//小区识别之CI
while(li>=2)//update 2000.07.24 by LHG
{*dispbuf++=dfldno+6;
*dispbuf++=2;
*(WORD *)dispbuf=*(WORD *)recbuf;
recbuf+=2;
dispbuf+=2;
*dispbuf++=0xcc;
displen+=5;
li-=2;
}
break;
case 4:
//小区识别之MCC
while(li>=5)//update 2000.07.24 by LHG
{*dispbuf++=dfldno+3;
*dispbuf++=0;
*dispbuf++=12;
*dispbuf++=(*recbuf>>4)|(*recbuf<<4);
recbuf++;
*dispbuf++=*recbuf<<4;
recbuf++;
*dispbuf++=0xcc;
//小区识别之MNC
*dispbuf++=dfldno+4;
*dispbuf++=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -