亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲猫色日本管| 91久久精品一区二区二区| 欧美日韩色一区| 伊人开心综合网| 欧洲精品一区二区| 亚洲成人www| 日韩欧美国产综合在线一区二区三区 | 色噜噜狠狠成人中文综合| 一区二区三区资源| 欧美区在线观看| 免费在线观看一区二区三区| 欧美成人官网二区| 国产传媒久久文化传媒| 一区二区三区毛片| 91精品国产免费| 色爱区综合激月婷婷| 一级女性全黄久久生活片免费| 欧美日韩国产成人在线91| 美国毛片一区二区三区| 中国av一区二区三区| 色呦呦国产精品| 日韩影院免费视频| 欧美激情一区二区| 欧美亚一区二区| 老司机免费视频一区二区三区| 国产日产欧美一区| 欧美制服丝袜第一页| 麻豆91在线观看| 亚洲人xxxx| 日韩欧美一级片| 99re66热这里只有精品3直播| 亚洲国产精品视频| 国产日韩欧美一区二区三区综合 | 91一区一区三区| 日韩成人伦理电影在线观看| 日本一区二区视频在线观看| 日本久久电影网| 国产精品综合网| 午夜免费欧美电影| 国产精品女同一区二区三区| 4438x亚洲最大成人网| 波多野结衣中文一区| 日韩黄色在线观看| 亚洲三级小视频| 久久久无码精品亚洲日韩按摩| 欧美三级韩国三级日本三斤| 岛国一区二区在线观看| 秋霞av亚洲一区二区三| 亚洲欧美精品午睡沙发| 国产亚洲一区二区在线观看| 69堂精品视频| 在线观看日韩精品| jlzzjlzz欧美大全| 国产精品亚洲一区二区三区妖精| 亚洲伊人色欲综合网| 国产精品乱码一区二区三区软件| 精品日韩成人av| 欧美一级专区免费大片| 在线视频中文字幕一区二区| 成人av在线资源| 国产成人av资源| 免费高清不卡av| 日韩影视精彩在线| 日韩中文字幕不卡| 亚洲成av人片一区二区梦乃| 亚洲精品大片www| 麻豆国产精品一区二区三区| 亚洲综合另类小说| 依依成人精品视频| 亚洲激情一二三区| 亚洲最新视频在线播放| 亚洲欧美色一区| 国产精品久久久久9999吃药| 国产精品午夜在线| 国产精品卡一卡二卡三| 国产精品久久久久一区| 国产精品美女久久久久久久网站| 欧美国产欧美综合| 中文字幕在线免费不卡| 久久久www成人免费毛片麻豆| 精品99999| 精品福利一二区| 久久人人爽爽爽人久久久| 久久一区二区视频| 欧美激情综合网| 国产精品九色蝌蚪自拍| 最新中文字幕一区二区三区| 亚洲精选在线视频| 亚洲国产精品视频| 蜜臀av一区二区在线免费观看| 免费精品99久久国产综合精品| 看片网站欧美日韩| 国产麻豆一精品一av一免费 | 亚洲免费在线电影| 午夜不卡av免费| 麻豆一区二区三区| 国产成人精品亚洲777人妖| 国产成人夜色高潮福利影视| 99热国产精品| 欧美色倩网站大全免费| 欧美电影精品一区二区| 国产精品天天看| 亚洲一卡二卡三卡四卡| 日韩二区在线观看| 成熟亚洲日本毛茸茸凸凹| 91亚洲精品久久久蜜桃| 欧美日韩中文字幕一区| 日韩一区二区中文字幕| 日本一区二区高清| 亚洲国产综合色| 国产资源精品在线观看| 色综合一区二区| 狠狠色狠狠色综合系列| 不卡的av电影在线观看| 欧美视频第二页| 久久久蜜桃精品| 亚洲国产日韩综合久久精品| 久久99久久99小草精品免视看| 波多野结衣中文一区| 制服丝袜亚洲色图| 中文字幕电影一区| 日韩精品一区第一页| 国产福利精品导航| 欧美日本一区二区在线观看| 久久久久久99精品| 亚洲国产成人精品视频| 国产一区二区三区蝌蚪| 欧美日韩成人综合| 国产精品久久久一本精品| 丝袜美腿亚洲一区二区图片| eeuss鲁片一区二区三区在线观看| 欧美日韩国产精品自在自线| 中文字幕在线一区免费| 久久精品国产精品亚洲精品| 日本伦理一区二区| 国产精品第四页| 国产一区二区三区在线观看免费视频 | 最新国产精品久久精品| 韩国视频一区二区| 欧美视频一区在线| 国产精品不卡视频| 经典三级一区二区| 在线不卡欧美精品一区二区三区| 国产精品久久99| 国产高清精品网站| 日韩免费成人网| 图片区小说区区亚洲影院| 9l国产精品久久久久麻豆| 2020国产成人综合网| 日本欧美一区二区| 欧美日韩国产123区| 亚洲精品videosex极品| 97久久超碰精品国产| 中文字幕第一区二区| 国产一区二区在线视频| 91精品国产综合久久精品图片| 亚洲综合在线电影| 一本色道a无线码一区v| 国产精品国产精品国产专区不片| 国产伦精品一区二区三区免费迷| 日韩精品资源二区在线| 五月天丁香久久| 9191久久久久久久久久久| 亚洲v中文字幕| 欧美日韩一区视频| 午夜激情一区二区三区| 欧美顶级少妇做爰| 日韩国产成人精品| 欧美一级午夜免费电影| 日韩电影在线免费看| 欧美大片一区二区三区| 久久国产综合精品| 国产肉丝袜一区二区| 国产69精品久久777的优势| 国产亚洲1区2区3区| 国产成人av网站| 中文字幕中文乱码欧美一区二区| 99久久婷婷国产综合精品电影| 中文字幕一区二区三区在线播放 | 欧美二区三区的天堂| 蜜臀av性久久久久蜜臀aⅴ| 精品国产乱码久久久久久夜甘婷婷| 久久精品国产第一区二区三区| 精品国产乱码久久久久久浪潮| 另类调教123区 | 日本韩国欧美在线| 亚洲国产一区在线观看| 在线综合亚洲欧美在线视频| 麻豆一区二区三| 国产精品美女久久久久久久| 日本精品一区二区三区四区的功能| 亚洲第一福利一区| 欧美成人国产一区二区| 国产91在线看| 亚洲精品综合在线| 欧美精选在线播放| 亚洲电影欧美电影有声小说| 久久午夜色播影院免费高清| 一本到三区不卡视频| 一区二区三区在线观看动漫|