⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dspbssmapfunc.cpp

📁 七号信令解码器
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		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 + -