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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? xms_confdemo_event.cpp

?? 基于東進(jìn)Keygoe交換機(jī)的會(huì)議應(yīng)用演示程序
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):

#include "stdafx.h"
#include "XMS_ConfDemo.h"
#include "XMS_ConfDemoDlg.h"


#include "DJAcsDataDef.h"
#include "DJAcsAPIDef.h"

#include "XMS_ConfDemo_Sub.H"
#include "XMS_ConfDemo_Event.H"
#include "XMS_ConfDemo_String.H"

extern int				cfg_iPartWork;
extern int				cfg_iPartWorkModuleID;

// ----------------------------------------------------------------------------------------------------
TYPE_XMS_DSP_DEVICE_RES_CONFDEMO	AllDeviceRes[MAX_DSP_MODULE_NUMBER_OF_XMS];

int						g_iTotalModule = 0;
DJ_S8					MapTable_Module[MAX_DSP_MODULE_NUMBER_OF_XMS];

int						g_iTotalPcm = 0;
int						g_iTotalPcmOpened = 0;
TYPE_CHANNEL_MAP_TABLE	MapTable_Pcm[MAX_PCM_NUM_IN_THIS_DEMO];

int						g_iTotalTrunk = 0;
int						g_iTotalTrunkOpened = 0;
TYPE_CHANNEL_MAP_TABLE	MapTable_Trunk[MAX_TRUNK_NUM_IN_THIS_DEMO];

int						g_iTotalVoice = 0;
int						g_iTotalVoiceOpened = 0;
int						g_iTotalVoiceFree = 0;
TYPE_CHANNEL_MAP_TABLE	MapTable_Voice[MAX_TRUNK_NUM_IN_THIS_DEMO];

int						g_iTotalConf = 0;
int						g_iTotalConfOpened = 0;
int						g_iTotalConfFree = 0;
TYPE_CHANNEL_MAP_TABLE	MapTable_Conf[MAX_TRUNK_NUM_IN_THIS_DEMO];

// ----------------------------------------------------------------------------------------------------
void	DispEventInfo ( Acs_Evt_t *pAcsEvt )
{
	char	TmpStr[256];
	char	TmpS[128];
	Acs_Dev_List_Head_t * pAcsDevList = NULL;
	Acs_UniFailure_Data * pAcsUniFailure = NULL;

	sprintf ( TmpStr, "EVT(%4d) : ", pAcsEvt->m_s32EvtSize );
	strcat ( TmpStr, GetString_EventType ( pAcsEvt->m_s32EventType ) );

	switch ( pAcsEvt->m_s32EventType )
	{
	case XMS_EVT_OPEN_STREAM:
		break;

	case XMS_EVT_QUERY_DEVICE:
		pAcsDevList = (Acs_Dev_List_Head_t *) FetchEventData(pAcsEvt);
		sprintf ( TmpS, " (%s,%2d,%3d)", 
			GetString_DeviceMain(pAcsDevList->m_s32DeviceMain),
			pAcsDevList->m_s32ModuleID,
			pAcsDevList->m_s32DeviceNum );
		strcat ( TmpStr, TmpS );

		break;

	case XMS_EVT_OPEN_DEVICE:
		break;

	case XMS_EVT_UNIFAILURE:
		pAcsUniFailure = (Acs_UniFailure_Data *) FetchEventData(pAcsEvt);

		sprintf ( TmpS, ": %s(0x%X) dev=(%s, %d, %d),  %d ?=? %d+%d", 
			GetString_ErrorCode(pAcsUniFailure->m_s32AcsEvtErrCode), pAcsUniFailure->m_s32AcsEvtErrCode,
			GetString_DeviceMain(pAcsEvt->m_DeviceID.m_s16DeviceMain),  pAcsEvt->m_DeviceID.m_s8ModuleID, pAcsEvt->m_DeviceID.m_s16ChannelID,
			pAcsEvt->m_s32EvtSize, sizeof(Acs_Evt_t), sizeof(Acs_UniFailure_Data) 
			);
		strcat ( TmpStr, TmpS );
		break;

	default:
		break;

	}

	AddMsg ( TmpStr );
}

// --------------------------------------------------------------------------
void	InitAllDeviceRes (void)
{
	// 將AllDeviceRes所有清為0,包括:lFlag, 各個(gè)數(shù)量,以及各個(gè)指針清為NULL
	memset ( AllDeviceRes, 0, sizeof(AllDeviceRes) );

	g_iTotalModule = 0;

	g_iTotalPcm = 0;
	g_iTotalPcmOpened = 0;

	g_iTotalTrunk = 0;
	g_iTotalTrunkOpened = 0;

	g_iTotalVoice = 0;
	g_iTotalVoiceOpened = 0;
	g_iTotalVoiceFree = 0;

	g_iTotalConf = 0;
	g_iTotalConfOpened = 0;
	g_iTotalConfFree = 0;
}

void	FreeOneDeviceRes ( int ID )
{
	if ( AllDeviceRes[ID].pVoice != NULL )
		delete [] AllDeviceRes[ID].pVoice;

	if ( AllDeviceRes[ID].pPcm != NULL )
		delete [] AllDeviceRes[ID].pPcm;

	if ( AllDeviceRes[ID].pTrunk != NULL )
		delete [] AllDeviceRes[ID].pTrunk;

	if ( AllDeviceRes[ID].pConf != NULL )
		delete [] AllDeviceRes[ID].pConf;

	memset ( &AllDeviceRes[ID], 0, sizeof (TYPE_XMS_DSP_DEVICE_RES_CONFDEMO) );
}

void	FreeAllDeviceRes (void)
{
	int		i;

	for ( i = 0; i < MAX_DSP_MODULE_NUMBER_OF_XMS; i ++ )
	{
		FreeOneDeviceRes ( i );
	}

	InitAllDeviceRes ();
}

// --------------------------------------------------------------------------
void	RefreshMapTable ( void )
{
	int		i, j;
	int		TrkCount, VocCount, PcmCount, ModuleCount, ConfCount;
	int		iModSeqID;

	// 將AllDeviceRes中的每個(gè)接口通道、語(yǔ)音通道、PCM通道、Conf通道所對(duì)應(yīng)的(順序號(hào))記錄下來(lái)
	ModuleCount = TrkCount = VocCount = PcmCount = ConfCount = 0;
	for ( i = 0; i < MAX_DSP_MODULE_NUMBER_OF_XMS; i ++ )
	{
		 if ( AllDeviceRes[i].lFlag == 1 )
		 {
			// DSP 模塊
			AllDeviceRes[i].iSeqID = ModuleCount;
			MapTable_Module[ModuleCount] = i;
			ModuleCount ++;

			 // 語(yǔ)音通道
			 for ( j = 0; j < AllDeviceRes[i].lVocNum; j ++ )
			 {
				AllDeviceRes[i].pVoice[j].iSeqID = VocCount;
				MapTable_Voice[VocCount].m_s8ModuleID = AllDeviceRes[i].pVoice[j].deviceID.m_s8ModuleID;
				MapTable_Voice[VocCount].m_s16ChannelID = AllDeviceRes[i].pVoice[j].deviceID.m_s16ChannelID;
				VocCount ++;
			 }

			 // Conf通道
			 for ( j = 0; j < AllDeviceRes[i].lConfNum; j ++ )
			 {
				AllDeviceRes[i].pConf[j].iSeqID = ConfCount;
				MapTable_Conf[ConfCount].m_s8ModuleID = AllDeviceRes[i].pConf[j].deviceID.m_s8ModuleID;
				MapTable_Conf[ConfCount].m_s16ChannelID = AllDeviceRes[i].pConf[j].deviceID.m_s16ChannelID;
				ConfCount ++;
			 }

			 // PCM通道
			 for ( j = 0; j < AllDeviceRes[i].lPcmNum; j ++ )
			 {
				AllDeviceRes[i].pPcm[j].iSeqID = PcmCount;
				MapTable_Pcm[PcmCount].m_s8ModuleID = AllDeviceRes[i].pPcm[j].deviceID.m_s8ModuleID;
				MapTable_Pcm[PcmCount].m_s16ChannelID = AllDeviceRes[i].pPcm[j].deviceID.m_s16ChannelID;
				PcmCount ++;
			 }

			 // 接口通道
			 iModSeqID = 0;
			 for ( j = 0; j < AllDeviceRes[i].lTrunkNum; j ++ )
			 {
				AllDeviceRes[i].pTrunk[j].iSeqID = TrkCount;
				MapTable_Trunk[TrkCount].m_s8ModuleID = AllDeviceRes[i].pTrunk[j].deviceID.m_s8ModuleID;
				MapTable_Trunk[TrkCount].m_s16ChannelID = AllDeviceRes[i].pTrunk[j].deviceID.m_s16ChannelID;
				TrkCount ++;
				if ( AllDeviceRes[i].pTrunk[j].deviceID.m_s16DeviceSub != XMS_DEVSUB_UNUSABLE )
				{
					// 可用的通道
					AllDeviceRes[i].pTrunk[j].iModSeqID = iModSeqID;
					iModSeqID ++;
				}
			 }
		 }
	}

	g_iTotalModule = ModuleCount;
	g_iTotalTrunk = TrkCount;
	g_iTotalVoice = VocCount;
	g_iTotalPcm = PcmCount;
	g_iTotalConf = ConfCount;

}

// --------------------------------------------------------------------------
void	AddDeviceRes_Trunk ( DJ_S8 s8DspModID, Acs_Dev_List_Head_t *pAcsDevList )
{
	DJ_S32	s32Num;
	int		i;
	char	TmpStr[256];

	s32Num = pAcsDevList->m_s32DeviceNum;

	if ( (AllDeviceRes[s8DspModID].lTrunkNum == 0) && (s32Num > 0) )		// 新增加的資源
	{
		// 
		AllDeviceRes[s8DspModID].pTrunk = new TRUNK_STRUCT[s32Num];
		if( !AllDeviceRes[s8DspModID].pTrunk )
		{
			AllDeviceRes[s8DspModID].lTrunkNum = 0;
			AllDeviceRes[s8DspModID].lTrunkOpened = 0;

			// alloc fail, maybe disp this error in your log
			sprintf ( TmpStr, "new TRUNK_STRUCT[%d] fail in AddDeviceRes_Trunk()" );
			AddMsg ( TmpStr );
		}
		else
		{
			AllDeviceRes[s8DspModID].lTrunkNum = s32Num;
			AllDeviceRes[s8DspModID].lTrunkOpened = 0;
			memset ( AllDeviceRes[s8DspModID].pTrunk, 0, sizeof(TRUNK_STRUCT)*s32Num );
			
			DeviceID_t	 *pDev;

			pDev = (DeviceID_t *)((BYTE *)pAcsDevList + sizeof(Acs_Dev_List_Head_t));

			for ( i = 0; i < s32Num; i ++ )
			{
				AllDeviceRes[s8DspModID].pTrunk[i].deviceID = pDev[i];
				AllDeviceRes[s8DspModID].pTrunk[i].State = TRK_WAITOPEN;
			}
		}
	}
	else if ( (AllDeviceRes[s8DspModID].lTrunkNum > 0) && (s32Num == 0) )		// 刪除該資源
	{
		// 如果有設(shè)備沒有關(guān)閉,則等同于關(guān)閉事件
		for ( i = 0; i < AllDeviceRes[s8DspModID].lTrunkNum; i ++ )
		{
			if ( AllDeviceRes[s8DspModID].pTrunk[i].State != TRK_WAITOPEN )
				CloseDeviceOK ( &AllDeviceRes[s8DspModID].pTrunk[i].deviceID );
		}

		AllDeviceRes[s8DspModID].lTrunkNum = 0;
		AllDeviceRes[s8DspModID].lTrunkOpened = 0;

		delete [] AllDeviceRes[s8DspModID].pTrunk;
		AllDeviceRes[s8DspModID].pTrunk = NULL;
	}

}

void	AddDeviceRes_Voice ( DJ_S8 s8DspModID, Acs_Dev_List_Head_t *pAcsDevList )
{
	DJ_S32	s32Num;
	int		i;
	char	TmpStr[256];

	s32Num = pAcsDevList->m_s32DeviceNum;

	if ( (AllDeviceRes[s8DspModID].lVocNum == 0) && (s32Num > 0) )		// 新增加的資源
	{
		AllDeviceRes[s8DspModID].pVoice = new VOICE_STRUCT[s32Num];
		if( !AllDeviceRes[s8DspModID].pVoice )
		{
			AllDeviceRes[s8DspModID].lVocNum = 0;
			AllDeviceRes[s8DspModID].lVocOpened = 0;
			AllDeviceRes[s8DspModID].lVocFreeNum = 0;

			// alloc fail, maybe disp this error in your log
			sprintf ( TmpStr, "new VOICE_STRUCT[%d] fail in AddDeviceRes_Voice()" );
			AddMsg ( TmpStr );
		}
		else
		{
			AllDeviceRes[s8DspModID].lVocNum = s32Num;
			AllDeviceRes[s8DspModID].lVocOpened = 0;
			AllDeviceRes[s8DspModID].lVocFreeNum = 0;
			memset ( AllDeviceRes[s8DspModID].pVoice, 0, sizeof(VOICE_STRUCT)*s32Num );
			
			DeviceID_t	 *pDev;
			pDev = (DeviceID_t *)((BYTE *)pAcsDevList + sizeof(Acs_Dev_List_Head_t));

			for ( i = 0; i < s32Num; i ++ )
			{

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品嫩草99a| 一区二区免费在线播放| 舔着乳尖日韩一区| 成人av先锋影音| 亚洲精品一区二区三区精华液 | 国产福利不卡视频| 精品乱人伦一区二区三区| 天天色综合天天| 欧美日韩综合在线免费观看| 一区二区三区在线高清| 色综合激情久久| 一区二区三区资源| 91激情在线视频| 视频一区欧美精品| 91精品国产福利| 久久超碰97中文字幕| 久久久国际精品| av欧美精品.com| 欧美国产日韩亚洲一区| 91麻豆福利精品推荐| 一区二区不卡在线视频 午夜欧美不卡在| 99久久婷婷国产综合精品| 日韩精品一区二区三区视频在线观看| 久久99深爱久久99精品| 国产精品国产a| 欧美一区二区三区四区久久| 蜜臂av日日欢夜夜爽一区| 久久久久久黄色| 欧美亚洲国产一区二区三区| 激情综合色综合久久| 欧美一二三区在线| 成人免费精品视频| 日本一不卡视频| 欧洲视频一区二区| 正在播放亚洲一区| 蜜臀av国产精品久久久久| 日韩视频一区二区三区在线播放| 国产精品一二三四五| 亚洲精品高清在线观看| 91精品国产综合久久福利软件| 性感美女久久精品| 国产欧美日韩在线| 色av一区二区| 成人黄色在线看| 国产成人综合在线观看| 狠狠色丁香久久婷婷综| 美女一区二区在线观看| 美国十次综合导航| 国产精品一区二区在线观看不卡| 狠狠色2019综合网| 丰满亚洲少妇av| 99久久婷婷国产精品综合| 国产福利一区二区三区视频 | 亚洲在线视频免费观看| 亚洲一区二区四区蜜桃| 午夜电影一区二区| 经典三级一区二区| 粉嫩在线一区二区三区视频| 成人手机在线视频| 91麻豆精品视频| 91福利精品视频| 欧美色倩网站大全免费| 欧美伦理视频网站| 在线综合亚洲欧美在线视频| 欧美一区二区三区视频免费| 在线亚洲一区观看| eeuss鲁片一区二区三区在线观看| 国产成人一级电影| 欧美aaa在线| 精品美女被调教视频大全网站| 国产网站一区二区三区| 一个色综合av| 不卡一区中文字幕| 欧美日韩精品免费观看视频| 91精品国产入口| 中文字幕一区av| 久久精品国产77777蜜臀| 91在线观看免费视频| 日韩欧美电影一区| 亚洲日本va午夜在线电影| 另类调教123区| 成人久久18免费网站麻豆| 欧美亚洲国产一区二区三区va | 欧美一二三四在线| 亚洲欧美日韩国产手机在线| 精品一区二区三区在线播放视频 | 91一区一区三区| 久久久蜜臀国产一区二区| 舔着乳尖日韩一区| 91免费看视频| 国产精品视频一区二区三区不卡| 三级成人在线视频| 在线观看网站黄不卡| 综合久久久久久| 成人毛片老司机大片| 国产精品网站在线观看| 国产一二三精品| xnxx国产精品| 国产一区二区三区高清播放| 国产精品网曝门| 国产福利电影一区二区三区| 亚洲一区中文在线| 欧美精品在线一区二区三区| 水蜜桃久久夜色精品一区的特点| 欧美xingq一区二区| 国产精品影视在线| 欧美激情中文字幕| 欧美精品日韩一区| 精品中文字幕一区二区小辣椒| 国产日韩欧美精品电影三级在线 | 成人免费看视频| 欧美变态口味重另类| 激情图片小说一区| 亚洲视频在线观看一区| 欧美日韩卡一卡二| 成人高清免费在线播放| 日产国产高清一区二区三区| 日韩国产精品久久久| 自拍av一区二区三区| 精品国产三级电影在线观看| 99精品国产热久久91蜜凸| 亚洲自拍偷拍网站| 欧美成人一级视频| 99在线精品免费| 国产精品综合一区二区三区| 亚洲成人激情av| 综合色天天鬼久久鬼色| 精品成人佐山爱一区二区| 91色视频在线| 91偷拍与自偷拍精品| 亚洲主播在线播放| 国产精品久久久久天堂| 中文字幕在线观看不卡| 精品国产91久久久久久久妲己 | 午夜精品久久久久久久久久| 1000部国产精品成人观看| 久久男人中文字幕资源站| 日韩亚洲欧美综合| 欧美电影一区二区三区| 制服丝袜国产精品| 日韩欧美第一区| 精品三级av在线| 2020国产成人综合网| 8v天堂国产在线一区二区| 91玉足脚交白嫩脚丫在线播放| 久久99久久久久久久久久久| 国产精品99久久久久久有的能看| 国产乱理伦片在线观看夜一区| 天堂蜜桃一区二区三区| 一区二区三区在线免费| 国产精品久久久久9999吃药| 亚洲人吸女人奶水| 欧美国产一区在线| 日韩欧美一区二区三区在线| 欧美激情在线观看视频免费| 国产亚洲福利社区一区| 久久久久国产精品麻豆ai换脸| 欧美日韩中文一区| 欧美一区2区视频在线观看| 欧美裸体一区二区三区| 色婷婷综合久色| 日韩欧美成人一区| 日韩三级电影网址| 91高清视频免费看| 日韩午夜精品视频| 国产日韩欧美制服另类| 亚洲欧洲综合另类| 韩国一区二区三区| 99re在线视频这里只有精品| 欧美军同video69gay| 亚洲色图丝袜美腿| 美女在线视频一区| 99国产精品久久久久久久久久 | 国产成人精品在线看| 99re免费视频精品全部| 色久优优欧美色久优优| 日韩一卡二卡三卡四卡| 久久久影视传媒| 亚洲最新视频在线播放| 国产一区二区三区电影在线观看 | 国产成人午夜高潮毛片| 99视频国产精品| 欧美电视剧免费观看| 天天亚洲美女在线视频| 91亚洲精品久久久蜜桃网站| 久久久亚洲精品一区二区三区| 久久精品国产精品亚洲红杏| 国产裸体歌舞团一区二区| 欧美日韩一区中文字幕| 亚洲女与黑人做爰| 成人a级免费电影| 亚洲欧美激情小说另类| 日本韩国欧美在线| 亚洲三级小视频| 欧美日韩日本视频| 国模冰冰炮一区二区| 久久久久亚洲蜜桃| 99r精品视频| 一个色在线综合| 亚洲国产中文字幕在线视频综合|