📄 dspbssmapfunc.cpp
字号:
if(MsgFKind<15 && AssignComplete_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 3://AssignFailure
if(MsgFKind<10 && AssignFailure_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 4://HandoverRequest
if(MsgFKind<43 && HandoverRequest_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 5://HandoverRequired
if(MsgFKind<16 && HandoverRequired_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 6://HandoverRequestAck
if(MsgFKind<9 && HandoverRequestAck_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 7://HandoverCommand
if(MsgFKind<10 && HandoverCommand_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 8://HandoverComplete
if(MsgFKind<2 && HandoverComplete_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 9://HandoverFailure
if(MsgFKind<9 && HandoverFailure_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 10://HandoverPerformed
if(MsgFKind<14 && HandoverPerformed_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 11://HandoverCandidateEnquiry
if(MsgFKind<16 && HandoverCandidateEnquiry_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 12://HandoverCandidateRespon
if(MsgFKind<9 && HandoverCandidateRespon_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 13://HandoverRequiredReject
if(MsgFKind<3 && HandoverRequiredReject_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 15://ClearCommand
if(MsgFKind<7 && ClearCommand_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 17://ClearRequest
if(MsgFKind<2 && ClearRequest_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 18://SAPI_n_Reject
if(MsgFKind<5 && SAPI_n_Reject_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 19://Confusion
if(MsgFKind<7 && Confusion_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 20://Reset
if(MsgFKind<2 && Reset_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 22://OverLoad
if(MsgFKind<10 && OverLoad_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 23://ResetCircuit
if(MsgFKind<10 && ResetCircuit_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 24://ResetCircuitAck
if(MsgFKind<2 && ResetCircuitAck_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 25://MSCInvokeTrace
if(MsgFKind<16 && MSCInvokeTrace_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 26://BSSInvokeTrace
if(MsgFKind<15 && BSSInvokeTrace_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 27://Block
if(MsgFKind<5 && Block_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 28://BlockAcknowledge
if(MsgFKind<2 && BlockAcknowledge_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 29://Unblock
if(MsgFKind<2 && Unblock_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 30://UnblockAcknowledge
if(MsgFKind<2 && UnblockAcknowledge_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 31://CircuitPoolBlock
if(MsgFKind<9 && CircuitPoolBlock_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 32://CircuitPoolBlockAck
if(MsgFKind<6 && CircuitPoolBlockAck_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 33://CircuitPoolUnblock
if(MsgFKind<6 && CircuitPoolUnblock_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 34://CircuitPoolUnblockAck
if(MsgFKind<6 && CircuitPoolUnblockAck_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 35://UnequippedCircuit
if(MsgFKind<6 && UnequippedCircuit_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 36://ResourceRequest
if(MsgFKind<13 && ResourceRequest_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 37://ResourceIndication
if(MsgFKind<23 && ResourceIndication_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 38://Paging
if(MsgFKind<15 && Paging_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 39://CipherModeCommand
if(MsgFKind<10 && CipherModeCommand_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 40://ClassMarkUpdate
if(MsgFKind<6 && ClassMarkUpdate_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 41://CipherModeComplete
if(MsgFKind<5 && CipherModeComplete_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 43://CompleteLayer3Info
if(MsgFKind<32 && CompleteLayer3Info_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 45://CipherModeReject
if(MsgFKind<3 && CipherModeReject_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
case 46://LoadIndication
if(MsgFKind<23 && LoadIndication_FieldCrit[MsgFKind][1]==1)
bRet=TRUE;
break;
default:
break;
}
return(bRet);
}
/****************************************************************************
* *
* FUNCTION : GetRR_CauseStr(BYTE) *
* PURPOSE : Get One Byte Data's Str
*
****************************************************************************/
void GetRR_CauseStr(BYTE Data)
{
strcpy(DataStr," RR原因");
if(Data==1)
strcat(DataStr,":不正常释放,未指定的");
else if(Data==2)
strcat(DataStr,":不正常释放,信道不接收");
else if(Data==3)
strcat(DataStr,":不正常释放,超时");
else if(Data==4)
strcat(DataStr,":不正常释放,无线路径上无工作");
else if(Data==5)
strcat(DataStr,":优先级释放");
else if(Data==8)
strcat(DataStr,":不可能切换,时间提前量超过范围");
else if(Data==9)
strcat(DataStr,":不接收信道模式");
else if(Data==10)
strcat(DataStr,":频率未实现");
else if(Data==0x41)
strcat(DataStr,":呼叫已清除");
else if(Data==0x5f)
strcat(DataStr,":消息内容不正确");
else if(Data==0x60)
strcat(DataStr,":无效命令信息");
else if(Data==0x61)
strcat(DataStr,":消息类型不存在或未应用");
else if(Data==0x62)
strcat(DataStr,":消息类型不适应协议");
else if(Data==0x64)
strcat(DataStr,":IE错误");
else if(Data==0x65)
strcat(DataStr,":无小区可提供");
else if(Data==0x6f)
strcat(DataStr,":未指定的协议错误");
else
strcat(DataStr,":普通事件");
return;
}
/****************************************************************************
* *
* FUNCTION : GetChannelSpeedTypeStr(BYTE) *
* PURPOSE : Get One Byte Data's Str
*
****************************************************************************/
void GetChannelSpeedTypeStr(BYTE Data)
{
strcpy(DataStr," 信道速率和类型");
if(Data==0)
strcat(DataStr,":无参考信息");
else if(Data==1)
strcat(DataStr,":独立专用控制信道(SDCCH)");
else if(Data==8)
strcat(DataStr,":全速率业务信道(TCH)信道Bm");
else if(Data==9)
strcat(DataStr,":半速率业务信道(TCH)信道Lm");
else if(Data==0x0a)
strcat(DataStr,":全速率或半速率业务信道(TCH),希望使用全速率,第一次分配信道后也可改变");
else if(Data==0x0b)
strcat(DataStr,":全速率或半速率业务信道(TCH),希望使用半速率,第一次分配信道后也可改变");
else if(Data==0x1a)
strcat(DataStr,":全速率或半速率业务信道(TCH),希望使用全速率,第一次分配信道后也不能改变");
else if(Data==0x1b)
strcat(DataStr,":全速率或半速率业务信道(TCH),希望使用半速率,第一次分配信道后也不能改变");
else
strcat(DataStr,":备用");
return;
}
/****************************************************************************
* *
* FUNCTION : GetCircuitPoolStr(BYTE) *
* PURPOSE : Get One Byte Data's Str
*
****************************************************************************/
void GetCircuitPoolStr(BYTE Data)
{
strcpy(DataStr," 电路组");
if(Data==1)
strcat(DataStr,":电路组1,全速率话音,全速率数据");
else if(Data==2)
strcat(DataStr,":电路组2,半速率话音,半速率数据");
else if(Data==3)
strcat(DataStr,":电路组3,全速率话音,全速率数据或半速率话音,半速率数据");
else if(Data&0xf0==0x80)
strcat(DataStr,":国内/本地备用");
else
strcat(DataStr,":备用");
return;
}
/****************************************************************************
* *
* FUNCTION : GetCI_DiscriminatorStr(BYTE) *
* PURPOSE : Get One Byte Data's Str
*
****************************************************************************/
void GetCI_DiscriminatorStr(BYTE Data)
{
strcpy(DataStr," 小区识别鉴别器");
if((Data&0xf0)!=0) //maybe in high 4 bits
Data>>=4;
else if((Data&0x0f)!=0) //maybe in low 4 bits
Data&=0x0f;
if(Data==0)
strcat(DataStr,":整个小区全球识别(GCI)用以识别小区");
else if(Data==1)
strcat(DataStr,":位置编码(LAC),小区识别(CI),用以识别小区");
else if(Data==2)
strcat(DataStr,":小区识别(CI),用以识别小区");
else if(Data==3)
strcat(DataStr,":此处理不涉及任何小区");
else if(Data==4)
strcat(DataStr,":位置区域识别(LAI)用于识别一个位置区域内的所有小区");
else if(Data==5)
strcat(DataStr,":LAC用于识别一个位置区域内的所有小区");
else if(Data==6)
strcat(DataStr,":BSS内的所有小区被标识");
else
strcat(DataStr,":备用");
return;
}
/****************************************************************************
* *
* FUNCTION : GetCauseStr(BYTE) *
* PURPOSE : Get One Byte Data's Str
*
****************************************************************************/
void GetCauseStr(BYTE Data)
{
strcpy(DataStr," 原因值");
if(Data==0)
strcat(DataStr,":无线接口消息故障");
else if(Data==1)
strcat(DataStr,":无线接口故障");
else if(Data==2)
strcat(DataStr,":上行链路质量");
else if(Data==3)
strcat(DataStr,":上行信号强度");
else if(Data==4)
strcat(DataStr,":下行链路质量");
else if(Data==5)
strcat(DataStr,":下行信号强度");
else if(Data==6)
strcat(DataStr,":距离");
else if(Data==7)
strcat(DataStr,":0&M干预");
else if(Data==8)
strcat(DataStr,":响应MSC的请求");
else if(Data==9)
strcat(DataStr,":呼叫控制");
else if(Data==10)
strcat(DataStr,":无线接口故障一返回原信道");
else if(Data==11)
strcat(DataStr,":成功的切换");
else if(Data==12)
strcat(DataStr,":更好的小区");
else if(Data==13)
strcat(DataStr,":定向重试");
else if(Data>=14 && Data<=0x17)
strcat(DataStr,":保留为国际使用");
else if(Data>=0x18 && Data<=0x1f)
strcat(DataStr,":保留为国内使用");
else if(Data==0x20)
strcat(DataStr,":设备故障");
else if(Data==0x21)
strcat(DataStr,":无可用无线资源");
else if(Data==0x22)
strcat(DataStr,":请求的地面资源不可用");
else if(Data==0x23)
strcat(DataStr,":CCCH过载");
else if(Data==0x24)
strcat(DataStr,":处理器过载");
else if(Data==0x25)
strcat(DataStr,":BSS未装备");
else if(Data==0x26)
strcat(DataStr,":MS未装备");
else if(Data==0x27)
strcat(DataStr,":无效小区");
else if(Data==0x28)
strcat(DataStr,":业务负载");
else if(Data==0x29)
strcat(DataStr,":保留为国际使用");
else if(Data>=0x2a && Data<=0x2f)
strcat(DataStr,":保留为国内使用");
else if(Data==0x30)
strcat(DataStr,":请求的码型变换/速率适配不可用");
else if(Data==0x31)
strcat(DataStr,":电路组不匹配");
else if(Data==0x32)
strcat(DataStr,":改变电路组");
else if(Data>=0x33 && Data<=0x3f)
strcat(DataStr,":保留为国际使用");
else if(Data==0x40)
strcat(DataStr,":加密算法不支持");
else if(Data>=0x41 && Data<=0x47)
strcat(DataStr,":保留为国际使用");
else if(Data>=0x48 && Data<=0x4f)
strcat(DataStr,":保留为国内使用");
else if(Data==0x50)
strcat(DataStr,":地面电路已经分配");
else if(Data==0x51)
strcat(DataStr,":无效消息内容");
else if(Data==0x52)
strcat(DataStr,":信息单元或字段丢失");
else if(Data==0x53)
strcat(DataStr,":错误值");
else if(Data==0x54)
strcat(DataStr,":未知消息类型");
else if(Data==0x55)
strcat(DataStr,":未知信息单元");
else if(Data>=0x56 && Data<=0x57)
strcat(DataStr,":保留为国际使用");
else if(Data>=0x58 && Data<=0x5f)
strcat(DataStr,":保留为国内使用");
else if(Data==0x60)
strcat(DataStr,":BSC和MSC间的协议错误");
else if(Data>=0x61 && Data>=0x67)
strcat(DataStr,":保留为国际使用");
else if(Data>=0x68 && Data>=0x6f)
strcat(DataStr,":保留为国内使用");
else
strcat(DataStr,":备用");
return;
}
/****************************************************************************
* *
* FUNCTION : GetCauseStr(BYTE) *
* PURPOSE : Get One Byte Data's Str
*
****************************************************************************/
void GetChosenEncryptionAlgorithmStr(BYTE Data)
{
strcpy(DataStr," 选择的加密算法");
if(Data==1)
strcat(DataStr,":不加密");
else if(Data==2)
strcat(DataStr,":GSM用户数据加密版本1(A5/1)");
else if(Data==3)
strcat(DataStr,":GSM用户数据加密版本2(A5/2)");
else if(Data==4)
strcat(DataStr,":GSM用户数据加密版本3(A5/3)");
else if(Data==5)
strcat(DataStr,":GSM用户数据加密版本4(A5/4)");
else if(Data==6)
strcat(DataStr,":GSM用户数据加密版本5(A5/5)");
else if(Data==7)
strcat(DataStr,":GSM用户数据加密版本6(A5/6)");
else if(Data==8)
strcat(DataStr,":GSM用户数据加密版本7(A5/7)");
else
strcat(DataStr,":留为将来国际间使用");
return;
}
/****************************************************************************
* *
* FUNCTION : GetChosenChannelStr(BYTE) *
* PURPOSE : Get One Byte Data's Str
*
****************************************************************************/
void GetChosenChannelStr(BYTE Data)
{
strcpy(DataStr," 选择的信道");
if((Data&0xf0)!=0) //maybe in high 4 bits
Data>>=4;
else if((Data&0x0f)!=0) //maybe in low 4 bits
Data&=0x0f;
if(Data==1)
strcat(DataStr,":独立专用控制信道(SDCCH)");
else if(Data==8)
strcat(DataStr,":全速率业务信道(TCH)");
else if(Data==9)
strcat(DataStr,":半速率业务信道(TCH)");
else
strcat(DataStr,":备用");
return;
}
/****************************************************************************
* *
* FUNCTION : GetBssMAPFieldStr(BYTE) *
* PURPOSE : Get One Byte Data's Str
*
****************************************************************************/
void GetBssMapFieldStr(BYTE Data)
{
BYTE Kind;
char Str1[50];
BYTE Value=Data;
strcpy(DataStr,"");
switch(BssMapKind) {
case 1: //AssignRequest
switch(MsgFKind+1) {
case 1:// ChannelTypeEI
strcpy(DataStr," 信道类型单元识别");
break;
case 2:// ChannelTypeLI
strcpy(DataStr," 信道类型单元长度");
break;
case 3:// VolDataID
strcpy(DataStr," 语音/数据指示符");
if(Data==1)
strcat(DataStr,":语音");
else if(Data==2)
st
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -