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

📄 ss7tranpar1.cpp

📁 VC6.0环境下的ss7isup部分的信令解释程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		strtemp.Format("address signal%d:",addressnum++);
		stroutput+=strtemp;
		//pCtrl->AddString(stroutput);
		tt=0x8;
		stroutput+=" ";
		for(i=0;i<4;i++)
		{
			ltemp=(lpar&tt)>>(3-i);
			switch (ltemp&1)
			{
				case 0:
					stroutput+="0";
				break;
				case 1:
					stroutput+="1";
				break;
				default:
				break;
			}
			tt>>=1;
		}
		strtemp.Format("%d",lpar&0x0F);
		stroutput+="__";
		stroutput+=strtemp;
		pCtrl->AddString(stroutput);

		lpar>>=4;
		stroutput=strtranhead;
		strtemp.Format("address signal%d:",addressnum++);
		stroutput+=strtemp;
		//pCtrl->AddString(stroutput);
		tt=0x8;
		stroutput+=" ";
		for(i=0;i<4;i++)
		{
			ltemp=(lpar&tt)>>(3-i);
			switch (ltemp&1)
			{
				case 0:
					stroutput+="0";
				break;
				case 1:
					stroutput+="1";
				break;
				default:
				break;
			}
			tt>>=1;
		}
		lpar&=0x0F;
		strtemp.Format("%d",lpar);
		stroutput+="__";
		stroutput+=strtemp;
		if ((j==110) && (ladroande==1))
		{
			stroutput+="(filled code)";
		}
		pCtrl->AddString(stroutput);
	}
}

void CSs7tranDlg::tranpar_Calling_party_number(CString str)
{
	long lpar;
	long ltemp,tt;
	long i;
	long ladroande;
	CString str1;
	CString stroutput;
	CString strtemp;
	CListBox *pCtrl = (CListBox *)GetDlgItem( IDC_LIST1 ) ; 	

	stroutput=str;
	stroutput+=":Calling party number";
	pCtrl->AddString(stroutput);

	str1=str.Left(2);
	str.Delete(0,3);
	lpar=strchangehex(str1);


	stroutput=strbithead;
	stroutput+="byte 1:";
	stroutput+=str1;
	pCtrl->AddString(stroutput);
	stroutput=strbithead;
	stroutput+="bit GFEDCBA :Nature of address indicator";
	pCtrl->AddString(stroutput);
	tt=0x40;
	stroutput=strtranhead;
	for(i=0;i<7;i++)
	{
		ltemp=(lpar&tt)>>(6-i);
		switch (ltemp&1)
		{
			case 0:
				stroutput+="0";
			break;
			case 1:
				stroutput+="1";
			break;
			default:
			break;
		}
		tt>>=1;
	}
	if ((lpar&0x7F)==0)
		stroutput+="__spare";
	else if ((lpar&0x7F)==1)
		stroutput+="__subscriber number";
	else if ((lpar&0x7F)==2)
		stroutput+="__unknown";
	else if ((lpar&0x7F)==3)
		stroutput+="__national (significant) number";
	else if ((lpar&0x7F)==4)
		stroutput+="__international number";
	else if (((lpar&0x7F)>=5) && ((lpar&0x7F)<=0x6F))
		stroutput+="__spare";
	else if (((lpar&0x7F)>=0x70) && ((lpar&0x7F)<=0x7E))
		stroutput+="__reserved for national use";
	else if ((lpar&0x7F)==0x7F)
		stroutput+="__spare";
	else
		stroutput+="__spare";
	pCtrl->AddString(stroutput);
	
	stroutput=strbithead;
	stroutput+="bit F :Odd/even indicator";
	pCtrl->AddString(stroutput);
	stroutput=strtranhead;
	if ((lpar&0x80)==0x80)
	{
		stroutput+="1__odd number of address signals";
		ladroande=1;
	}
	else
	{
		stroutput+="0__even number of address signals";
		ladroande=0;
	}
	pCtrl->AddString(stroutput);


	str1=str.Left(2);
	str.Delete(0,3);
	lpar=strchangehex(str1);
	stroutput=strbithead;
	stroutput+="byte 2:";
	stroutput+=str1;
	pCtrl->AddString(stroutput);

	stroutput=strbithead;
	stroutput+="bit BA :Screening indicator";
	pCtrl->AddString(stroutput);
	tt=0x2;
	stroutput=strtranhead;
	for(i=0;i<2;i++)
	{
		ltemp=(lpar&tt)>>(1-i);
		switch (ltemp&1)
		{
			if (i==0)
			case 0:
				stroutput+="0";
			break;
			case 1:
				stroutput+="1";
			break;
			default:
			break;
		}
		tt>>=1;
	}
	switch (lpar&0x3)
	{
		case 0:
		case 2:
			stroutput+="__spare";
		break;
		case 1:
			stroutput+="__user provided, verified and passed";
		break;
		case 3:
			stroutput+="__network provided";
		break;
		default:
		break;
	}	
	pCtrl->AddString(stroutput);
	lpar>>=2;


	stroutput=strbithead;
	stroutput+="bit DC :Address presentation restricted (Pres. Restric.) indicator";
	pCtrl->AddString(stroutput);
	tt=0x2;
	stroutput=strtranhead;
	for(i=0;i<2;i++)
	{
		ltemp=(lpar&tt)>>(1-i);
		switch (ltemp&1)
		{
			case 0:
				stroutput+="0";
			break;
			case 1:
				stroutput+="1";
			break;
			default:
			break;
		}
		tt>>=1;
	}
	switch (lpar&0x3)
	{
		case 0:
			stroutput+="__presentation allowed";
		break;
		case 1:
			stroutput+="__presentation restricted";
		break;
		case 2:
			stroutput+="__address not available";
		break;
		case 3:
			stroutput+="__spare";
		break;
		default:
		break;
	}	
	pCtrl->AddString(stroutput);
	lpar>>=2;

	stroutput=strbithead;
	stroutput+="bit GHE :Numbering plan Ind.";
	pCtrl->AddString(stroutput);
	tt=0x4;

	stroutput=strtranhead;
	for(i=0;i<3;i++)
	{
		ltemp=(lpar&tt)>>(2-i);
		switch (ltemp&1)
		{
			case 0:
				stroutput+="0";
			break;
			case 1:
				stroutput+="1";
			break;
			default:
			break;
		}
		tt>>=1;
	}
	switch (lpar&0x7)
	{
		case 0:
		case 2:
		case 7:
			stroutput+="__spare";
		break;
		case 1:
			stroutput+="__ISDN (Telephony) numbering plan (Recommendation E.164)";
		break;
			stroutput+="__spare";
		break;
		case 3:
			stroutput+="__Data numbering plan (Recommendation X.121)";
		break;
		case 4:
			stroutput+="__Telex numbering plan (Recommendation F.69)";
		break;
		case 5:
			stroutput+="__reserved for national use";
		break;
	}
	pCtrl->AddString(stroutput);

	stroutput=strbithead;
	stroutput+="bit F :Calling party number incomplete indicator (NI)";
	pCtrl->AddString(stroutput);
	stroutput=strtranhead;
	if ((lpar&0x8)==0)
	{
		stroutput+="0__complete";
	}
	else
		stroutput+="1__incomplete";
	pCtrl->AddString(stroutput);

	long j;

	stroutput=strbithead;
	stroutput+="byte 3-byte end:";
	stroutput+=str;
	stroutput+="__address signal";
	pCtrl->AddString(stroutput);

	long addressnum;
	addressnum=0;
	for(j=0;j<100;j++)
	{
		str1=str.Left(2);
		str.Delete(0,2);
		if (str.Find(",")!=-1)
			str.Delete(0,1);
		else
		{
				j=110;
		}
		lpar=strchangehex(str1);
		stroutput=strtranhead;
		strtemp.Format("address signal%d:",addressnum++);
		stroutput+=strtemp;
		//pCtrl->AddString(stroutput);
		tt=0x8;
		stroutput+=" ";
		for(i=0;i<4;i++)
		{
			ltemp=(lpar&tt)>>(3-i);
			switch (ltemp&1)
			{
				case 0:
					stroutput+="0";
				break;
				case 1:
					stroutput+="1";
				break;
				default:
				break;
			}
			tt>>=1;
		}

		strtemp.Format("%d",lpar&0x0F);
		stroutput+="__";
		stroutput+=strtemp;
		pCtrl->AddString(stroutput);



		lpar>>=4;
		stroutput=strtranhead;
		strtemp.Format("address signal%d:",addressnum++);
		stroutput+=strtemp;
		//pCtrl->AddString(stroutput);
		tt=0x8;
		stroutput+=" ";
		for(i=0;i<4;i++)
		{
			ltemp=(lpar&tt)>>(3-i);
			switch (ltemp&1)
			{
				case 0:
					stroutput+="0";
				break;
				case 1:
					stroutput+="1";
				break;
				default:
				break;
			}
			tt>>=1;
		}
		lpar&=0x0F;
		strtemp.Format("%d",lpar);
		stroutput+="__";
		stroutput+=strtemp;
		if ((j==110) && (ladroande==1))
		{
			stroutput+="(filled code)";
		}
		pCtrl->AddString(stroutput);
	}

}

void CSs7tranDlg::tranpar_Calling_party_category(CString str)
{
	long lpar;
	long ltemp,tt;
	long i;
	CString str1;
	CString strtemp;
	CString stroutput;
	CListBox *pCtrl = (CListBox *)GetDlgItem( IDC_LIST1 ) ; 	

	stroutput=str;
	stroutput+=":Calling party's category";
	pCtrl->AddString(stroutput);


	str1=str.Left(2);
	str.Delete(0,2);
	lpar=strchangehex(str1);

	stroutput=strbithead;
	stroutput+="bit HGFEDCBA :Calling party's category";
	pCtrl->AddString(stroutput);

	stroutput=strtranhead;
	tt=0x80;
	for(i=0;i<8;i++)
	{
		ltemp=(lpar&tt);
		ltemp>>=(8-i-1);
		switch (ltemp&1)
		{
			case 0:
				stroutput+="0";
			break;
			case 1:
				stroutput+="1";
			break;
			default:
			break;
		}
		tt>>=1;
	}
	if (lpar==0)
		stroutput+="__calling party's category unknown at this time";
	else if (lpar==1)
		stroutput+="__operator, language French";
	else if (lpar==2)
		stroutput+="__operator, language English";
	else if (lpar==3)
		stroutput+="__operator, language German";
	else if (lpar==4)
		stroutput+="__operator, language Russian";
	else if (lpar==5)
		stroutput+="__operator, language Spanish";
	else if (lpar>=6 && lpar<=8)
		stroutput+="__available to A dministrations for selecting a particular language by mutual agreement";
	else if (lpar==9)
		stroutput+="__reserved (see Recommendation Q.104) (Note)";
	else if (lpar==10)
		stroutput+="__ordinary calling subscriber";
	else if (lpar==11)
		stroutput+="__calling subscriber with priority";
	else if (lpar==12)
		stroutput+="__data call (voice band data)";
	else if (lpar==13)
		stroutput+="__test call";
	else if (lpar==14)
		stroutput+="__spare";
	else if (lpar==15)
		stroutput+="__payphone";
	else if (lpar>=16 && lpar<=223)
		stroutput+="__spare";
	else if (lpar>=224 && lpar<=254)
		stroutput+="__reserved for national use";
	else
		stroutput+="__spare";
	pCtrl->AddString(stroutput);
}



void CSs7tranDlg::tranpar_Cause_indicators(CString str)
{
	long lpar;
	long ltemp,tt;
	long i;
	CString str1;
	CString strtemp;
	CString stroutput;
	CListBox *pCtrl = (CListBox *)GetDlgItem( IDC_LIST1 ) ; 
	//reserve
	stroutput=str;
	stroutput+=":Cause indicators";
	pCtrl->AddString(stroutput);


	str1=str.Left(2);
	str.Delete(0,3);
	lpar=strchangehex(str1);

	stroutput=strbithead;
	stroutput+="bit DCBA :Location";
	pCtrl->AddString(stroutput);
	tt=0x8;
	stroutput=strtranhead;
	for(i=0;i<4;i++)
	{
		ltemp=(lpar&tt)>>(3-i);
		switch (ltemp&1)
		{
			if (i==0)
			case 0:
				stroutput+="0";
			break;
			case 1:
				stroutput+="1";
			break;
			default:
			break;
		}
		tt>>=1;
	}
	switch (lpar&0x0F)
	{
		case 0:
			stroutput+="__U";
		break;
		case 1:
			stroutput+="__LPN";
		break;
		case 2:
			stroutput+="__LN";
		break;
		case 3:
			stroutput+="__TN";
		break;
		case 4:
			stroutput+="__RLN";
		break;
		case 5:
			stroutput+="__RPN";
		break;
		case 7:
			stroutput+="__INTL";
		break;
		case 0x0a:
			stroutput+="__BI";
		break;
		default:
		break;
	}	
	pCtrl->AddString(stroutput);
	lpar>>=4;

	stroutput=strbithead;
	stroutput+="bit E :Spare";
	pCtrl->AddString(stroutput);
	tt=0x1;
	stroutput=strtranhead;
	for(i=0;i<1;i++)
	{
		ltemp=(lpar&tt);
		switch (ltemp&1)
		{
			case 0:
				stroutput+="0";
			break;
			case 1:
				stroutput+="1";
			break;
			default:
			break;
		}
		tt>>=1;
	}
	pCtrl->AddString(stroutput);
	lpar>>=1;

	stroutput=strbithead;
	stroutput+="bit GF :Coding standard";
	pCtrl->AddString(stroutput);
	tt=0x2;
	stroutput=strtranhead;
	for(i=0;i<2;i++)
	{
		ltemp=(lpar&tt)>>(1-i);
		switch (ltemp&1)
		{
			case 0:
				stroutput+="0";
			break;
			case 1:
				stroutput+="1";
			break;
			default:
			break;
		}
		tt>>=1;
	}
	switch (lpar&0x3)
	{
		case 0:
			stroutput+="__CCITT";
		break;
		case 1:
			stroutput+="__ISO/IEC";
		break;
		case 2:
			stroutput+="__NATIONAL";
		break;
		case 3:
			stroutput+="__OTHERS";
		break;
		default:
		break;
	}	
	pCtrl->AddString(stroutput);
	lpar>>=2;


	stroutput=strbithead;
	stroutput+="bit H :Ext";
	pCtrl->AddString(stroutput);
	tt=0x1;
	stroutput=strtranhead;
	for(i=0;i<1;i++)
	{
		ltemp=(lpar&tt);
		switch (ltemp&1)
		{
			case 0:
				stroutput+="0";
			break;
			case 1:
				stroutput+="1";
			break;
			default:
			break;
		}
		tt>>=1;
	}
	switch (lpar&0x1)
	{
		case 0:
			stroutput+="__Extension";
		break;
		case 1:
			stroutput+="__End";
		break;
	}
	pCtrl->AddString(stroutput);

	str1=str.Left(2);
	str.Delete(0,2);
	lpar=strchangehex(str1);

	stroutput=strbithead;
	stroutput+="bit ONMLKJI :Cause value";
	pCtrl->AddString(stroutput);
	tt=0x40;
	stroutput=strtranhead;
	for(i=0;i<7;i++)
	{
		ltemp=(lpar&tt)>>(6-i);
		switch (ltemp&1)
		{
			if (i==0)
			case 0:
				stroutput+="0";
			break;
			case 1:
				stroutput+="1";
			break;
			default:
			break;
		}
		tt>>=1;
	}
	pCtrl->AddString(stroutput);
	lpar>>=7;

	stroutput=strbithead;
	stroutput+="bit P :Ext";
	pCtrl->AddString(stroutput);
	tt=0x1;
	stroutput=strtranhead;
	for(i=0;i<1;i++)
	{
		ltemp=(lpar&tt);
		switch (ltemp&1)
		{
			case 0:
				stroutput+="0";
			break;
			case 1:
				stroutput+="1";
			break;
			default:
			break;
		}
		tt>>=1;
	}
	switch (lpar&0x1)
	{
		case 0:
			stroutput+="__Extension";
		break;
		case 1:
			stroutput+="__End";
		break;
	}
	pCtrl->AddString(stroutput);

}

void CSs7tranDlg::tranpar_Circuit_group_supervision_message_type_indicator(CString str)
{
	long lpar;
	long ltemp,tt;
	long i;
	CString str1;
	CString strtemp;
	CString stroutput;
	CListBox *pCtrl = (CListBox *)GetDlgItem( IDC_LIST1 ) ; 	

	stroutput=str;
	stroutput+=":Circuit group supervision message type indicator";
	pCtrl->AddString(stroutput);

	str1=str.Left(2);
	str.Delete(0,2);
	lpar=strchangehex(str1);


	stroutput=strbithead;
	stroutput="bit BA :Type indicator";
	pCtrl->AddString(stroutput);
	tt=2;
	stroutput=strtranhead;
	for(i=0;i<2;i++)
	{
		ltemp=(lpar&tt)>>(1-i);
		switch (ltemp&1)
		{
			case 0:
				stroutput+="0";
			break;
			case 1:
				stroutput+="1";
			break;
			default:
			break;
		}
		tt>>=1;
	}
	if ((lpar&3)==0)
		stroutput+="__maintenance oriented";
	else if((lpar&3)==1)
		stroutput+="__hardware failure oriented";
	else if((lpar&3)==2)
		stroutput+="__reserved for national use (used in 1984 version)";
	else if((lpar&3)==3)
		stroutput+="__spare";
	pCtrl->AddString(stroutput);
	lpar>>=2;

	stroutput=strbithead;
	stroutput+="bit HGFEDC :Spare";
	pCtrl->AddString(stroutput);
	tt=0x40;
	stroutput=strtranhead;
	for(i=0;i<6;i++)
	{
		ltemp=(lpar&tt)>>(5-i);
		switch (ltemp&1)
		{
			case 0:
				stroutput+="0";
			break;
			case 1:
				stroutput+="1";
			break;
			default:
			break;
		}
		tt>>=1;
	}
	stroutput+="__spare";
	pCtrl->AddString(stroutput);

}

void CSs7tranDlg::tranpar_Circuit_state_indicator(CString str)
{
	long lpar;
	long ltemp,tt;
	long i;
	CString str1;
	CString strtemp;
	CString stroutput;
	CListBox *pCtrl = (CListBox *)GetDlgItem( IDC_LIST1 ) ; 	

	stroutput=str;
	stroutput+=":Circuit state indicator ";
	pCtrl->AddString(stroutput);

	
	str1=str.Left(2);
	str.Delete(0,2);
	lpar=strchangehex(str1);


	ltemp=(lpar&0xc)>>2;
	if (ltemp==0)
	{
		stroutput=strbithead;
		stroutput+="bit BA :Maintenance blocking state";
		pCtrl->AddString(stroutput);
		tt=2;
		stroutput=strtranhead;
		for(i=0;i<2;i++)
		{
			ltemp=(lpar&tt)>>(1-i);
			switch (ltemp&1)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -