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

📄 ma_testtool.c

📁 gsm map协议源代码
💻 C
📖 第 1 页 / 共 3 页
字号:

/* header include files (.h) */
#include "envopt.h"        /* environment options */
#include "envdep.h"        /* environment dependent */
#include "envind.h"        /* environment independent */
#include "gen.h"           /* general layer */
#include "ssi.h"           /* system services */
#include "cm5.h"
#include "cm_ss7.h"
#include "cm_err.h"        /* common error */
#include "stu.h"           /* tcap upper interface */
#include "mat.h"           /* inap upper interface */
#ifdef MA_FTHA
#include "sht.h"           /* SHT interface */
#endif /* MA_FTHA */
#include "lma.h"           /* layer management interface */
#include "ma_acc.h"        /* acceptance test defines */
#include "ma.h"
#include "ma_mf.h"
 #ifdef ZJ
#include "cm_ftha.h"       /* Common FTHA */
#include "cm_pftha.h"      /* Common PSF defines */
#include "cm_psfft.h"
#include "cm_tupsf.h"      /* Common TCAP user PSF */
#include "zj_acc.h"        /* PSF Acceptance Test */
#include "lzj.h"
#endif

/* header/extern include files (.x) */
#include "gen.x"           /* general layer */
#include "ssi.x"           /* system services */
#include "cm5.x"
#include "cm_ss7.x"        /* Common */
#include "cm_lib.x"        /* Common library headers */
#include "stu.x"           /* tcap upper interface */
#include "lma.x"           /* layer management interface */
#include "mat.x"           /* inap upper interface */
#ifdef MA_FTHA
#include "sht.x"           /* SHT interface */
#endif /* MA_FTHA */
#ifdef ZJ
#include "cm_ftha.x"       /* Common FTHA */
#include "cm_pftha.x"      /* Common PSF defines */
#include "cm_psfft.x"
#include "cm_tupsf.x"      /* Common TCAP user PSF */
#endif
#include "ma.x"
#include "ma_acc.x"        /* acceptance test defines */
#ifdef ZJ
#include "lzj.x"
#include "zj.x"
#include "zj_acc.x"
#endif

#ifdef XWEXT

/* Global Variable */
#ifdef MAP_TEST_TYPE
EXTERN U8        maAccOprCode;  /* Sample Operation code  */
/*EXTERN MaAccCb   maAccCb;  *//* MAP Acceptance Test control block */
EXTERN SpAddr    maAccAddrs[];
EXTERN MaApConName  maAccACNs[];
EXTERN MaAllSSEv maInvoke;  /* Global Invoke Structure */
#endif
EXTERN MaTknElmtDef **maTstPduDefs[];
EXTERN MaCb maCb;

/*function in ma_mf.c for test*/
EXTERN S16 maEncStart(MaMsgCtl *ctlp);
EXTERN S16 maDecStart(MaMsgCtl *ctlp);

/*private Variable*/
#define MAT_TST 4
#define CHEKRET 	if(ret != ROK) RETVALUE(RFAILED) 

/* macro to set TknU8 , TknS16, TknU16, TknU32...etc.  */
#define MA_API_SET_TOKEN_VALUE(_tkn, _val)                               \
{                                                                         \
   (_tkn)->pres = PRSNT_NODEF;                                            \
   (_tkn)->val  = (_val);                                                 \
}

/*macro to set TknStrS , TknStrE , TknStr , TknStr , TknStrM...etc*/
#define MA_API_CPY_TKNSTR(_tkn, _val, _len, _memCp)                              \
{                                                                         \
   (_tkn)->pres = NOTPRSNT;                                            \
	if(_len > 0)								\
	{				\
	   (_tkn)->pres = PRSNT_NODEF;                                            \
	   (_tkn)->len  = (U8)(_len);                                             \
	   cmMemcpy((U8 *)(_tkn)->val, (CONSTANT U8 *)(_val), (_len));	\
	}		\
}

#define MA_API_SET_U32_TO_TKNS(_tkn, _val, _memCp)                              \
{                                                                         \
      (_tkn)->pres = NOTPRSNT;                                            \
	(_tkn)->pres = PRSNT_NODEF;                                       \
	if((_val>=0)&&(_val < 0x80))							\
	{				\
	   (_tkn)->len  = (U8)(1);                                             \
	}		\
	if((_val >= 0x80)&&(_val < 0x7fff))				\
	{				\
	   (_tkn)->len  = (U8)(2);                                             \
	   (_tkn)->val[0] = 0x0FF&_val;							\
	   (_tkn)->val[1] = ((0xFF00&_val)>>8);					\
	}		\
	if((_val >= 0x8000)&&(_val < 0x7fffff))				\
	{												\
	   (_tkn)->len  = (U8)(3);                                             \
	   (_tkn)->val[0] = 0x0FF&_val;							\
	   (_tkn)->val[1] = (0x0FF00&_val)>>8;							\
	   (_tkn)->val[2] = (0xFF0000&_val)>>16;							\
	} 											\
	if((_val >= 0x800000)&&(_val < 0x7fffffff))				\
	{												\
	   (_tkn)->len  = (U8)(4);                                             \
	   (_tkn)->val[0] = 0x0FF&_val;							\
	   (_tkn)->val[1] = (0x0FF00&_val)>>8;							\
	   (_tkn)->val[2] = (0xFF0000&_val)>>16;							\
	   (_tkn)->val[2] = (0xFF000000&_val)>>24;							\
	} 		\
}

#define maTstVerifyTknU8(verflg, ptr1, ptr2) \
        (sprintf(prntBuf,"        %05d Verify TknU8 ( %s, %s, %s)\n", \
                __LINE__ , #verflg,#ptr1,#ptr2)) ?  \
        (SPrint(prntBuf), _maTstVerifyTknU8(verflg, ptr1, ptr2)):RFAILED

#define maTstVerifyTknStrS(verflg, ptr1, ptr2) \
        (sprintf(prntBuf,"        %05d VerifyTknStrS ( %s, %s, %s)\n", \
                __LINE__ , #verflg,#ptr1,#ptr2)) ?  \
        (SPrint(prntBuf), _maTstVerifyTknStrS(verflg, ptr1, ptr2)):RFAILED

#define maTstVerifyTknStr12(verflg, ptr1, ptr2) \
        (sprintf(prntBuf,"        %05d VerifyTknStrS ( %s, %s, %s)\n", \
                __LINE__ , #verflg,#ptr1,#ptr2)) ?  \
        (SPrint(prntBuf), _maTstVerifyTknStr12(verflg, ptr1, ptr2)):RFAILED

#define maTstVerifyExtCentrex(verflg, ptr1, ptr2) \
        (sprintf(prntBuf,"        %05d Verify Centrex ( %s, %s, %s)\n", \
                __LINE__ , #verflg,#ptr1,#ptr2)) ?  \
        (SPrint(prntBuf), _maTstVerifyExtCentrex(verflg, ptr1, ptr2)):RFAILED

#define maTstVerifyExtLocation(verflg, ptr1, ptr2) \
        (sprintf(prntBuf,"        %05d Verify Loction ( %s, %s, %s)\n", \
                __LINE__ , #verflg,#ptr1,#ptr2)) ?  \
        (SPrint(prntBuf), _maTstVerifyExtLocation(verflg, ptr1, ptr2)):RFAILED

#define maTstVerifyExtShrinkDial(verflg, ptr1, ptr2) \
        (sprintf(prntBuf,"        %05d Verify Shrink DIal number ( %s, %s, %s)\n", \
                __LINE__ , #verflg,#ptr1,#ptr2)) ?  \
        (SPrint(prntBuf), _maTstVerifyExtShrinkDial(verflg, ptr1, ptr2)):RFAILED

#define maTstVerifyExtContSeq(verflg, ptr1, ptr2) \
        (sprintf(prntBuf,"        %05d Verify extension sequence ( %s, %s, %s)\n", \
                __LINE__ , #verflg,#ptr1,#ptr2)) ?  \
        (SPrint(prntBuf), _maTstVerifyExtContSeq(verflg, ptr1, ptr2)):RFAILED

#define maTstVerifyExt(verflg, ptr1, ptr2) \
        (sprintf(prntBuf,"        %05d Verify extension ( %s, %s, %s)\n", \
                __LINE__ , #verflg,#ptr1,#ptr2)) ?  \
        (SPrint(prntBuf), _maTstVerifyExt(verflg, ptr1, ptr2)):RFAILED



#define DBGTST(a) \
   sprintf(prntBuf, a);\
   SPrint(prntBuf)

PRIVATE Txt prntBuf[255];

/*set data service type ,  1 OCTET STRING , 
 *DataService ::= OCTET STRING (SIZE(2)){
 *	-- bit 876543	reserve(filled with 0)
 *	--	bit 1(narrow band service), 1: open
 *    --                                         0: close
 *	 --	bit 2(broad band service), 1: open
 *    --                                       0: close
 */
 S16 maTstSetExtDataserv(U8 verFlg,MaXWPriExt *evt, U8 *serv, U8 resv)
{
	/*
	if (!(IS_VER_EQUAL(maAccCb.pSwtch,verFlg)))
	{
		evt->id.pres = FALSE;
		evt->etype.elmntPres.pres = FALSE;
		RETVALUE(RFAILED);
	}
	*/

	if(cmStrlen(serv) != 2)
	{
		printf("unavaliable value!\r\n");
		RETVALUE(RFAILED);
	}
	MA_API_CPY_TKNSTR(&evt->id, (U8 *)XWEXT_OID1, 1, 0);
	MA_API_SET_TOKEN_VALUE(&evt->etype.elmntPres, (U8)1);
	MA_API_CPY_TKNSTR(&evt->etype.u.xwdataserv, serv, 2, 0);

	RETVALUE(ROK);
}

/*set location :ebsc , lai , bts*/
S16 maTstSetExtLocation(U8 verFlg,MaXWPriExt *evt, U8 ebscnum, U16 btsnum, U8 * lai, U8 resv)
{
	if((ebscnum<1) || (ebscnum>0xFF))
	{
		printf("unavaliable value!\r\n");
		RETVALUE(RFAILED);
	}
	if((btsnum<1) || (btsnum>0xFFFF))
	{
		printf("unavaliable value!\r\n");
		RETVALUE(RFAILED);
	}
	if(cmStrlen(lai) != 3)
	{
		printf("unavaliable value!\r\n");
		RETVALUE(RFAILED);
	}
	MA_API_CPY_TKNSTR(&evt->id, (U8 *)XWEXT_OID2, 1, 0);
	MA_API_SET_TOKEN_VALUE (&evt->etype.elmntPres, (U8)2);

/*ebsc 1 byte (1..255)*/
	evt->etype.u.xwlocation.xwebscnum.pres = TRUE;
	evt->etype.u.xwlocation.xwebscnum.len = 1;
	evt->etype.u.xwlocation.xwebscnum.val[0] = ebscnum;

/*bts 2 byte (1..65535)*/
	evt->etype.u.xwlocation.xwbtsnum.pres = TRUE;
	evt->etype.u.xwlocation.xwbtsnum.len = 2;
	evt->etype.u.xwlocation.xwbtsnum.val[0] = 0x0FF&btsnum;
	evt->etype.u.xwlocation.xwbtsnum.val[1] = (0xFF00&btsnum)>>8;

	MA_API_CPY_TKNSTR(&evt->etype.u.xwlocation.xwlai, lai, 3, 0);
	RETVALUE(ROK);
}

/*set centrex group inormation*/
S16 maTstSetExtCentrexInfo(U8 verFlg,MaXWPriExt *evt, U8 *grpnum, U8 *grpprefix, U8 *shrtnum, U8 *grprigt, U8 resv)
{
	/*
	if (!(IS_VER_EQUAL(maAccCb.pSwtch,verFlg)))
	{
		evt->id.pres = FALSE;
		evt->etype.elmntPres.pres = FALSE;
		RETVALUE(RFAILED);
	}
	*/
	if((cmStrlen(grpnum) < 1) || (cmStrlen(grpnum)>3))
	{
		printf("unavaliable value!\r\n");
		RETVALUE(RFAILED);
	}
	if((cmStrlen(grpprefix) < 1) || (cmStrlen(grpprefix)>3))
	{
		printf("unavaliable value!\r\n");
		RETVALUE(RFAILED);
	}
	if((cmStrlen(shrtnum) < 1) || (cmStrlen(shrtnum)>3))
	{
		printf("unavaliable value!\r\n");
		RETVALUE(RFAILED);
	}
	if(cmStrlen(grprigt) != 1)
	{
		printf("unavaliable value!\r\n");
		RETVALUE(RFAILED);
	}
	MA_API_CPY_TKNSTR(&evt->id, (U8 *)XWEXT_OID3, 1, 0);
	MA_API_SET_TOKEN_VALUE (&evt->etype.elmntPres, (U8)3);
	MA_API_CPY_TKNSTR(&evt->etype.u.xwcentrex.xwcentrexgrpnum, grpnum, cmStrlen(grpnum), 0);
	MA_API_CPY_TKNSTR( &evt->etype.u.xwcentrex.xwcentrexgrppre, grpprefix, cmStrlen(grpprefix), 0);
	MA_API_CPY_TKNSTR(&evt->etype.u.xwcentrex.xwcentrexshtnum, shrtnum, cmStrlen(shrtnum), 0);

	/*evt->etype.u.xwcentrex.xwcentrexrigt.pres = PRSNT_NODEF;
	evt->etype.u.xwcentrex.xwcentrexrigt.len = 1;
	evt->etype.u.xwcentrex.xwcentrexrigt.val[0] = grprigt;*/
	MA_API_CPY_TKNSTR(&evt->etype.u.xwcentrex.xwcentrexrigt, grprigt, 1, 0);

	RETVALUE(ROK);
}

/*set update type*/
/*UpdataType ::= ENUMERATED {
poweronupdata(1), 
overareaupdata(2),
handoffupdata(3),
startcallupdata(4),
implictupdata(5)}
*/
S16 maTstSetExtUpdType(U8 verFlg,MaXWPriExt *evt, U8 updtype, U8 resv)
{
	U8 i=1;
	EXTERN MaTknEnum maXWExtUpdateTypeEnums0[];

	while(i <= maXWExtUpdateTypeEnums0[0])
	{
		if(maXWExtUpdateTypeEnums0[i] == updtype)
		{
			MA_API_CPY_TKNSTR(&evt->id, (U8 *)XWEXT_OID4, 1, 0);
			MA_API_SET_TOKEN_VALUE(&evt->etype.elmntPres, (U8)4);
			/*1-4*/
			MA_API_SET_TOKEN_VALUE(&evt->etype.u.xwupdatetype, updtype);
			RETVALUE(ROK);
		}
		i++;
	}

	printf("then enum value [update type] is unvaliable!\r\n");
	RETVALUE(RFAILED);
}

/*set authorization type*/

S16 maTstSetExtAuthType(U8 verFlg,MaXWPriExt *evt, U8 autype, U8 resv)
{
	U8 i=1;
	/*
	if (!(IS_VER_EQUAL(maAccCb.pSwtch,verFlg)))
	{
		evt->id.pres = FALSE;
		evt->etype.elmntPres.pres = FALSE;
		RETVALUE(RFAILED);
	}
	*/

	MA_API_CPY_TKNSTR(&evt->id, (U8 *)XWEXT_OID5, 1, 0);
	MA_API_SET_TOKEN_VALUE(&evt->etype.elmntPres, (U8)5);

	MA_API_SET_TOKEN_VALUE(&evt->etype.u.xwauthtype, autype);
	RETVALUE(ROK);
			
}

/*set shrink dial number*/
S16 maTstSetExtShrinkDialNum(U8 verFlg,MaXWPriExt *evt, U8 *realnum, U8 *shrinknum, U8 resv)
{
	U8 i;
	/*
	if (!(IS_VER_EQUAL(maAccCb.pSwtch,verFlg)))
	{
		evt->id.pres = FALSE;
		evt->etype.elmntPres.pres = FALSE;
		RETVALUE(RFAILED);
	}
	*/
	MA_API_CPY_TKNSTR(&evt->id, (U8 *)XWEXT_OID6, 1, 0);
	MA_API_SET_TOKEN_VALUE (&evt->etype.elmntPres, (U8)6);
	
	for(i=0 ; i < MAX_SHRINK_DIAL ; i++)
	{
		MA_API_CPY_TKNSTR(&evt->etype.u.xwshrinkdialnum[i].realNum, realnum, cmStrlen(realnum), 0);
		MA_API_CPY_TKNSTR(&evt->etype.u.xwshrinkdialnum[i].shrinkNum, shrinknum, cmStrlen(shrinknum), 0);
	}
	RETVALUE(ROK);
}

/*set call password*/
/*OCTET STRING SIZE(1..8)*/
S16 maTstSetExtPaswdCall(U8 verFlg,MaXWPriExt *evt, U8 *pwd, U8 resv)
{
	/*
	if (!(IS_VER_EQUAL(maAccCb.pSwtch,verFlg)))
	{
		evt->id.pres = FALSE;
		evt->etype.elmntPres.pres = FALSE;
		RETVALUE(RFAILED);
	}
	*/
	if((cmStrlen(pwd) < 1) || (cmStrlen(pwd)>8))
	{
		printf("unavaliable value!\r\n");
		RETVALUE(RFAILED);
	}
	MA_API_CPY_TKNSTR(&evt->id, (U8 *)XWEXT_OID7, 1, 0);
	MA_API_SET_TOKEN_VALUE (&evt->etype.elmntPres, (U8)7);
	MA_API_CPY_TKNSTR(&evt->etype.u.xwcallpas, pwd, cmStrlen(pwd), 0);
	RETVALUE(ROK);
}

/*set hotline number*/
/*OCTET STRING SIZE(1..9)*/
S16 maTstSetExtHotline(U8 verFlg,MaXWPriExt *evt, U8 *hotline, U8 resv)
{
	/*
	if (!(IS_VER_EQUAL(maAccCb.pSwtch,verFlg)))
	{
		evt->id.pres = FALSE;
		evt->etype.elmntPres.pres = FALSE;
		RETVALUE(RFAILED);
	}
	*/
	if((cmStrlen(hotline) < 1) || (cmStrlen(hotline)>9))
	{
		printf("unavaliable value!\r\n");
		RETVALUE(RFAILED);
	}
	MA_API_CPY_TKNSTR(&evt->id, (U8 *)XWEXT_OID8, 1, 0);
	MA_API_SET_TOKEN_VALUE (&evt->etype.elmntPres, (U8)8);
	MA_API_CPY_TKNSTR(&evt->etype.u.xwrthotlinenum, hotline , cmStrlen(hotline), 0);
	RETVALUE(ROK);
}

S16 maTstSetExtSmartCall(U8 verFlg,MaXWPriExt *evt, Bool smatcal, U8 resv)
{
	/*
	if (!(IS_VER_EQUAL(maAccCb.pSwtch,verFlg)))
	{
		evt->id.pres = FALSE;
		evt->etype.elmntPres.pres = FALSE;
		RETVALUE(RFAILED);
	}
	*/
	MA_API_CPY_TKNSTR(&evt->id, (U8 *)XWEXT_OID9, 1, 0);
	MA_API_SET_TOKEN_VALUE (&evt->etype.elmntPres, (U8)9);
	MA_API_SET_TOKEN_VALUE(&evt->etype.u.xwsmartcall, smatcal);
	RETVALUE(ROK);
}

/*2 octet string*/
S16 maTstSetExtUtType(U8 verFlg,MaXWPriExt *evt, U8 *uttype, U8 resv)
{
	/*
	if (!(IS_VER_EQUAL(maAccCb.pSwtch,verFlg)))
	{
		evt->id.pres = FALSE;
		evt->etype.elmntPres.pres = FALSE;
		RETVALUE(RFAILED);
	}
	*/
	if(cmStrlen(uttype) != 2)
	{
		printf("unavaliable value!\r\n");
		RETVALUE(RFAILED);
	}
	MA_API_CPY_TKNSTR(&evt->id, (U8 *)XWEXT_OID10, 2, 0);
	MA_API_SET_TOKEN_VALUE (&evt->etype.elmntPres, (U8)10);
	MA_API_CPY_TKNSTR(&evt->etype.u.xwuttype, uttype, 2, 0);
	RETVALUE(ROK);
}

⌨️ 快捷键说明

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