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

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

?? klcinterface.c

?? 基于h323協議的軟phone
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************
*
*  Module:         KlcInterface.c
*
*  Description:    KLC Interface Routines
*
*  Author:         Craig L. Mahananey
*
*  Copyright 1999, Lucent Technologies, Inc., All rights reserved
*
*
*  Change Log:
*
*  Date        By      Description
*  ========    ===     ====================================================
*  11/11/99    CLM     Created
*  01/31/00    DSO     Added support for IP Demo Application message format.
*  11/06/2000  mwb     Added INTERFACE_TERSE for quieter operation
*
***************************************************************************/


/*
 * Application layer include files
 */
#include "SysDep.h"
#include "KlcInterface.h"
#include "klc.h"
#include "DSPInterface.h"
                
             
/*
 * Standard include files
 */

#include <stdio.h>
#include <string.h>
#include <sockLib.h>
#include <inetLib.h>
#include <strLib.h>
#include <ioLib.h>
#include <fioLib.h>
#include <taskLib.h>
#include <in.h>


#ifdef PPA 
/*------------*/
/*  DEFINES   */
/*------------*/
#define  MAX_NUM_DIGIT  12
#define  PORT_FACTOR    4
/*------------*/
/*  TYPEDEFS  */
/*------------*/
typedef unsigned char   byte;
/*---------------*/
/*  LOCAL DATA   */
/*---------------*/
MSG_Q_ID      PPAKlcInterfaceQId;                /* klc's message queue Id */

int dtmfDigitEnable = 0;
int dtmfDigitDisable = 0;

unsigned int dtmfDigitTbl[PORT_FACTOR];
unsigned int dtmfDigitCollectTbl[MAX_NUM_DIGIT*PORT_FACTOR];
unsigned short destinationDigitTbl[MAX_NUM_DIGIT*PORT_FACTOR];
char dstinationAddrTbl [PORT_FACTOR][MAX_NUM_DIGIT+1];
/*--------------*/
/*  PROTOTYPES  */
/*--------------*/
static void  PPAInterfaceInit();
static void  PPAInterfaceDaemon (void);
static void  PPAInterfacePut(char *readBuff);
static void dtmfDigitTable(void);
/*---------------*/
/*  GLOBAL DATA  */
/*---------------*/
int onHook = 0;;
int offHook = 0;
extern unsigned short  ppaChannelNum;
#endif /*#ifdef PPA */ 
/***************************************************************************
 *
 *  KeyLampMonitor( MSG_Q_ID eventQ)
 *
 *  Arguments
 *      Input: Event Q to use to send events
 *
 *  Returns:   Nothing
 *
 *  Description:
 *  1. Open key/lamp monitor device
 *  2. Wait on read and send events over eventQ
 *
 **************************************************************************/ 
/* sdg added */
extern int handset_up;
extern int on_speakerphone;
extern int tone_enabled;

/* dial-digit-tone-disconnect */
/* The tone currently being played.*/
extern tone_type tone_playing;

/* sdg end */
/*#include "h323.h"
extern int* state;
*/
void KeyLampMonitor( MSG_Q_ID eventQ )
{
	MSG_Q_ID        klcQ;
	klcKeyEnums     keypress;
	klcdatatype     klcdata;
	dtmf_tone_type  tone;
	NonWrapperMsg   *msg;
	NonWrapperMsg  temp;
	int loopCounter;

	int wait_time = -1;

	static int   keyLongPressEvent;
	static int   keyPressFlag=0;
	static char keyLongPress;
	static int keyHangUpPress = 0;

	/* dial-digit-tone-disconnect */
	/* The tone to be resumed after the DTMF digit is played.*/
	tone_type tone_tobe_resumed = null_tone;
	/*
	 * Initialize the KLC driver
	 */

	klcInit( MAXNUMPROGKEYS );

	/*
	 * Create and register a message queue with the driver
	 */

	if(( klcQ = msgQCreate( MAX_NUM_KLC_EVENTS, sizeof(klcdatatype), MSG_Q_FIFO )) == (MSG_Q_ID)ERROR )
	{
#ifndef INTERFACE_TERSE
		fprintf( stderr, "KeyLampMonitor: Failure to create message queue.\n" );
#endif /* INTERFACE_TERSE */
		return;
	}

	klcRegister( klcQ );

#ifdef PPA 
	PPAKlcInterfaceQId = klcQ; /* use for PPA Demo App */
	PPAInterfaceInit();
#endif 
	/*
	 * Get a buffer for sending data to the Application.
	 */

	if ((msg = (NonWrapperMsg *) MQBufGet()) == NULL)
	{
#ifndef INTERFACE_TERSE
		fprintf( stderr, "KeyLampMonitor: Could not get buffer.\n" );
#endif /* INTERFACE_TERSE */
		return;
	}

	/*
	 * Read forever on the queue and turn data into events
	 */

	while ( 1 )
	{
		/*
		 * Receive message from KLC driver.
		 */
		if( msgQReceive( klcQ, (char *)&klcdata, sizeof( klcdata ), wait_time ) == ERROR )
		{
			if (keyHangUpPress)
			{
				keyHangUpPress = 0;
				wait_time = -1;
				msg->event = local_on_hook_event;
			}
			else if(keyPressFlag)
			{
				/*keyPressFlag=0;*/
				tone  = null_dtmf_tone;
				msg->event = null_event;
				msg->digit = 0;
				if(keyLongPressEvent == digit_event)
				{
					keyLongPressEvent = long_digit_event;
					msg->event = long_digit_event;
					msg->digit   = keyLongPress;
				}
				else if(keyLongPressEvent == cancel_key_event)
				{
					keyLongPressEvent = long_cancel_key_event;
					msg->event = long_cancel_key_event;
				}
				else
				{
					continue;
				}
			}	

			loopCounter = 0;
			if (MQSend ((char*)msg, NO_WAIT) == -1)
			{
				while (loopCounter++ < 10)
				{
					taskDelay(10);
					if (MQSend ((char*)msg, NO_WAIT) != -1) /* resend message */
					{
						break;
					}
				}				
				if (loopCounter >= 10)
				{
					fprintf(stderr, "KeyLampMonitor: Could not get buffer after 10 tries.\n");
					MQBufFree((char*)msg);
				}
			}
			loopCounter = 0;
			while (((msg = (NonWrapperMsg *) MQBufGet()) == NULL) && loopCounter++ < 10)
			{
				taskDelay(10);
			}
#ifndef INTERFACE_TERSE	
			if (loopCounter >= 10)
				fprintf(stderr, "KeyLampMonitor: Could not get buffer after 10 tries.\n");
#endif
			continue;
			/*			
#ifndef INTERFACE_TERSE
			fprintf( stderr, "KeyLampMonitor: Failure reading from klcQ.\n" );
#endif  INTERFACE_TERSE 
			return;*/
		}

		tone  = null_dtmf_tone;
		msg->event = null_event;
		msg->digit = 0;

		/*  printf("\n klcdata.keypress is %d \n",klcdata.keypress);
		printf("\n klcdata.tag is %d \n",klcdata.tag);*/
		if(klcdata.tag)
		{

		}
		else
		{
			keyPressFlag=0;
			if (!keyHangUpPress)
				wait_time = -1;
		}
       
		keypress = (klcKeyEnums)klcdata.keypress;

		if( keypress == klcKeyHOOK_UP )
		{
			if (keyHangUpPress)
			{
				msg->event = call_transfer_key_event;
			}
			else
			{
				msg->event = local_off_hook_event;	
			}
			keyHangUpPress = 0;
			wait_time = -1;
		}
		else if( keypress == klcKeyHOOK_DOWN )
		{
			keyHangUpPress = 1;
			wait_time = 30;		
			/*msg->event = local_on_hook_event;*/
		}
		else if( klcdata.tag == KLC_PRESSED )
		{
			if (keyHangUpPress)
			{
				keyHangUpPress = 0;
				wait_time = -1;
				msg->event = local_on_hook_event;
				
				loopCounter = 0;
				if (MQSend ((char*)msg, NO_WAIT) == -1)
				{
					while (loopCounter++ < 10)
					{
						taskDelay(10);
						if (MQSend ((char*)msg, NO_WAIT) != -1) /* resend message */
						{
							break;
						}
					}				
					if (loopCounter >= 10)
					{
						fprintf(stderr, "KeyLampMonitor: Could not get buffer after 10 tries.\n");
						MQBufFree((char*)msg);
					}
				}
				loopCounter = 0;
				while (((msg = (NonWrapperMsg *) MQBufGet()) == NULL) && loopCounter++ < 10)
				{
					taskDelay(10);
				}
#ifndef INTERFACE_TERSE	
				if (loopCounter >= 10)
					fprintf(stderr, "KeyLampMonitor: Could not get buffer after 10 tries.\n");
#endif

				continue;
			}

			switch( keypress )
			{                
				case klcKey0:
					tone  = dtmf_0;
					msg->event = digit_event;
					msg->digit = 0;
					break;

				case klcKey1:
					tone  = dtmf_1;
					msg->event = digit_event;
					msg->digit = 1;
					break;

				case klcKey2:
					tone  = dtmf_2;
					msg->event = digit_event;
					msg->digit = 2;
					break;

				case klcKey3:
					tone  = dtmf_3;
					msg->event = digit_event;
					msg->digit = 3;
					break;

				case klcKey4:
					tone  = dtmf_4;
					msg->event = digit_event;
					msg->digit = 4;
					break;

				case klcKey5:
					tone  = dtmf_5;
					msg->event = digit_event;
					msg->digit = 5;
					break;

				case klcKey6:
					tone  = dtmf_6;
					msg->event = digit_event;
					msg->digit = 6;
					break;

				case klcKey7:
					tone  = dtmf_7;
					msg->event = digit_event;
					msg->digit = 7;
					break;

				case klcKey8:
					tone  = dtmf_8;
					msg->event = digit_event;
					msg->digit = 8;
					break;

				case klcKey9:
					tone  = dtmf_9;
					msg->event = digit_event;
					msg->digit = 9;
					break;

				case klcKeySTAR:
					msg->event = digit_event;
					msg->digit = 10;
					tone  = dtmf_star;
					break;

				case klcKeyHASH:
					msg->event = digit_event;
					msg->digit = 11;
					tone  = dtmf_hash;
					break;

				case klcKeySPKR:
					msg->event = speaker_event;
					break;

				case klcKeyVOLP:
					msg->event = volume_up_event;
					break;

				case klcKeyVOLM:
					msg->event = volume_down_event;
					break;

				case klcKeya:
					msg->event = call_to_key_event;
					break;	       

				case klcKeyb:
					msg->event = call_in_key_event;
					break;	       

				case klcKeyc:
					msg->event = redial_key_event;
					break;

				case klcKeyTRAN:
					msg->event = call_transfer_key_event;/*G1*/
					break;

				case klcKeyRegister:
					msg->event = query_register_number_event;
					break;
					
				case klcKeyDROP:
					msg->event = volume_mute_event;/*G4*/
					break;

				case klcKeyConfig:
					msg->event = rapid_config_event;
					break;
					
				case klcKeyFWD:
					msg->event = noanswer_key_event;/*G5*/
					break;

				case klcKeyMSG:
					msg->event = message_key_event;
					break;

				case klcKeyG2:
					msg->event = phonebook_key_event;
					break;

				case klcKeyG3:
					msg->event = callout_key_event;
					break;

				case klcKeyG6:
					msg->event = save_event;
					break;

				case klcKeyG7:
					msg->event = delete_event;
					break;

				case klcKeyMUTE:
					msg->event = volume_mute_event;
					break;	       

				case klcKeySK1:
					msg->event = cancel_key_event;
					break;

				case klcKeySK2:
					msg->event = left_key_event;
					break;

				case klcKeySK3:
					msg->event = right_key_event;
					break;

				case klcKeySK4:
					msg->event = ok_key_event;
					break;

				case klcKeySPEED1:
					msg->event = speed_dial_key_event;
					msg->digit = 1;
					break;

				case klcKeySPEED2:
					msg->event = speed_dial_key_event;
					msg->digit = 2;
					break;

				case klcKeySPEED3:
					msg->event = speed_dial_key_event;
					msg->digit = 3;
					break;

				case klcKeySPEED4:
					msg->event = speed_dial_key_event;
					msg->digit = 4;
					break;

				case klcKeySPEED5:
					msg->event = speed_dial_key_event;
					msg->digit = 5;
					break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产亚洲综合在线| 国产精品一区三区| 国产黑丝在线一区二区三区| 91丝袜国产在线播放| 欧美精品高清视频| 欧美国产精品v| 日韩国产欧美三级| 色婷婷av一区二区三区gif| 久久久精品国产免大香伊| 亚洲第一二三四区| 日本高清不卡在线观看| 国产日韩欧美在线一区| 麻豆精品视频在线| 欧美日韩大陆一区二区| 精品在线一区二区| 欧美在线一二三| 亚洲欧美综合网| 国产成人精品亚洲午夜麻豆| 日韩视频不卡中文| 石原莉奈在线亚洲三区| 在线免费观看视频一区| 亚洲欧美一区二区三区极速播放 | 亚洲欧美自拍偷拍| 成人晚上爱看视频| 国产色爱av资源综合区| 精品一区二区免费| 久久男人中文字幕资源站| 美女久久久精品| 日韩精品最新网址| 麻豆成人av在线| 欧美第一区第二区| 激情久久久久久久久久久久久久久久| 欧美美女激情18p| 青青草97国产精品免费观看无弹窗版 | 91农村精品一区二区在线| 国产精品久久久爽爽爽麻豆色哟哟| 国产精一区二区三区| 久久久99精品免费观看不卡| 高清日韩电视剧大全免费| 国产精品天美传媒| 91免费观看国产| 亚洲一区二三区| 在线成人免费观看| 蜜臀av亚洲一区中文字幕| 日韩精品一区二区三区在线观看| 麻豆精品新av中文字幕| 久久久.com| www.66久久| 欧美日韩在线三区| 青青草97国产精品免费观看无弹窗版| 欧美一区二区三区在线| 日本成人在线视频网站| 欧美成人一区二区三区片免费 | 欧美精品自拍偷拍| 久久99精品国产91久久来源| 久久久久久久久久看片| 99综合影院在线| 五月婷婷欧美视频| 精品国产凹凸成av人网站| gogogo免费视频观看亚洲一| 亚洲国产日产av| 久久久五月婷婷| 91福利社在线观看| 久久精品国产亚洲一区二区三区| 国产日韩av一区| 欧美亚洲愉拍一区二区| 另类小说一区二区三区| 国产精品国产馆在线真实露脸| 欧美影院精品一区| 国产激情精品久久久第一区二区| 亚洲激情在线播放| 亚洲精品一区二区精华| 一本久久精品一区二区| 九九**精品视频免费播放| 国产精品久久久久aaaa| 91精品蜜臀在线一区尤物| 成人高清在线视频| 日本中文字幕一区二区有限公司| 中文字幕av资源一区| 欧美日韩国产另类不卡| 成人激情动漫在线观看| 美女mm1313爽爽久久久蜜臀| 国产精品欧美综合在线| 精品日韩在线观看| 欧美久久久久免费| 99精品桃花视频在线观看| 另类小说欧美激情| 亚洲成人免费视| 最新国产の精品合集bt伙计| 精品福利二区三区| 欧美精品乱人伦久久久久久| 91丨porny丨国产| 高清在线不卡av| 国产在线视频一区二区| 日韩av一二三| 亚洲图片欧美一区| 亚洲激情网站免费观看| 亚洲色欲色欲www| 国产精品三级电影| 中文字幕第一区综合| 国产视频一区在线观看| 欧美成人一区二区三区在线观看| 欧美另类久久久品| 欧美色精品在线视频| 欧美色图在线观看| 欧美色视频在线| 欧美日韩激情一区二区三区| 色猫猫国产区一区二在线视频| 国产91露脸合集magnet| 国产精品资源站在线| 国产一区二区久久| 国产精品一级片在线观看| 国产在线一区观看| 国产大陆a不卡| 成人午夜av在线| 99久久免费视频.com| 99精品视频一区二区| 91在线porny国产在线看| 91麻豆高清视频| 欧美在线观看视频一区二区 | 成人激情av网| www.色精品| 在线观看av一区二区| 欧美日韩国产色站一区二区三区| 欧美日韩成人一区二区| 欧美一区二区视频在线观看2022| 日韩一区二区三区在线观看| 精品少妇一区二区三区在线播放 | 精品国产免费人成在线观看| 久久亚洲二区三区| 国产精品色在线观看| 一区二区三区四区蜜桃| 午夜精品免费在线| 国产一区二区三区高清播放| caoporn国产精品| 欧美性猛交xxxxxx富婆| 91精品国产综合久久久久久漫画| 久久亚洲私人国产精品va媚药| 中文字幕一区三区| 亚欧色一区w666天堂| 精品一区二区精品| 99精品久久久久久| 3d动漫精品啪啪1区2区免费 | 欧美sm美女调教| 中文字幕在线播放不卡一区| 亚洲成人av在线电影| 国产在线视频一区二区| 91福利在线看| 久久久久久久久久久久电影| 成人免费在线播放视频| 美国毛片一区二区| 色综合一区二区| 亚洲精品在线观| 一区二区三区在线视频观看58| 免费一级片91| 91福利社在线观看| 久久久久久麻豆| 亚洲va中文字幕| 99国产欧美另类久久久精品| 91精品婷婷国产综合久久竹菊| 国产欧美日韩精品一区| 爽爽淫人综合网网站| 成人网男人的天堂| 日韩三级精品电影久久久| 亚洲欧美自拍偷拍| 国产黄人亚洲片| 日韩欧美一区中文| 亚洲精品国产a久久久久久 | 久久99精品国产.久久久久久| 91丨九色porny丨蝌蚪| 国产视频一区二区三区在线观看| 亚洲成人免费观看| 色吊一区二区三区| 中文成人av在线| 国产精品77777| 日韩精品在线一区| 婷婷六月综合网| 欧美伊人久久久久久久久影院| 国产欧美日韩综合精品一区二区| 日韩电影免费一区| 欧美人伦禁忌dvd放荡欲情| 亚洲天堂免费在线观看视频| 国产福利精品导航| 精品国产sm最大网站免费看| 日韩精品一卡二卡三卡四卡无卡| 在线亚洲人成电影网站色www| 国产精品久久久久影视| 国产成人午夜视频| 久久久99精品久久| 国产成人亚洲综合a∨猫咪| 337p日本欧洲亚洲大胆精品| 男男视频亚洲欧美| 日韩欧美亚洲另类制服综合在线 | 亚洲精品在线观看视频| 麻豆成人免费电影| 精品精品国产高清a毛片牛牛| 捆绑紧缚一区二区三区视频| 日韩免费一区二区三区在线播放| 奇米影视在线99精品| 日韩欧美国产一区二区在线播放|