亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gatemain.c

?? dialogic voip 測試代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/**********************************************************************************************
* 
* $ProjectName: X:/SIPROJ/VOIP/HOST/WIN_NT/DEMOS/Samples.rel5/Dm3/Iplink/project.pj $
* $ProjectRevision: 1.5 $
* $Label$
* $Revision: 1.7 $ - $Date: 2001/10/21 13:21:20 $
* 
**********************************************************************************************/


#define  _GATEMAIN_C           
       
#include "main.h"
#include <pdl.h>
#include "gatestrc.h"             
#include "gatedefs.h"		
#include "gatevars.h"
#include <libdbg.h>
#include "gatepstn.h" 
#include "gateip.h"
#include "gatepars.h"
#include "gatestate.h"
#include "time.h"
#include "incfile.h"

#include "gateway_r4.ver"
#include "util.ver"
#include "pdl.ver"

char     cfgFile[80];      /* file name for configuration file */
FILE    *ChanInfoFile;     /* file for printing all channels information */


/*****FUNCTION***************************************************
*        NAME : getChannel
* DESCRIPTION : Gets the active channel to send message to
*       INPUT : None  
*      OUTPUT : None
*     RETURNS : int - Channel number
*    CAUTIONS : None
****************************************************************/
int getChannel()
{
   char  chan[10];

   char  ch;
   char  channel[80];
   int   count = 0;
   int   bCorrectInput = 1;
   char  temp[80];

   printf("activeChannel = %d.\n",activeChannel);
   printf("%s","Would you like to change the active channel?(y-YES,n-NO)\n");
   scanf("%s",chan);

   ch = chan[0];
   

    switch(ch) {
      
      /* The user would like to change the active channel */
		case 'y':         
		case 'Y':
			printf("%s","Enter the active channel you want.\n");
			scanf("%s",channel);
			while(bCorrectInput) {
				if( (channel[count] < '0') || (channel[count] > '9') ) {	
				   bCorrectInput = 0;
				}
				else {
				   count++;
				}
			}

			if(count > 0) {
				strncpy(temp,channel, count);
				return(atoi(temp));
			}
			break;
		
      /* The user wouldn't like to change the active channel, 
         default is activeChannel = the last channel which entered connected state  */
        case'n':
	    case'N':
	   
		default:
			break;
	}

	return(activeChannel);

} /* Function getChannel */



/*****FUNCTION***************************************************

*        NAME : SendUIIMsg

* DESCRIPTION : A convenient function to send UII Message (H.245).

*       INPUT : channel 

*      OUTPUT : None

*     RETURNS : 0 - success, 1 - fail

*    CAUTIONS : Only works if PrmDtmfXferMode set to 1 in fcd file.

****************************************************************/

int SendUIIMsg(unsigned int channel)		

{                 


	GC_PARM_BLKP    gcParmBlk = NULL;



    

	if (gc_util_insert_parm_val(&gcParmBlk, IPSET_MSG_H245, IPPARM_MSGTYPE,

								 sizeof(int), IP_MSGTYPE_H245_INDICATION) <0 ){

		printGCError("gc_util_insert_parm_val",channel,Session[channel].LogFile,_logLevel); 

	    return (FUNCFAIL); 

	}



	if (gc_util_insert_parm_ref(&gcParmBlk, IPSET_USERINPUTINDICATION,

								 IPPARM_UII_ALPHANUMERIC,

								 (unsigned char)(strlen(Session[channel].ConfigFileParm.UII.Val)+1),

								 (void*)(Session[channel].ConfigFileParm.UII.Val))<0 ){

		printGCError("gc_util_insert_parm_ref",channel,Session[channel].LogFile,_logLevel); 

	    return (FUNCFAIL); 

	}



		

	if (gc_Extension(GCTGT_GCLIB_CRN,

			         Session[channel].ipParams.currentCRN,

					 IPEXTID_SENDMSG,

				     gcParmBlk,NULL,EV_ASYNC)<0){

		printGCError("gc_Extention",channel,Session[channel].LogFile,_logLevel); 

	    return (FUNCFAIL);  

	}else{

		gateTRACE(channel,_logLevel,Session[channel].LogFile, (Session[channel].LogFile,"\tUII message(H.245) was sent on channel %d \n",channel));

	}



	gc_util_delete_parm_blk(gcParmBlk);

	

	return FUNCSUCCESS;



} /* End of SendUIIMsg function */







/*****FUNCTION***************************************************

*        NAME : SendNonStdCmdMsg

* DESCRIPTION : A convenient function to send Nonstandard Command

*				Message (H.245).

*       INPUT : channel 

*      OUTPUT : None

*     RETURNS : 0 - success, 1 - fail

*    CAUTIONS : 

****************************************************************/

int SendNonStdCmdMsg(unsigned int channel)		

{                 



	GC_PARM_BLKP    gcParmBlk = NULL;





 	if (gc_util_insert_parm_val(&gcParmBlk, IPSET_MSG_H245, IPPARM_MSGTYPE,

								 sizeof(int), IP_MSGTYPE_H245_COMMAND) <0 ){

		printGCError("gc_util_insert_parm_val",channel,Session[channel].LogFile,_logLevel); 

	    return (FUNCFAIL); 

	}

	

	if (gc_util_insert_parm_ref(&gcParmBlk, IPSET_NONSTANDARDDATA,

								 IPPARM_NONSTANDARDDATA_OBJID,

								 (unsigned char)(strlen(Session[channel].ConfigFileParm.NonStdCmd.ObjId) +1),

								 (void*)Session[channel].ConfigFileParm.NonStdCmd.ObjId) <0 ){

		printGCError("gc_util_insert_parm_ref",channel,Session[channel].LogFile,_logLevel); 

	    return (FUNCFAIL); 

	}

								 

	if (gc_util_insert_parm_ref(&gcParmBlk, IPSET_NONSTANDARDDATA,

								 IPPARM_NONSTANDARDDATA_DATA,

								 (unsigned char)(strlen(Session[channel].ConfigFileParm.NonStdCmd.Val)+1),

								 (void*)(Session[channel].ConfigFileParm.NonStdCmd.Val)) <0 ){

		printGCError("gc_util_insert_parm_ref",channel,Session[channel].LogFile,_logLevel); 

	    return (FUNCFAIL); 

	}

		



	if (gc_Extension(GCTGT_GCLIB_CRN,

			         Session[channel].ipParams.currentCRN,

					 IPEXTID_SENDMSG,

				     gcParmBlk,NULL,EV_ASYNC)<0){

		printGCError("gc_Extention",channel,Session[channel].LogFile,_logLevel); 

	    return (FUNCFAIL);  

	}else{

		gateTRACE(channel,_logLevel,Session[channel].LogFile, (Session[channel].LogFile,"\tNonstandard Command message(H.245) was sent on channel %d \n",channel));

	}



	gc_util_delete_parm_blk(gcParmBlk);



	return FUNCSUCCESS;



} /* End of SendNonStdCmdMsg function */




/*****FUNCTION***************************************************

*        NAME : SendFacilityMsg

* DESCRIPTION : A convenient function to send Q931 Facility message.

*       INPUT : channel 

*      OUTPUT : None

*     RETURNS : 0 - success, 1 - fail

*    CAUTIONS : 

****************************************************************/

int SendFacilityMsg(unsigned int channel)		

{                 



	GC_PARM_BLKP    gcParmBlk = NULL;





 	if (gc_util_insert_parm_val(&gcParmBlk, IPSET_MSG_Q931, IPPARM_MSGTYPE,

								sizeof(int), IP_MSGTYPE_Q931_FACILITY) <0 ){

		printGCError("gc_util_insert_parm_val",channel,Session[channel].LogFile,_logLevel); 

	    return (FUNCFAIL); 

	}



	

	if (gc_util_insert_parm_ref(&gcParmBlk, IPSET_NONSTANDARDDATA,

								 IPPARM_NONSTANDARDDATA_OBJID,

								 (unsigned char)(strlen(Session[channel].ConfigFileParm.Q931Facility.ObjId) +1),

								 (void*)Session[channel].ConfigFileParm.Q931Facility.ObjId) <0 ){

		printGCError("gc_util_insert_parm_ref",channel,Session[channel].LogFile,_logLevel); 

	    return (FUNCFAIL); 

	}

								 

	if (gc_util_insert_parm_ref(&gcParmBlk, IPSET_NONSTANDARDDATA,

								 IPPARM_NONSTANDARDDATA_DATA,

								 (unsigned char)(strlen(Session[channel].ConfigFileParm.Q931Facility.Data)+1),

								 (void*)(Session[channel].ConfigFileParm.Q931Facility.Data)) <0 ){

		printGCError("gc_util_insert_parm_ref",channel,Session[channel].LogFile,_logLevel); 

	    return (FUNCFAIL); 

	}

								 

   		



	if (gc_Extension(GCTGT_GCLIB_CRN,

			         Session[channel].ipParams.currentCRN,

					 IPEXTID_SENDMSG,

				     gcParmBlk,NULL,EV_ASYNC)<0){

		printGCError("gc_Extention",channel,Session[channel].LogFile,_logLevel); 

	    return (FUNCFAIL);  

	}else{

		gateTRACE(channel,_logLevel,Session[channel].LogFile, (Session[channel].LogFile,"\tFacility message(Q931) was sent on channel %d \n",channel));

	}



	gc_util_delete_parm_blk(gcParmBlk);





	return FUNCSUCCESS;



} /* End of SendFacilityMsg function */





  

/*****FUNCTION***************************************************
*        NAME : waitForKey
* DESCRIPTION : Thread waiting for key: q , ctrl+c to end application
*                                       u - to send user input indication
*                                       n - to send non standard command
*                                       c - get channel information
*                                       f - send Q931 Facility information
*                                       d - change debug level on runtime
*       INPUT : None
*      OUTPUT : None
*     RETURNS : unsigned long  '0' - success
*    CAUTIONS : getch() func disable detection of 
*               interrupts from the keyboard
****************************************************************/
unsigned long  waitForKey()		
{                 
   char				chan[10];

   char             ch;  

   unsigned short	channel = 0;
  
   while(!quitFlag) {	 /* quitFlag is a global variable which indicates that 
                            the user wants to end the application */
      scanf("%s",chan);

	  ch = chan[0];
      
      switch(ch) {
        
         case 'c':
         case 'C':
			printChanInfo("ChInIP.txt",chanInfoIP);
			printChanInfo("ChInPSTN.txt",chanInfoPSTN);
			break;


	     case 'd':
         case 'D':
         /* change debug level on runtime */
			 ChangeDebugLevel(&_logLevel);
			 
		     break;

         			
		 case 3:                /* The ascii code of Ctrl+c */
	     case 'q':
         case 'Q':



			 PDLsr_putevt(Session[1].ipParams.linedev);
			 break;



	     case 'u':

         case 'U':



			 channel = getChannel();

            /* Check if valid channel value */ 

   			if( (channel <= 0)  || (channel > gateChannels) ) {

   				break;

			}



            /* Sends UII only in IP_CONNECTED or GATE_CONNECTED state */

            if((Session[channel].sessionState == IP_CONNECTED) 

			     || (Session[channel].sessionState == GATE_CONNECTED)){

				

				activeChannel = channel;

                

				if (SendUIIMsg(channel) != 0){

					if (_logLevel !=0){

						printf("\nERROR: Unable to send User Input Indication on channel %d \n\tReason: Function failed\n",channel);

					}

					gateERROR(channel,_logLevel,Session[channel].LogFile,(Session[channel].LogFile,"\tUnable to send User Input Indication on channel %d \n\tReason: Function failed.\n",channel));

				}else{

					chanInfoIP[channel].UII_Msg++;

				}

			}else{

				if (_logLevel !=0){

					printf("\nERROR: Unable to send user input indication on channel %d \n\tReason: is not in connected state\n",channel);

				}

				gateERROR(channel,_logLevel,Session[channel].LogFile,(Session[channel].LogFile,"\tUnable to send user input indication on channel %d \n\tReason: is not in connected state.\n",channel));

			}



			break;





	     case 'n':

         case 'N':



			 channel = getChannel();

            /* Check if valid channel value */ 

   			if( (channel <= 0)  || (channel > gateChannels) ) {

   				break;

			}



            /* Sends Non Standard Command, only in IP_CONNECTED or GATE_CONNECTED state */

            if((Session[channel].sessionState == IP_CONNECTED) 

			     || (Session[channel].sessionState == GATE_CONNECTED)){

				

				activeChannel = channel;

                

				if (SendNonStdCmdMsg(channel) != 0){

					if (_logLevel !=0){

						printf("\nERROR: Unable to send Nonstandard Command on channel %d \n\tReason: Function failed\n",channel);

					}

					gateERROR(channel,_logLevel,Session[channel].LogFile,(Session[channel].LogFile,"\tUnable to send Nonstandard Command on channel %d \n\tReason: Function failed.\n",channel));

				}else{

					chanInfoIP[channel].NonStdCmd_Msg++;

				}

			}else{

				if (_logLevel !=0){

					printf("\nERROR: Unable to send Nonstandard Command on channel %d \n\tReason: is not in connected state\n",channel);

				}

				gateERROR(channel,_logLevel,Session[channel].LogFile,(Session[channel].LogFile,"\tUnable to send Nonstandard Command on  channel %d \n\tReason: is not in connected state.\n",channel));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人在线直播| 蜜臀av性久久久久av蜜臀妖精| 亚洲国产毛片aaaaa无费看| 青青草国产成人av片免费| 岛国精品在线观看| 欧美人动与zoxxxx乱| 国产精品理论片在线观看| 美女诱惑一区二区| 欧美日韩国产色站一区二区三区| 日本一区二区三区在线不卡| 日韩综合在线视频| 欧美色手机在线观看| 国产嫩草影院久久久久| 久久99国产精品免费| 宅男在线国产精品| 亚洲乱码国产乱码精品精的特点| 精品中文字幕一区二区小辣椒 | 亚洲精品五月天| 国产一区二区91| 日韩欧美不卡在线观看视频| 亚洲高清在线精品| 欧美色图天堂网| 亚洲欧美韩国综合色| www.亚洲色图.com| 中文字幕免费观看一区| 国产一区二区三区最好精华液| 91精品国产欧美一区二区| 五月天激情小说综合| 色哟哟精品一区| 亚洲免费在线视频一区 二区| 99re成人精品视频| 亚洲视频资源在线| 色综合久久九月婷婷色综合| 亚洲欧美一区二区三区久本道91| 国产不卡视频一区二区三区| 国产欧美日韩不卡| 成人av综合在线| 自拍偷拍国产精品| 在线免费观看日本一区| 依依成人精品视频| 欧美三级中文字| 免播放器亚洲一区| 久久夜色精品国产噜噜av| 国产suv精品一区二区三区| 中文字幕不卡在线观看| av日韩在线网站| 亚洲综合成人在线| 日韩一区二区在线看片| 国产麻豆成人传媒免费观看| 综合av第一页| 欧美剧在线免费观看网站| 精品一区二区三区香蕉蜜桃| 日本一区二区三区四区| 91黄色激情网站| 蜜桃久久久久久| 中文av字幕一区| 欧美日韩亚州综合| 国产精品一区二区在线观看网站 | 成人一级视频在线观看| 成人欧美一区二区三区在线播放| 色综合天天综合网天天看片| 丝袜亚洲另类欧美| 久久久久9999亚洲精品| 91福利视频久久久久| 免费在线观看一区二区三区| 欧美国产精品中文字幕| 欧美三级日韩在线| 国产一区二区三区四区在线观看| 亚洲激情欧美激情| 精品久久人人做人人爱| 91国产免费看| 国产在线精品一区在线观看麻豆| 亚洲免费观看高清| 日韩免费成人网| 91极品视觉盛宴| 国产精品一级黄| 日韩激情中文字幕| 亚洲日韩欧美一区二区在线| 亚洲精品一区二区三区在线观看 | 欧美一卡2卡3卡4卡| 成人午夜av电影| 日本一不卡视频| 亚洲麻豆国产自偷在线| 2021中文字幕一区亚洲| 欧美日韩国产一级片| 成人精品国产一区二区4080| 久久超碰97中文字幕| 亚洲午夜电影在线观看| 国产精品国产三级国产三级人妇| 欧美www视频| 欧美日韩三级视频| 91在线无精精品入口| 国产高清成人在线| 极品美女销魂一区二区三区免费| 亚洲一区二三区| 亚洲另类春色国产| 国产精品黄色在线观看| 欧美国产丝袜视频| 久久人人超碰精品| 精品日韩一区二区三区| 69av一区二区三区| 欧美另类videos死尸| 91久久线看在观草草青青| av在线这里只有精品| 成人永久aaa| 国产成人8x视频一区二区 | 亚洲国产成人91porn| 亚洲视频免费在线| 亚洲国产精品黑人久久久| 亚洲精品一区二区三区福利| 欧美一级欧美三级| 日韩欧美国产一二三区| 日韩午夜激情视频| 日韩欧美久久一区| 久久久三级国产网站| 国产视频一区在线播放| 久久精品欧美一区二区三区麻豆| 久久午夜国产精品| 国产精品色婷婷久久58| 亚洲欧洲日韩av| 一区二区日韩电影| 亚洲第一福利视频在线| 天堂va蜜桃一区二区三区| 日本欧美在线看| 久久99热国产| 成人av电影免费观看| 色久综合一二码| 欧美日韩dvd在线观看| 91精品国产综合久久婷婷香蕉| 日韩亚洲欧美成人一区| 久久久久国产精品厨房| 国产精品国产三级国产普通话99| |精品福利一区二区三区| 一区二区三区在线视频观看58| 五月婷婷久久丁香| 美女高潮久久久| 成人蜜臀av电影| 欧美视频一区二区在线观看| 欧美一区二区三区视频在线| 久久免费美女视频| 亚洲精品国产视频| 蜜臀久久99精品久久久久宅男| 国产老妇另类xxxxx| 94-欧美-setu| 91精品国产综合久久婷婷香蕉| 久久久99精品免费观看| 亚洲精品免费在线观看| 日本vs亚洲vs韩国一区三区| 国产成人精品综合在线观看 | 亚洲精品菠萝久久久久久久| 日韩影院在线观看| 成人性视频网站| 欧美一区二区三区男人的天堂| 亚洲国产精品精华液ab| 三级亚洲高清视频| 成人免费视频视频| 91精品国模一区二区三区| 国产精品久久久久久户外露出 | 国产精品 欧美精品| 在线欧美日韩国产| 久久久精品蜜桃| 图片区小说区区亚洲影院| www.性欧美| 2023国产精品视频| 日韩中文字幕av电影| 99视频精品全部免费在线| 日韩女优毛片在线| 一区二区在线免费观看| 国产精品一区久久久久| 欧美一区二区美女| 亚洲综合丁香婷婷六月香| 成人av手机在线观看| 久久综合狠狠综合| 日韩福利电影在线观看| 色先锋久久av资源部| 欧美激情中文不卡| 精一区二区三区| 日韩一区二区三区在线视频| 亚洲成人资源在线| 91国产丝袜在线播放| 亚洲特级片在线| eeuss国产一区二区三区| 国产欧美日韩在线看| 经典三级在线一区| 欧美tk丨vk视频| 蜜臀久久久久久久| 欧美一二三区在线| 理论电影国产精品| 在线不卡a资源高清| 亚洲国产aⅴ天堂久久| 在线精品亚洲一区二区不卡| 亚洲免费视频中文字幕| 色婷婷国产精品久久包臀| 国产精品丝袜黑色高跟| 成人免费观看av| 欧美激情中文不卡| 99久久国产综合色|国产精品| 日本一区二区动态图| 成人av在线观| 椎名由奈av一区二区三区|