📄 svgsmadisp.cpp
字号:
for(i=0;i<li;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=li+3;
}
if((*recbuf&0x7f)==0x7c) //Starting Time
{bytedisp(0x16) //IEI
proc2byte(0x17) //Starting Time
li+=3;
}//Starting Time
if(li<11)
{li=11-li;
*dispbuf++=0x18; //IA rest
*dispbuf++=li;
for(i=0;i<li;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=li+3;
}
break;
case 0x39: //Immediate assignment extended
*dispbuf++=8; //Page Mode
*dispbuf++=0;
*dispbuf++=4;
*dispbuf++=*recbuf<<4;
recbuf++;
*dispbuf++=0xcc;
displen+=5;
procChanDescription(0x09); //信道描述1
procReqRef(0x0f); //请求参考1
bytedisp(0x13) //Time Advance1
procChanDescription(0x14); //信道描述2
procReqRef(0x1a); //请求参考2
bytedisp(0x1e) //Time Advance2
li=*recbuf; //get Mobile Allocation len
bytedisp(0x14) //Mobile Allocation len
if(li!=0)
{*dispbuf++=0x15; //Mobile Allocation
*dispbuf++=li;
for(i=0;i<li;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=li+3;
}
if((*recbuf&0x7f)==0x7c) //Starting Time
{bytedisp(0x21) //IEI
proc2byte(0x22) //Starting Time
}//Starting Time
if(li<4)
{li=4-li;
*dispbuf++=0x23; //IAX rest
*dispbuf++=li;
for(i=0;i<li;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=li+3;
}
break;
case 0x3a: //Immediate assignment reject
*dispbuf++=8; //Page Mode
*dispbuf++=0;
*dispbuf++=4;
*dispbuf++=*recbuf<<4;
recbuf++;
*dispbuf++=0xcc;
displen+=5;
procReqRef(0x09); //请求参考1
bytedisp(0x0d) //Wait Indicator1
procReqRef(0x0e); //请求参考2
bytedisp(0x12) //Wait Indicator2
procReqRef(0x13); //请求参考3
bytedisp(0x17) //Wait Indicator3
procReqRef(0x18); //请求参考4
bytedisp(0x1c) //Wait Indicator4
*dispbuf++=0x1d; //IAR rest
*dispbuf++=3;
for(i=0;i<3;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=6;
break;
case 0x21: //Paging request type1
*dispbuf++=8; //Page Mode
*dispbuf++=0;
*dispbuf++=4;
*dispbuf++=*recbuf<<4;
recbuf++;
*dispbuf++=0xcc;
*dispbuf++=9; //Channel Needed for Mobile1
*dispbuf++=0;
*dispbuf++=2;
*dispbuf++=(*recbuf&0x30)<<4;
*dispbuf++=0xcc;
*dispbuf++=10; //Channel Needed for Mobile2
*dispbuf++=0;
*dispbuf++=2;
*dispbuf++=*recbuf&0xc0;
*dispbuf++=0xcc;
recbuf++;
displen+=15;
procMSID(0x0b); //移动标识1
if((*recbuf&0x7f)==0x17)
{bytedisp(0x0e) //IEI
procMSID(0x0f); //移动标识2
}
break;
case 0x22: //Paging request type2
*dispbuf++=8; //Page Mode
*dispbuf++=0;
*dispbuf++=4;
*dispbuf++=*recbuf<<4;
recbuf++;
*dispbuf++=0xcc;
*dispbuf++=9; //Channel Needed for Mobile1
*dispbuf++=0;
*dispbuf++=2;
*dispbuf++=(*recbuf&0x30)<<4;
*dispbuf++=0xcc;
*dispbuf++=10; //Channel Needed for Mobile2
*dispbuf++=0;
*dispbuf++=2;
*dispbuf++=*recbuf&0xc0;
*dispbuf++=0xcc;
recbuf++;
displen+=15;
procTMSI(0x0b); //移动标识1
procTMSI(0x0c); //移动标识1
if((*recbuf&0x7f)==0x17)//移动标识3
{bytedisp(0x0d) //IEI
procMSID(0x0e); //移动标识3
}//移动标识3
break;
case 0x24: //Paging request type3
*dispbuf++=8; //Page Mode
*dispbuf++=0;
*dispbuf++=4;
*dispbuf++=*recbuf<<4;
recbuf++;
*dispbuf++=0xcc;
*dispbuf++=9; //Channel Needed for Mobile1
*dispbuf++=0;
*dispbuf++=2;
*dispbuf++=(*recbuf&0x30)<<4;
*dispbuf++=0xcc;
*dispbuf++=10; //Channel Needed for Mobile2
*dispbuf++=0;
*dispbuf++=2;
*dispbuf++=*recbuf&0xc0;
*dispbuf++=0xcc;
recbuf++;
displen+=15;
procTMSI(0x0b); //移动标识1
procTMSI(0x0c); //移动标识2
procTMSI(0x0d); //移动标识3
procTMSI(0x0e); //移动标识4
*dispbuf++=0x0f; //P3 rest
*dispbuf++=3;
for(i=0;i<3;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=6;
break;
case 0x19: //System information type 1
case 0x02: //System information type 2bis
*dispbuf++=0x08; //Cell Channel Description(Extended BCCH Frequency List)
*dispbuf++=16;
for(i=0;i<16;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=19;
proc3byte(0x09) //RACH Control Parameter
bytedisp(0x0a) //SI1 rest
break;
case 0x1a: //System information type 2
*dispbuf++=0x08; //BCCH Frequency List
*dispbuf++=16;
for(i=0;i<16;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=19;
bytedisp(0x0a) //NCC permitted
proc3byte(0x09) //RACH Control Parameter
break;
case 0x1b: //System information type 3
proc2byte(0x08) //Cell Identity
procLAI(0x09); //LAI
//Control Channel Description
*dispbuf++=0x0c; //CCCH-CONF
*dispbuf++=0;
*dispbuf++=3;
*dispbuf++=*recbuf<<5;
*dispbuf++=0xcc;
*dispbuf++=0x0d; //BS-AG-BLKS-RES
*dispbuf++=0;
*dispbuf++=3;
*dispbuf++=*recbuf<<2;
*dispbuf++=0xcc;
*dispbuf++=0x0e; //ATT
*dispbuf++=0;
*dispbuf++=1;
*dispbuf++=(*recbuf++)&0x80;
*dispbuf++=0xcc;
*dispbuf++=0x0f; //BS-PA-MFRMS
*dispbuf++=0;
*dispbuf++=3;
*dispbuf++=*recbuf<<5;
*dispbuf++=0xcc;
recbuf++;
*dispbuf++=0x10; //T3212 timeout value
*dispbuf++=0;
*dispbuf++=8;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=25;
bytedisp(0x11) //Cell Option
proc2byte(0x12) //Cell Select Parameter
proc3byte(0x13) //RACH Control Parameter
*dispbuf++=0x14; //SI 3 rest
*dispbuf++=3;
for(i=0;i<3;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=6;
break;
case 0x1c: //System information type 4
procLAI(0x08); //LAI
proc2byte(0x0b) //Cell Select Parameter
proc3byte(0x0c) //RACH Control Parameter
if((*recbuf&0x7f)==0x64)//CBCH信道描述
{bytedisp(0x0d) //IEI
procChanDescription(0x0e); //CBCH信道描述
}//CBCH信道描述
if((*recbuf&0x72)==0x64) procVARInfoUnit(0x14);//CBCH Mobile Allocation
break;
case 0x1f: //System information type 7
case 0x18: //System information type 8
*dispbuf++=0x08;
*dispbuf++=20;
for(i=0;i<20;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=23;
break;
default:break;
}//switch(mt)
}//Radio Resource management message with L2 li
}
void procBSSMAPdisp()
{ BYTE i,li,oc,len,code;
BYTE *bufbak;
*dispbuf++=0x04; //MT
*dispbuf++=1;
oc=*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=4;
switch(oc) //operate code
{
case 1: //指配请求
procCHANNELType(0x05); //“信道类型”
if(*recbuf==0x07) procL3firstInfo(0x0a); //第3层首标信息
if(*recbuf==0x06) procpriority(0x0e); //优先级
if(*recbuf==0x01) procGSMACIC(0x11); //CIC
if(*recbuf==0x19) procDTXFlag(0x13); //下行DTX标志
if(*recbuf==0x12) procVARInfoUnit(0x15); //级别信息类型2
break;
case 2: //指配完成
if(*recbuf==0x15) procmix2byte(0x05); //RR原因
if(*recbuf==0x05) procsmallareaID(0x07); //小区识别
if(*recbuf==0x21) procselectchannel(0x0e); //选择的信道
if(*recbuf==0x23) procmix2byte(0x10); //选择的加密算法
if(*recbuf==0x24) procmix2byte(0x12); //电路组
break;
case 3: //指配故障
procVARInfoUnit(0x05); //原因
if(*recbuf==0x15) procmix2byte(0x08); //RR原因
if(*recbuf==0x24) procmix2byte(0x0a); //电路组
if(*recbuf==0x25) procVARInfoUnit(0x0c); //电路组表
break;
case 0x10: //切换请求
procCHANNELType(0x05); //“信道类型”
procPaswdInfo(0x0a); //加密信息
if(*recbuf==0x1d) //update by 2000.10.30 by LHG
procmix2byte(0x0e); //级别信息类型1
if(*recbuf==0x12)
procVARInfoUnit(0x10); //级别信息类型2
procsmallareaID(0x13); //(正在服务的)小区识别
if(*recbuf==0x06) procpriority(0x1a); //优先级
if(*recbuf==0x01) procGSMACIC(0x1d); //CIC
if(*recbuf==0x19) procDTXFlag(0x1f); //下行DTX标志
procsmallareaID(0x21); //(目标)小区识别
if(*recbuf==0x04) procVARInfoUnit(0x28); //原因
if(*recbuf==0x13) procVARInfoUnit(0x2b); //级别信息类型3
if(*recbuf==0x31) procmix2byte(0x2e); //当前信道
break;
case 0x11: //切换要求
procVARInfoUnit(0x05); //原因
if(*recbuf==0x1b) //响应请求
{*dispbuf++=0x08; //单元识别
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=4;
} //响应请求
procsmallareaIDtable(0x09); //(优先的)小区识别表
if(*recbuf==0x25) procVARInfoUnit(0x10); //电路组表
procmix2byte(0x13); //当前信道
break;
case 0x12: //切换请求证实
procVARInfoUnit(0x05); //第3层信息
if(*recbuf==0x21) procselectchannel(0x08); //选择的信道
if(*recbuf==0x23) procmix2byte(0x0a); //选择的加密算法
if(*recbuf==0x24) procmix2byte(0x0c); //电路组
break;
case 0x13: //切换命令
procVARInfoUnit(0x05); //第3层信息
if(*recbuf==0x05) procsmallareaID(0x08); //(目标)小区识别
break;
case 0x14: //切换完成
if(*recbuf==0x15) procmix2byte(0x05); //RR原因
break;
case 0x16: //切换故障
procVARInfoUnit(0x05); //原因
if(*recbuf==0x15) procmix2byte(0x08); //RR原因
if(*recbuf==0x24) procmix2byte(0x0a); //电路组
if(*recbuf==0x25) procVARInfoUnit(0x0c); //电路组表
break;
case 0x17: //切换执行
procVARInfoUnit(0x05); //原因
procsmallareaID(0x08); //小区识别
if(*recbuf==0x21) procselectchannel(0x0f); //选择的信道
if(*recbuf==0x23) procmix2byte(0x11); //选择的加密算法
break;
case 0x18: //切换候选者询问
procmix2byte(0x05); //MS数目
procsmallareaIDtable(0x07); //小区识别表
procsmallareaID(0x0e); //小区识别
break;
case 0x19: //切换候选者响应
procmix2byte(0x05); //MS数目
if(*recbuf==0x05) procsmallareaID(0x07); //小区识别
break;
case 0x1a: //切换要求拒绝
procVARInfoUnit(0x05); //原因
break;
case 0x20: //清除命令
if(*recbuf==0x07) procL3firstInfo(0x05); //第3层首标信息
procVARInfoUnit(0x09); //原因
break;
case 0x22: //清除请求
case 0x30: //复位
procmix2byte(0x05); //MS数目
break;
case 0x25: //SAPI“n”拒绝
procVARInfoUnit(0x05); //DLCI
procVARInfoUnit(0x07); //原因
break;
case 0x26: //混乱
procVARInfoUnit(0x05); //原因
//诊断
*dispbuf++=0x08; //单元识别
*dispbuf++=1;
*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
*dispbuf++=0x09; //“诊断”长度
*dispbuf++=1;
li=*dispbuf++=*recbuf++;
*dispbuf++=0xcc;
*dispbuf++=0x0a; //“错误指针”(2字节)
*dispbuf++=2;
*(u16 *)dispbuf=*(u16 *)recbuf;
recbuf+=2;
dispbuf+=2;
*dispbuf++=0xcc;
li-=2;
*dispbuf++=0x0b; //收到的消息
*dispbuf++=li;
for(i=0;i<li;i++) *dispbuf++=*recbuf++;
*dispbuf++=0xcc;
displen+=li+16;
break;
case 0x32: //过载
procVARInfoUnit(0x05); //原因
if(*recbuf==0x05) procsmallareaID(0x08); //小区识别
break;
case 0x34: //复位电路
procVARInfoUnit(0x05); //原因
procGSMACIC(0x08); //CIC
break;
case 0x35: //复位电路证实
procGSMACIC(0x05); //CIC
break;
case 0x36: //MSC调用跟踪
procmix2byte(0x05); //跟踪类型
if(*recbuf==0x26) procVARInfoUnit(0x07); //发起者识别
procTraceRef(0x0a); //跟踪参考
if(*recbuf==0x28) procVARInfoUnit(0x0c); //处理识别
if(*recbuf==0x29) procVARInfoUnit(0x0f); //MS识别
if(*recbuf==0x2a) procVARInfoUnit(0x12); //OMC识别
break;
case 0x37: //BSS调用跟踪
procmix2byte(0x05); //跟踪类型
if(*recbuf==0x2a) procmix2byte(0x07); //前转指示符
if(*recbuf==0x26) procVARInfoUnit(0x09); //发起者识别
procTraceRef(0x0c); //跟踪参考
if(*recbuf==0x28) procVARInfoUnit(0x0e); //处理识别
if(*recbuf==0x29) procVARInfoUnit(0x11); //MS识别
break;
case 0x40: //阻塞
procGSMACIC(0x05); //CIC
procVARInfoUnit(0x07); //原因
break;
case 0x41: //阻塞证实
case 0x42: //解闭
case 0x43: //解闭证实
procGSMACIC(0x05); //CIC
break;
case 0x44: //电路群阻塞
procVARInfoUnit(0x05); //原因
procGSMACIC(0x06); //CIC
procGSMACICtable(0x0a);//电路识别码表
break;
case 0x45: //电路群阻塞证实
case 0x46: //电路群解闭
case 0x47: //电路群解闭证实
case 0x48: //未装备电路
procGSMACIC(0x05); //CIC
procGSMACICtable(0x07); //电路识别码表
break;
case 0x50: //资源请求
procmix2byte(0x05); //周期性
procmix2byte(0x07); //资源指示方式
procsmallareaID(0x09); //小区识别
if(*recbuf==0x0d) procmix2byte(0x10); //扩展资源指示符
break;
case 0x51: //资源指示
procmix2byte(0x05); //资源指示方式
if(*recbuf==0x03) procusableresoure(0x07);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -