Ejemplo n.º 1
0
//////////////////////////////////////////////////////////////////////////
// XMS_EVT_CALLOUT event handler (local make call out returns)
void OnCallOut(Acs_Evt_t *pAcsEvt)
{
	Acs_CallControl_Data *pCallEvt = (Acs_CallControl_Data *)FetchEventData(pAcsEvt);

	DJ_U32 *u32ErrCodeExt = (DJ_U32 *)&pCallEvt->m_PrivData;

	TRACE(_T("Device[%02d][%02d][%02d] called out (ret=%d/%d)\n"),
		pAcsEvt->m_DeviceID.m_s8ModuleID,
		pAcsEvt->m_DeviceID.m_s16DeviceMain,
		pAcsEvt->m_DeviceID.m_s16ChannelID,
		pCallEvt->m_s32AcsEvtErrCode,
		*u32ErrCodeExt);

	if (pCallEvt->m_s32AcsEvtErrCode != 0)
	{
		CString strErr;
		strErr.Format(_T("Device[%d][%d] make call failed! (ret=%d/%d)"),
			pAcsEvt->m_DeviceID.m_s8ModuleID,
			pAcsEvt->m_DeviceID.m_s16ChannelID,
			pCallEvt->m_s32AcsEvtErrCode,
			*u32ErrCodeExt);
		g_pDlg->MessageBox(strErr, _T("MakeCall"), MB_OK|MB_ICONERROR);

		int iDevice = pAcsEvt->m_DeviceID.m_s16ChannelID;

		resetDeviceVoIP(iDevice);
		g_pDlg->refreshListIP(iDevice);
	}
}
Ejemplo n.º 2
0
//////////////////////////////////////////////////////////////////////////
// XMS_EVT_CLEARCALL event handler (call dropped by local or remote)
void OnClearCall(Acs_Evt_t *pAcsEvt)
{
	Acs_CallControl_Data *pCallEvt = (Acs_CallControl_Data *)FetchEventData(pAcsEvt);

	TRACE(_T("Device[%02d][%02d][%02d] call cleared (ret=%d)\n"),
		pAcsEvt->m_DeviceID.m_s8ModuleID,
		pAcsEvt->m_DeviceID.m_s16DeviceMain,
		pAcsEvt->m_DeviceID.m_s16ChannelID,
		pCallEvt->m_s32AcsEvtErrCode);

	// if has Voice Device binded, unbind it
	int iDeviceIP = pAcsEvt->m_DeviceID.m_s16ChannelID;
	int iDeviceVoc = g_deviceVoIP[iDeviceIP].iVoiceDevice;
	if (iDeviceVoc != -1)
	{
		MixerControlParam_t paramMixer = {0};

		// send SetParam command
		RetCode_t ret = XMS_ctsSetParam(g_acsHandle, &g_deviceVoIP[iDeviceIP].device,
			VOIP_PARAM_RTPMIXER, sizeof(paramMixer), &paramMixer);

		g_deviceVoIP[iDeviceIP].iVoiceDevice = -1;
		g_deviceVoc[iDeviceVoc].iVoIPDevice = -1;

		g_pDlg->refreshListIP(iDeviceIP);
		g_pDlg->refreshListVoc(iDeviceVoc);
	}
}
Ejemplo n.º 3
0
// add end
// ----------------------------------------------------------------------------------------------------
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 );
		AddMsg ( TmpStr );
//		WriteMsgLog(TmpStr);
		break;

	default:
		break;

	}
}
Ejemplo n.º 4
0
//////////////////////////////////////////////////////////////////////////
// XMS_EVT_ANSWERCALL event handler (local answer call returns)
void OnAnswerCall(Acs_Evt_t *pAcsEvt)
{
	Acs_CallControl_Data *pCallEvt = (Acs_CallControl_Data *)FetchEventData(pAcsEvt);

	TRACE(_T("Device[%02d][%02d][%02d] call answered (ret=%d)\n"),
		pAcsEvt->m_DeviceID.m_s8ModuleID,
		pAcsEvt->m_DeviceID.m_s16DeviceMain,
		pAcsEvt->m_DeviceID.m_s16ChannelID,
		pCallEvt->m_s32AcsEvtErrCode);
}
Ejemplo n.º 5
0
//////////////////////////////////////////////////////////////////////////
// XMS_EVT_SENDIODATA event handler (H.245 UserInputIndication/SIP INFO/RFC 2833 DTMF)
void OnSendIOData(Acs_Evt_t *pAcsEvt)
{
	Acs_IO_Data *pIOEvt = (Acs_IO_Data *)FetchEventData(pAcsEvt);

	TRACE(_T("Device[%02d][%02d][%02d] send IO Data (type=%d) %s\n"),
		pAcsEvt->m_DeviceID.m_s8ModuleID,
		pAcsEvt->m_DeviceID.m_s16DeviceMain,
		pAcsEvt->m_DeviceID.m_s16ChannelID,
		pIOEvt->m_u16IoType,
		pIOEvt->m_s32AcsEvtState?"succeeded":"failed");
}
Ejemplo n.º 6
0
//*****************************************************************************
//Name        : Ack_SigMon
//Author      : None
//Description : Signalling monitor event process
//Input       : pAcsEvt
//Output      : None
//Return      : 0 - Success
//             -1 - Failure
//*****************************************************************************
DJ_S32  Ack_SigMon(Acs_Evt_t* pAcsEvt)
{
	DeviceID_t *pDev = &pAcsEvt->m_DeviceID;
	PSMON_EVENT SMevt= NULL;
	
	int index = Get_DeviceIndex(pDev);
	if (index == -1)
	{
		return -1;
	}	
	
	SMevt = (PSMON_EVENT)FetchEventData(pAcsEvt);
	int iPos  = g_pDevRes[index].iPos;
	
	Show_Information(iPos, SMevt);
	Show_Data(SMevt);
	
	switch (SMevt->EventType)
	{
	case SMON_EVT_Call_Generate:
		pdlg->m_DeviceInfo.SetItemText(iPos, 2, "Call_Generate");
		pdlg->m_DeviceInfo.SetItemText(iPos, 3, SMevt->Caller_ID);
		pdlg->m_DeviceInfo.SetItemText(iPos, 4, SMevt->Called_ID);
		break;

	case SMON_EVT_Call_Connect:
		pdlg->m_DeviceInfo.SetItemText(iPos, 2, "Call_Connect");
		break;

	case SMON_EVT_Call_Disconnect:
		pdlg->m_DeviceInfo.SetItemText(iPos, 2, "Call_Disconnect");
		pdlg->m_DeviceInfo.SetItemText(iPos, 3, "");
		pdlg->m_DeviceInfo.SetItemText(iPos, 4, "");
		break;

	case SMON_EVT_Call_Info:
		pdlg->m_DeviceInfo.SetItemText(iPos, 2, "Call_Info");
		break;

	case SMON_Evt_Gen_Signal_Info:
		pdlg->m_DeviceInfo.SetItemText(iPos, 2, "Gen_SignalInfo");
		break;

	case SMON_Evt_Raw_Signal_Info:
		pdlg->m_DeviceInfo.SetItemText(iPos, 2, "Raw_SignalInfo");
		break;

	default:
		break;
	}
	
	return 0;
}
Ejemplo n.º 7
0
//////////////////////////////////////////////////////////////////////////
// Get Param Event Handler
void OnGetParam(Acs_Evt_t *pAcsEvt)
{
	TRACE(_T("Device[%02d][%02d][%02d] receive GetParam\n"),
		pAcsEvt->m_DeviceID.m_s8ModuleID,
		pAcsEvt->m_DeviceID.m_s16DeviceMain,
		pAcsEvt->m_DeviceID.m_s16ChannelID);

	if (g_pDlg->m_pdlgRtp->GetSafeHwnd() == NULL)
		return;

	Acs_ParamProc_Data *pParamEvt = (Acs_ParamProc_Data *)FetchEventData(pAcsEvt);
	g_pDlg->m_pdlgRtp->SendMessage(UM_UPDATEDATA, pParamEvt->m_u16ParamCmdType, (LPARAM)FetchParamData(pAcsEvt));
}
Ejemplo n.º 8
0
bool	CheckPlayEnd ( VOIP_STRUCT *pOneVOIP, Acs_Evt_t *pAcsEvt )
{
	Acs_MediaProc_Data	*pMediaData = NULL;

	if ( pAcsEvt->m_s32EventType == XMS_EVT_PLAY )	
	{
		pMediaData = (Acs_MediaProc_Data *) FetchEventData(pAcsEvt);
		if ( pMediaData->m_u8TaskID == pOneVOIP->u8PlayTag )
			return true;
	}

	return false;
}
Ejemplo n.º 9
0
// -------------------------------------------------------------------------------------------------
void	HandleDevState ( Acs_Evt_t *pAcsEvt )
{
	VOIP_STRUCT	*pOneVOIP;
	Acs_GeneralProc_Data *pGeneralData = NULL;

	pGeneralData = (Acs_GeneralProc_Data *)FetchEventData(pAcsEvt);
	if ( pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_VOIP )
	{
		pOneVOIP = &M_OneVOIP(pAcsEvt->m_DeviceID);

		pOneVOIP->iLineState = pGeneralData->m_s32DeviceState;
		DrawMain_LineState( pOneVOIP );	
	}
}
Ejemplo n.º 10
0
//*****************************************************************************
//Name        : EVT_Handler
//Author      : None
//Description : Event handle for XMS system
//Input       : esrParam - parameter
//Output      : None
//Return      : 1 - Success 
//              0 - Failure
//*****************************************************************************
DJ_Void EVT_Handler(DJ_U32 esrParam)
{
	Acs_Dev_List_Head_t* pAcsDevList = NULL;
	Acs_Evt_t*			 pAcsEvt = NULL;
	
	pAcsEvt = (Acs_Evt_t *)esrParam;
	
	switch(pAcsEvt->m_s32EventType)
	{
	case XMS_EVT_QUERY_DEVICE:
		if (!g_StartWorkFlag)
		{				
			pAcsDevList = (Acs_Dev_List_Head_t *)FetchEventData(pAcsEvt);
			switch (pAcsDevList->m_s32DeviceMain)
			{
			case XMS_DEVMAIN_INTERFACE_CH:		
				AddDeviceRes(pAcsDevList);
				break;
			}
		}
		break;

	case XMS_EVT_QUERY_DEVICE_END:
		if (!g_StartWorkFlag)
		{	
			pdlg->m_BtnStart.EnableWindow();
			InitDevice();
		}
		break;
	
	case XMS_EVT_OPEN_DEVICE:
		Ack_OpenDevice(pAcsEvt);
		break;

	case XMS_EVT_SIGMON:
		if (g_StartWorkFlag)
		{
		Ack_SigMon(pAcsEvt);
		}
		break;

	default:
		break;
	}
	
	return;
}
Ejemplo n.º 11
0
//////////////////////////////////////////////////////////////////////////
// XMS_EVT_DEVICESTATE event handler (VoIP call state changes)
void OnDeviceState(Acs_Evt_t *pAcsEvt)
{
	Acs_GeneralProc_Data *pDeviceState = (Acs_GeneralProc_Data *)FetchEventData(pAcsEvt);

	TRACE(_T("Device[%02d][%02d][%02d] state changed to 0x%08X\n"),
		pAcsEvt->m_DeviceID.m_s8ModuleID,
		pAcsEvt->m_DeviceID.m_s16DeviceMain,
		pAcsEvt->m_DeviceID.m_s16ChannelID,
		pDeviceState->m_s32DeviceState);

	if (pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_VOIP)
	{
		int iDevice = pAcsEvt->m_DeviceID.m_s16ChannelID;

		g_deviceVoIP[iDevice].iState = pDeviceState->m_s32DeviceState;

		switch (pDeviceState->m_s32DeviceState)
		{
		case DCS_FREE:
			g_deviceVoIP[iDevice].iProtocol = 0;
			g_deviceVoIP[iDevice].iState = DCS_FREE;
			memset(&g_deviceVoIP[iDevice].addrCaller, 0, sizeof(XMS_VOIP_ADDR));
			memset(&g_deviceVoIP[iDevice].addrCallee, 0, sizeof(XMS_VOIP_ADDR));
			memset(&g_deviceVoIP[iDevice].szDtmf, 0, sizeof(g_deviceVoIP[iDevice].szDtmf));
//			resetDeviceVoIP(iDevice);
			break;
		case DCS_CALLOUT:
			break;
		case DCS_CALLIN:
			break;
		case DCS_ALERTING:
			break;
		case DCS_CONNECT:
			break;
		case DCS_DISCONNECT:
			break;
		default:
			break;
		}

		g_pDlg->refreshListIP(iDevice);
		g_pDlg->refreshCtrlIP();
		g_pDlg->refreshCtrlConf();
	}
}
Ejemplo n.º 12
0
static void HandleDevState(Acs_Evt_t *pAcsEvt)
{ 
  list *current = NULL;
  long i;
  Acs_GeneralProc_Data *pGeneralData = NULL;      

  pGeneralData = (Acs_GeneralProc_Data *)FetchEventData(pAcsEvt);
  if ((pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_INTERFACE_CH) && 
      (pAcsEvt->m_DeviceID.m_s16DeviceSub == XMS_DEVSUB_SS7_LINK))      
  {
    if ((i = find(g_pLinkFirst, pAcsEvt->m_DeviceID, &current)) >= 0)
    {
      current->entry[i].u_info.m_LinkInfo.m_GeneralData = *pGeneralData;
    } 
    if (ldebug_flag)
       printstr(NULL,"Get ss7link state\n");
  }
}
Ejemplo n.º 13
0
char My_GetIntfDtmfCode(Acs_Evt_t* pAcsEvt)
{
	Acs_IO_Data				*pIOData = NULL;
	char		*p;	
	
	if ( pAcsEvt->m_s32EventType == XMS_EVT_RECVIODATA )	/*IO Data事件*/
	{
		pIOData = (Acs_IO_Data *)FetchEventData(pAcsEvt);
		
		if ( ( pIOData->m_u16IoType == XMS_IO_TYPE_DTMF ) 
			&& ( pIOData->m_u16IoDataLen > 0 ) )
		{
			p = (char *)FetchIOData(pAcsEvt);
			
			return *p;
		}
	}
	
	return -1;	// not a good DTMF
}
Ejemplo n.º 14
0
//////////////////////////////////////////////////////////////////////////
// XMS_EVT_QUERY_DEVICE event handler
void OnQueryDevice(Acs_Evt_t *pAcsEvt)
{
	Acs_Dev_List_Head_t *pAcsDevList = (Acs_Dev_List_Head_t *)FetchEventData(pAcsEvt);

	TRACE(_T("Device[%02d][%02d] query returned %d\n"),
		pAcsDevList->m_s32ModuleID,
		pAcsDevList->m_s32DeviceMain,
		pAcsDevList->m_s32DeviceNum);

	if (pAcsDevList->m_s32ModuleID != g_pDlg->m_iDSP)
		return;

	int iDevice;
	DeviceID_t *pDevice = (DeviceID_t *)(pAcsDevList+1);

	// save all the capable devices here
	// Note: Device Module ID is ignored in this demo,
	//       which needs to be paid attention to in user's applications!
	switch (pAcsDevList->m_s32DeviceMain)
	{
	case XMS_DEVMAIN_VOIP:
		for (iDevice = 0; iDevice < pAcsDevList->m_s32DeviceNum && g_iVoIPDevNum < MAX_DEVICE_VOIP; ++iDevice)
		{
			g_deviceVoIP[g_iVoIPDevNum++].device = pDevice[iDevice];
		}
		break;
	case XMS_DEVMAIN_VOICE:
		for (iDevice = 0; iDevice < pAcsDevList->m_s32DeviceNum && g_iVocDevNum < MAX_DEVICE_VOICE; ++iDevice)
		{
			g_deviceVoc[g_iVocDevNum++].device = pDevice[iDevice];
		}
		break;
	case XMS_DEVMAIN_CONFERENCE:
		for (iDevice = 0; iDevice < pAcsDevList->m_s32DeviceNum && g_iConfDevNum < MAX_DEVICE_CONF; ++iDevice)
		{
			g_deviceConf[g_iConfDevNum++].device = pDevice[iDevice];
		}
		break;
	}
}
Ejemplo n.º 15
0
//////////////////////////////////////////////////////////////////////////
// XMS_EVT_CALLIN event handler (remote call incoming)
void OnCallIn(Acs_Evt_t *pAcsEvt)
{
	Acs_CallControl_Data * pCallEvt = (Acs_CallControl_Data *)FetchEventData(pAcsEvt);

	TRACE(_T("Device[%02d][%02d][%02d] incoming call\n"),
		pAcsEvt->m_DeviceID.m_s8ModuleID,
		pAcsEvt->m_DeviceID.m_s16DeviceMain,
		pAcsEvt->m_DeviceID.m_s16ChannelID);

	if (pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_VOIP)
	{
		// update incoming call info
		ASSERT(pCallEvt->m_PrivData.m_u32DataSize == sizeof(VoIPCallPrivate_t));

		VoIPCallPrivate_t *paramVoIPCall = (VoIPCallPrivate_t *)&(pCallEvt->m_PrivData);

		int iDevice = pAcsEvt->m_DeviceID.m_s16ChannelID;

		g_deviceVoIP[iDevice].iProtocol = paramVoIPCall->m_s32Protocol;

		strcpy(g_deviceVoIP[iDevice].addrCaller.tszTelNo, pCallEvt->m_s8CallingNum);
		strcpy(g_deviceVoIP[iDevice].addrCaller.tszAddr, paramVoIPCall->m_s8CallerAddress);
		g_deviceVoIP[iDevice].addrCaller.port = (USHORT)paramVoIPCall->m_s32CallerPort;
		strcpy(g_deviceVoIP[iDevice].addrCaller.tszUserID, paramVoIPCall->m_s8CallerUserID);

		strcpy(g_deviceVoIP[iDevice].addrCallee.tszTelNo, pCallEvt->m_s8CalledNum);
		strcpy(g_deviceVoIP[iDevice].addrCallee.tszAddr, paramVoIPCall->m_s8CalleeAddress);
		g_deviceVoIP[iDevice].addrCallee.port = (USHORT)paramVoIPCall->m_s32CalleePort;
		strcpy(g_deviceVoIP[iDevice].addrCallee.tszUserID, paramVoIPCall->m_s8CalleeUserID);

		// media caps (supported in v2.1.2)
		char szMediaCaps[100] = {0};
		for (int iCap = 0; iCap < paramVoIPCall->m_u8MediaCapNum; ++iCap)
			sprintf(szMediaCaps+strlen(szMediaCaps), " %d", paramVoIPCall->m_u8MediaCapList[iCap]);
		TRACE(_T("Media Caps(%d):%s\n"), paramVoIPCall->m_u8MediaCapNum, szMediaCaps);

		g_pDlg->refreshListIP(iDevice);
	}
}
Ejemplo n.º 16
0
// -------------------------------------------------------------------------------------------------
void	HandleDevState ( Acs_Evt_t *pAcsEvt )
{
	TRUNK_STRUCT	*pOneTrunk;
	PCM_STRUCT		*pOnePcm;
	Acs_GeneralProc_Data *pGeneralData = NULL;

	pGeneralData = (Acs_GeneralProc_Data *)FetchEventData(pAcsEvt);
	if ( pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_INTERFACE_CH )
	{
		pOneTrunk = &M_OneTrunk(pAcsEvt->m_DeviceID);

		pOneTrunk->iLineState = pGeneralData->m_s32DeviceState;
		DrawMain_LineState( pOneTrunk );	
	}

	if ( pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_DIGITAL_PORT )
	{
		pOnePcm = &M_OnePcm(pAcsEvt->m_DeviceID);

		pOnePcm->u8E1Type = (pGeneralData->m_s32DeviceState >> 16) & 0xFF;
		pOnePcm->s32AlarmVal = (pGeneralData->m_s32DeviceState & 0xFFFF);

		DrawPcm_TypeAndAlarm ( pOnePcm );
	}
Ejemplo n.º 17
0
DJ_Void EvtHandler(DJ_U32 esrParam){
	Acs_Evt_t *			    pAcsEvt = NULL;
	Acs_Dev_List_Head_t *	pAcsDevList = NULL;
	DJ_S8					s8DspModID;
	DJ_S32					s32Num;
	pAcsEvt = (Acs_Evt_t *) esrParam;
	VOICE_STRUCT *			pOneVoice;
	TRUNK_STRUCT *			pOneTrunk;
	char					TmpStr[256];
	Acs_GeneralProc_Data *pGeneralData = NULL;	

	switch ( pAcsEvt->m_s32EventType )
	{
	case XMS_EVT_QUERY_DEVICE:		
		{
			pAcsDevList = ( Acs_Dev_List_Head_t *) FetchEventData(pAcsEvt);	
			s8DspModID = (DJ_S8) pAcsDevList->m_s32ModuleID;
			s32Num =  pAcsDevList->m_s32DeviceNum;
			if (s8DspModID == cfg_iPartWorkModuleID)
			{
				switch (pAcsDevList->m_s32DeviceMain)
				{
				case XMS_DEVMAIN_VOICE:	
					if ( (AllDeviceRes[s8DspModID].lVocNum == 0) && (s32Num > 0) )		//  the resources new added
					{
						AllDeviceRes[s8DspModID].pVoice = new VOICE_STRUCT[s32Num];
						if( AllDeviceRes[s8DspModID].pVoice )
						{
							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 ( int i = 0; i < s32Num; i ++ )
							{
								AllDeviceRes[s8DspModID].pVoice[i].deviceID = pDev[i];
								AllDeviceRes[s8DspModID].pVoice[i].State = VOC_WAITOPEN;
							}
						}
					}
					break;
				case XMS_DEVMAIN_INTERFACE_CH:
					if ( (AllDeviceRes[s8DspModID].lTrunkNum == 0) && (s32Num > 0) )		//  the resources new added
					{
						AllDeviceRes[s8DspModID].pTrunk = new TRUNK_STRUCT[s32Num];
						if( AllDeviceRes[s8DspModID].pTrunk )
						{
							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 (int i = 0; i < s32Num; i ++ )
							{
								AllDeviceRes[s8DspModID].pTrunk[i].deviceID = pDev[i];
								AllDeviceRes[s8DspModID].pTrunk[i].State = TRK_WAITOPEN;
							}
						}
					}					
					break;
				}

			}
			
		}
		break; 
	case XMS_EVT_QUERY_ONE_DSP_END:	//一个DSP上的资源搜索完毕,打开应用需要的设备
		if (pAcsEvt->m_DeviceID.m_s8ModuleID == cfg_iPartWorkModuleID)
		{
			AllDeviceRes[pAcsEvt->m_DeviceID.m_s8ModuleID].lFlag = 1;		// this DSP can use
			s8DspModID = (DJ_S8) pAcsEvt->m_DeviceID.m_s8ModuleID;
			// pVoice
			for ( int i = 0; i < AllDeviceRes[s8DspModID].lVocNum; i++ )
			{
				pOneVoice = &AllDeviceRes[s8DspModID].pVoice[i];			
				if ( pOneVoice->State == VOC_WAITOPEN )		// not Open yet
				{
					if ( XMS_ctsOpenDevice ( g_acsHandle, &pOneVoice->deviceID, NULL ) < 0 )
					{
						MessageBox(NULL, "Voice open fail!", "XMS_ctsOpenDevice", MB_OK ) ;
					}
				}
			}
						
			// pTrunk
			pdlg->m_ListTrunk.DeleteAllItems ();
			for ( int j = 0; j < AllDeviceRes[s8DspModID].lTrunkNum; j++ )
			{
				pOneTrunk = &AllDeviceRes[s8DspModID].pTrunk[j];
				pOneTrunk->iSeqID = j;
				if ( pOneTrunk->State == TRK_WAITOPEN )		// not Open yet
				{
					if ( XMS_ctsOpenDevice ( g_acsHandle, &pOneTrunk->deviceID, NULL ) < 0 )
					{
						MessageBox(NULL, "Trunk open fail!", "XMS_ctsOpenDevice", MB_OK ) ;
					}
				}
			
				//界面显示中继信息
				sprintf ( TmpStr, "%3d", j );
				pdlg->m_ListTrunk.InsertItem ( j, TmpStr );
				
				sprintf ( TmpStr, "%d,%d", pOneTrunk->deviceID.m_s8ModuleID, pOneTrunk->deviceID.m_s16ChannelID );
				pdlg->m_ListTrunk.SetItemText ( j, 1, TmpStr );	
				
				pdlg->m_ListTrunk.SetItemText ( j, 2, GetString_DeviceSub( pOneTrunk->deviceID.m_s16DeviceSub) );
				
				pdlg->m_ListTrunk.SetItemText ( j, 3, GetString_LineState(pOneTrunk->iLineState) ); 
			}
			
		}
		break;
	case XMS_EVT_QUERY_REMOVE_ONE_DSP_END:		
		break;		
	case XMS_EVT_QUERY_DEVICE_END:	// Query Device List End
		break;		
	case XMS_EVT_OPEN_DEVICE:
		OpenDeviceOK(&pAcsEvt->m_DeviceID );
		break;		
	case XMS_EVT_CLOSE_DEVICE:		// before Delete DSP, DSP send event CloseDevice to the APP; call XMS_ctsCloseDevicey() can generate this Event
		break;		
	case XMS_EVT_DEVICESTATE:
			
		pGeneralData = (Acs_GeneralProc_Data *)FetchEventData(pAcsEvt);
		
		if ( pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_INTERFACE_CH )
		{
			pOneTrunk = &AllDeviceRes[pAcsEvt->m_DeviceID.m_s8ModuleID].pTrunk[pAcsEvt->m_DeviceID.m_s16ChannelID];
			pOneTrunk->iLineState = pGeneralData->m_s32DeviceState;
			pdlg->m_ListTrunk.SetItemText ( pOneTrunk->iSeqID, 3, GetString_LineState(pOneTrunk->iLineState) ); 
		}
		break;		
	case XMS_EVT_UNIFAILURE:
		break;		
	default:
		if ( pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_INTERFACE_CH &&
			pAcsEvt->m_DeviceID.m_s16DeviceSub == XMS_DEVSUB_ANALOG_USER)
		{
			pOneTrunk = &AllDeviceRes[pAcsEvt->m_DeviceID.m_s8ModuleID].pTrunk[pAcsEvt->m_DeviceID.m_s16ChannelID];
			UserWork( pOneTrunk, pAcsEvt );
		}else if (pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_VOICE)
		{	
			DeviceID_t	*pDevID;
			pOneVoice = &AllDeviceRes[pAcsEvt->m_DeviceID.m_s8ModuleID].pVoice[pAcsEvt->m_DeviceID.m_s16ChannelID];
			pDevID = &pOneVoice->UsedDevID;
			
			if ( pDevID->m_s16DeviceMain == XMS_DEVMAIN_INTERFACE_CH && pDevID->m_s16DeviceSub == XMS_DEVSUB_ANALOG_USER)
			{
				pOneTrunk = &AllDeviceRes[pDevID->m_s8ModuleID].pTrunk[pDevID->m_s16ChannelID];
				UserWork ( pOneTrunk, pAcsEvt );
			}

		}
		break;
	}
}
Ejemplo n.º 18
0
DJ_Void EvtHandler(DJ_U32 esrParam)
{
  Acs_Evt_t *pAcsEvt;
  Acs_Dev_List_Head_t *pAcsDevList;
  ACS_Digital_PortState_Data *pDigitState = NULL;
  Acs_UniFailure_Data *pUniFailData = NULL;
  WINDOW *win;
  int height, width;
  
  win = stdscr;
  
  pAcsEvt= (Acs_Evt_t *)esrParam;
  if (ldebug_flag)
  {
    /*print event*/
  }
  
  switch(pAcsEvt->m_s32EventType)
  {
    case XMS_EVT_QUERY_DEVICE:
      pAcsDevList = (Acs_Dev_List_Head_t *)FetchEventData(pAcsEvt);
      AddDeviceRes(pAcsDevList);
      break;
    case XMS_EVT_QUERY_ONE_DSP_END:
      {
        /*open all device*/
        OpenAllDevice_Dsp(pAcsEvt->m_DeviceID.m_s8ModuleID);
      }
      break;
    case XMS_EVT_QUERY_REMOVE_ONE_DSP_END:
      {
        /*delete Dsp from device table*/
        remove(g_pPcmFirst, pAcsEvt->m_DeviceID.m_s8ModuleID);
        remove(g_pLinkFirst, pAcsEvt->m_DeviceID.m_s8ModuleID);       
      }
      break;
    case XMS_EVT_QUERY_DEVICE_END:
      break;
    case XMS_EVT_OPEN_DEVICE:
      OpenDeviceOK(&pAcsEvt->m_DeviceID);
      break;
    case XMS_EVT_CLOSE_DEVICE:
    //  CloseDeviceOK(&pAcsEvt->m_DeviceID);
      break;
    case XMS_EVT_DEVICESTATE:
      HandleDevState(pAcsEvt);
      break;
    case XMS_EVT_UNIFAILURE:
      if (ldebug_flag)
      { 
        pUniFailData = (Acs_UniFailure_Data *)FetchEventData(pAcsEvt);
        if (pUniFailData->m_s32AcsEvtState=-1)
        {
          if (pUniFailData->m_s32AcsEvtErrCode == ACSERR_LINKBROKEN)
          {
            getyx(win, height, width);
            mvprintw(height, 0,"flow connection has been disconnected\n");
          }
          else if (pUniFailData->m_s32AcsEvtErrCode == ACSERR_GETRESFAIL)
          {
            getyx(win, height, width);
            mvprintw(height, 0, "OpenDevic get device error,deviceType(%d,%d) ch(%d,%d)\n",
                  pAcsEvt->m_DeviceID.m_s16DeviceMain, pAcsEvt->m_DeviceID.m_s16DeviceSub,
                  pAcsEvt->m_DeviceID.m_s8ModuleID, pAcsEvt->m_DeviceID.m_s16ChannelID);
          }
          else if (pUniFailData->m_s32AcsEvtErrCode == ACSERR_DEVICEERR)
          {
            getyx(win, height, width);
            mvprintw(height, 0, "api transfer device error\n");
          }
        }
        break;
     case XMS_EVT_CLASS_UNIFAILURE:
        if (ldebug_flag)       
        {
          pUniFailData = (Acs_UniFailure_Data *)FetchEventData(pAcsEvt);
          if (pUniFailData->m_s32AcsEvtState == -1)
          {
            if(pUniFailData->m_s32AcsEvtErrCode == ACSERR_FAILSEND)
            {
              getyx(win, height, width);
              mvprintw(height, 0, "send command to function module error\n");
            } 
          }         
        } 
      } 
      break;
   case XMS_EVT_E1STATE:
      pDigitState = (ACS_Digital_PortState_Data *)FetchEventData(pAcsEvt);
      saveDigitState(pAcsEvt, *pDigitState);      
      
      if (ldebug_flag)
      {
       //  showDebugPCMState(pAcsEvt, *pDigitState); 
      } 
      break;
   case XMS_EVT_SS7SendRawFrame:   
    if (ldebug_flag)
    {
    	printstr(NULL, "recv send raw evt\n");    	
    }  
    break;
   case XMS_EVT_SS7RawFrame:
     //if (ldebug_flag)
     {
      Acs_SS7RawFrame_Data *raw_data = NULL;
      raw_data = (Acs_SS7RawFrame_Data *)FetchEventData(pAcsEvt);
     }
    break;
   default: 
      break;        
  } 
}
Ejemplo n.º 19
0
// -------------------------------------------------------
DJ_Void EvtHandler(DJ_U32 esrParam)
{
	Acs_Evt_t *			    pAcsEvt = NULL;

	Acs_Dev_List_Head_t * pAcsDevList = NULL;
	Acs_GeneralProc_Data* pGeneral=NULL;

	char		TmpStr[256];
	char *      pStr = NULL;

	pAcsEvt = (Acs_Evt_t *) esrParam;

	DispEventInfo ( pAcsEvt );

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

		case XMS_EVT_QUERY_DEVICE:
			if ( !bStartWorkFlag )
			{
				pAcsDevList = ( Acs_Dev_List_Head_t *) ( (DJ_S8 *)pAcsEvt + sizeof(Acs_Evt_t) );

				//Add or modify device resource to pool when receive the device's event of the state changing
				AddDeviceRes ( pAcsDevList );
			}
			break; 

		case XMS_EVT_QUERY_DEVICE_END:	//get device list completely
			if ( !bStartWorkFlag )
			{
				pGeneral = (Acs_GeneralProc_Data*)FetchEventData(pAcsEvt);
				sprintf ( TmpStr, "Start work. DeviceNum = %d\n", TotalDevRes );
				AddMsg ( MSG_TYPE_OTHER, TmpStr );

				InitDeviceInfo();

				bStartWorkFlag = true;
			}
			break;

		case XMS_EVT_OPEN_DEVICE:
			OpenDeviceOK ( &pAcsEvt->m_DeviceID );						
			break;

		case XMS_EVT_CLOSE_DEVICE:
			CloseDeviceOK ( &pAcsEvt->m_DeviceID );

			pStr = GetString_DeviceAll(&pAcsEvt->m_DeviceID);
			sprintf(TmpStr,"Close devcie evt: %s",pStr);
			AfxMessageBox(TmpStr,NULL,MB_OK);
			break;

		case XMS_EVT_PLAYCSPREQ:
			{
				DJ_S32  r = 0;
				char MsgStr[100]={0};
				CSPPlayDataInfo_t     playCSP={0};
				Acs_CSPDataReq_Data * pCspReq = NULL;
				
				if(g_cspPlay == 0)
				{
					break;
				}

				pCspReq = (Acs_CSPDataReq_Data *)FetchEventData(pAcsEvt);
								
				if(g_cspFp == NULL)
				{
					g_cspFp = fopen(g_szCSPFile,"rb");
				}

				if(feof(g_cspFp))
				{
					fseek(g_cspFp,SEEK_SET,0);
					TRACE("Seek to Set\n");
				}
				
				playCSP.m_u16DataLen = pCspReq->m_u16ReqCspDataLen;
				playCSP.m_u8DataType = XMS_CSPPLAY_DATA_VOC;
				playCSP.m_u8TaskID = (DJ_U8)(GetTickCount() % 128);	
				
				long rr = fread(g_szDataBuf,sizeof(char),playCSP.m_u16DataLen,g_cspFp);
				TRACE("ReqDataLen = %d,sentData=%d\n",pCspReq->m_u16ReqCspDataLen,rr);
				
				r = XMS_ctsSendCSPData(g_acsHandle, &DevOpened[iOpenedIndex1].DevID, &playCSP,g_szDataBuf,NULL);
				if ( r < 0 )
				{
					sprintf ( MsgStr, "X(%d) XMS_ctsPlayCSP() FAIL! (%s)", 
						r, GetString_DeviceAll (&DevOpened[iOpenedIndex1].DevID)  );
					AddMsg ( MSG_TYPE_FUNCTION, MsgStr);
				}
				else
				{
					sprintf ( MsgStr, "XMS_ctsPlayCSP() OK! (%s)", 
						GetString_DeviceAll (&DevOpened[iOpenedIndex1].DevID));
					AddMsg ( MSG_TYPE_FUNCTION, MsgStr );
				}									
			}
			break;
		case XMS_EVT_CONTROLPLAY:
			g_cspPlay = 0;
			break;
		case XMS_EVT_RECORDCSP:
			{
				Acs_MediaCSPProc_Data * pCSPData = NULL;
								
				pCSPData = (Acs_MediaCSPProc_Data *)FetchEventData(pAcsEvt);				
				fwrite(pCSPData->m_u8StreamData,sizeof(char),pCSPData->m_u16DataLen,g_cspFp);				
			}
			break;
		default:
			break;
	}

}
Ejemplo n.º 20
0
// -------------------------------------------------------
void	DispEventInfo ( Acs_Evt_t *pAcsEvt )
{
	char	TmpStr[512] = {0};
	char	TmpS[256] = {0};

	char		  SendTiffFileName[ACS_MAX_FILE_NAME_LEN];
	char		  RecvTiffFileName[ACS_MAX_FILE_NAME_LEN];
	
	char dtmf='?';

	Acs_Dev_List_Head_t * pAcsDevList = NULL;
	Acs_UniFailure_Data * pAcsUniFailure = NULL;
	Acs_GeneralProc_Data *pGeneralData = NULL;
	Acs_CallControl_Data *pCallControl = NULL;
	Acs_IO_Data			 *pIOData = NULL;
	Acs_CAS_ExtraInfo_t  *pCAS_ExtraInfo = NULL;
	Acs_AnalogInterface_Data* pAnalogInterface=NULL;
	Acs_CSPDataReq_Data* pCspReqData=NULL;
	Acs_ParamProc_Data*  pSetParam=NULL;
	Acs_ParamProc_Data*  pGetParam=NULL;
	Acs_MediaProc_Data* pMedia=NULL;
	Acs_ParamData_UserReadXmsBoardInfo* pBoardInfor=NULL;

	sprintf ( TmpStr, "" );
	strcat ( TmpStr, GetString_EventType ( pAcsEvt->m_s32EventType ) );

	Acs_MediaProc_Data * pMediaData = (Acs_MediaProc_Data *)FetchEventData(pAcsEvt);

	switch ( pAcsEvt->m_s32EventType )
	{
	case XMS_EVT_GETPARAM:
		{
			pGetParam = (Acs_ParamProc_Data*)FetchEventData(pAcsEvt);
			pBoardInfor = (Acs_ParamData_UserReadXmsBoardInfo*)((char*)pGetParam+sizeof(Acs_ParamProc_Data));
		}
		break;
	case XMS_EVT_DEV_TIMER:
		{

			char ioFskBuf[512];
			int iFskLen;
			char MsgStr[512];

			memset(ioFskBuf,0,sizeof(ioFskBuf));
			pdlg->GetDlgItemText(IDC_EDIT_CALLINGNUM,MsgStr,sizeof(MsgStr));
			EncodeFskCaller(MsgStr,ioFskBuf,&iFskLen);

		    int r = XMS_ctsSendIOData ( g_acsHandle, &pAcsEvt->m_DeviceID, 
			XMS_IO_TYPE_FSK, (DJ_U16)iFskLen, (DJ_Void *) ioFskBuf );
			if ( r < 0 )
			{
				sprintf ( MsgStr, "X(%d) XMS_ctsSendIOData( %s, %d, [%s] ) FAIL! (%s)", 
					r, "GTG ", g_iLen, TmpStr, 
					GetString_DeviceAll (&pAcsEvt->m_DeviceID)  );
				AddMsg ( MSG_TYPE_FUNCTION, MsgStr );
			}
			else
			{
				sprintf ( MsgStr, "XMS_ctsSendIOData( %s, %d, [%s] ) OK! (%s)", 
					"GTG ", g_iLen, TmpStr,  
					GetString_DeviceAll (&pAcsEvt->m_DeviceID)  );
				AddMsg ( MSG_TYPE_FUNCTION, MsgStr );
			}
		}
		break;
	case XMS_EVT_BUILDINDEX:
		pMedia=(Acs_MediaProc_Data*)FetchEventData(pAcsEvt);
		sprintf(TmpS," EvtState=%d taskID=%d fileIndex=%u,%x",pMedia->m_s32AcsEvtState,pMedia->m_u8TaskID,pMedia->m_u32CurFileIndex,pMedia->m_u32CurFileIndex);
		strcat(TmpStr,TmpS);
		break;
	case XMS_EVT_PLAY:
		pMedia=(Acs_MediaProc_Data*)FetchEventData(pAcsEvt);
		sprintf(TmpS," EvtState=%d Errcode=%d taskID=%d fileIndex=%d",pMedia->m_s32AcsEvtState,pMedia->m_s32AcsEvtErrCode,pMedia->m_u8TaskID,pMedia->m_u32CurFileIndex);
		strcat(TmpStr,TmpS);
		break;
	case XMS_EVT_SETPARAM:
		pSetParam = (Acs_ParamProc_Data*)FetchEventData(pAcsEvt);
		sprintf(TmpS," CmdType=[%d]",pSetParam->m_u16ParamCmdType);
		strcat(TmpStr,TmpS);
		break;
	case XMS_EVT_UNLINKDEVICE:
		pGeneralData = (Acs_GeneralProc_Data*) FetchEventData(pAcsEvt);
		break;
	case XMS_EVT_PLAYCSPREQ:
		//
		pCspReqData = (Acs_CSPDataReq_Data*)FetchEventData(pAcsEvt);
		sprintf(TmpS,"CSPPLAYREQ datalen =%d",pCspReqData->m_u16ReqCspDataLen);
		strcat(TmpStr,TmpS);
		break;

	case XMS_EVT_ANALOG_INTERFACE:
		pAnalogInterface = (Acs_AnalogInterface_Data*)FetchEventData(pAcsEvt);
		sprintf(TmpS,"(%d,%s)",pAnalogInterface->m_u8AnalogInterfaceState,GetString_AnalogInterfaceState(pAcsEvt->m_DeviceID.m_s16DeviceSub,pAnalogInterface->m_u8AnalogInterfaceState));
		strcat(TmpStr,TmpS);
		break;
	case XMS_EVT_SENDIODATA:
		sprintf ( TmpS, " (%s,%s,MachineID:%2d,ModuleID:%3d,Ch:%d)", 
			GetString_DeviceMain(pAcsEvt->m_DeviceID.m_s16DeviceMain),
			GetString_DeviceSub(pAcsEvt->m_DeviceID.m_s16DeviceMain,pAcsEvt->m_DeviceID.m_s16DeviceSub),
			pAcsEvt->m_DeviceID.m_s8MachineID,
			pAcsEvt->m_DeviceID.m_s8ModuleID,
			pAcsEvt->m_DeviceID.m_s16ChannelID );
		/*strcat ( TmpStr, TmpS );
		{
			CmdParamData_AnalogTrunk_t cmdAnalogTrunk;
			void*p =(void*)&cmdAnalogTrunk; ;
			XMS_ctsSetParam(g_acsHandle,&pAcsEvt->m_DeviceID,ANALOGTRUNK_PARAM_UNBINDVOC,sizeof(CmdParamData_AnalogTrunk_t),p);
			////
		}*/
		strcat(TmpStr,TmpS);
		break;
	case XMS_EVT_LINKDEVICE:
	case XMS_EVT_CLEARCALL:
		sprintf ( TmpS, " (%s,%s,MachineID:%2d,ModuleID:%3d,Ch:%d)", 
			GetString_DeviceMain(pAcsEvt->m_DeviceID.m_s16DeviceMain),
			GetString_DeviceSub(pAcsEvt->m_DeviceID.m_s16DeviceMain,pAcsEvt->m_DeviceID.m_s16DeviceSub),
			pAcsEvt->m_DeviceID.m_s8MachineID,
			pAcsEvt->m_DeviceID.m_s8ModuleID,
			pAcsEvt->m_DeviceID.m_s16ChannelID );
		strcat ( TmpStr, TmpS );
		break;
	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_QUERY_ONE_DSP_START:
	case XMS_EVT_QUERY_ONE_DSP_END:
		sprintf ( TmpS, " (%d)", pAcsEvt->m_DeviceID.m_s8ModuleID );
		strcat ( TmpStr, TmpS );
		break;

	case XMS_EVT_OPEN_DEVICE:
		{
			pGeneralData = (Acs_GeneralProc_Data*)FetchEventData(pAcsEvt);
			int isize = sizeof(Acs_GeneralProc_Evt);
			 isize = sizeof(Acs_GeneralProc_Data);
			
			sprintf ( TmpS, "(%s) CallID(%d,%d)",  GetString_DeviceAll(&pAcsEvt->m_DeviceID), 
				pAcsEvt->m_DeviceID.m_CallID.m_s32FlowType, pAcsEvt->m_DeviceID.m_CallID.m_s32FlowChannel );
			strcat ( TmpStr, TmpS );
		}
		break;

	case XMS_EVT_DEVICESTATE:
		pGeneralData = (Acs_GeneralProc_Data *)FetchEventData(pAcsEvt);

		sprintf ( TmpS, "(%s) S=0x%X(%s)", GetString_DeviceAll(&pAcsEvt->m_DeviceID), 
			pGeneralData->m_s32DeviceState, GetString_DeviceState(pGeneralData->m_s32DeviceState) );
		strcat ( TmpStr, TmpS );
		break;

	case XMS_EVT_CALLIN:
		pCallControl = (Acs_CallControl_Data *)FetchEventData(pAcsEvt);

		sprintf ( TmpS, "(%s) (%s,%s)", GetString_DeviceAll(&pAcsEvt->m_DeviceID), 
			 pCallControl->m_s8CallingNum, pCallControl->m_s8CalledNum); 
		strcat ( TmpStr, TmpS );
		break;

	case XMS_EVT_CALLOUT:
		pCallControl = (Acs_CallControl_Data *)FetchEventData(pAcsEvt);

		sprintf ( TmpS, "(%s) EvtState=%d, ErrCode=%d,ClearCause=%d) calling=%s called=%s", GetString_DeviceAll(&pAcsEvt->m_DeviceID), 
			pCallControl->m_s32AcsEvtState, pCallControl->m_s32AcsEvtErrCode, pCallControl->m_s32CallClearCause,pCallControl->m_s8CallingNum,pCallControl->m_s8CalledNum );  
		strcat ( TmpStr, TmpS );
		break;

	case XMS_EVT_RECVIODATA:
		{
		pIOData = (Acs_IO_Data *)FetchEventData(pAcsEvt);


		//strcat ( TmpStr, TmpS );
		//AddMsg ( MSG_TYPE_EVENT, TmpStr );
		

		pdlg->GetDlgItem ( IDC_EDIT_SENDFAX )->GetWindowText ( SendTiffFileName, ACS_MAX_FILE_NAME_LEN-1 );
		pdlg->GetDlgItem ( IDC_EDIT_RECEIVEFAX )->GetWindowText ( RecvTiffFileName, ACS_MAX_FILE_NAME_LEN-1 );
		//sprintf ( s8LocalID, "DJ:83636988" );

		if( pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_VOIP)
		{
			//Fax Process....begin
			switch (pIOData->m_u16IoType)
			{
				case XMS_IO_TYPE_VOIP_H245UII:
					if (pIOData->m_u16IoDataLen == sizeof(Acs_VoIP_H245UII))
					{
						Acs_VoIP_H245UII *h245Uii = (Acs_VoIP_H245UII *)FetchIOData(pAcsEvt);
						dtmf = h245Uii->m_s8Signal;
					}
					sprintf ( TmpS, "(%s) (%s,%d) [%c]", GetString_DeviceAll(&pAcsEvt->m_DeviceID), 
					GetString_IOType(pIOData->m_u16IoType),  pIOData->m_u16IoDataLen, dtmf ); 
					break;
				case XMS_IO_TYPE_VOIP_SIPINFO:
					if (pIOData->m_u16IoDataLen == sizeof(Acs_VoIP_SIPINFO))
					{
						Acs_VoIP_SIPINFO *sipInfo = (Acs_VoIP_SIPINFO *)FetchIOData(pAcsEvt);
						if (strcmp(sipInfo->m_s8ContentType, "application/dtmf") == 0)
							sscanf(sipInfo->m_s8Body, "dtmf=%c", &dtmf);
					}
					sprintf ( TmpS, "(%s) (%s,%d) [%c]", GetString_DeviceAll(&pAcsEvt->m_DeviceID), 
					GetString_IOType(pIOData->m_u16IoType),  pIOData->m_u16IoDataLen, dtmf ); 
					break;
				case XMS_IO_TYPE_VOIP_RTPDTMF:
					if (pIOData->m_u16IoDataLen == sizeof(Acs_VoIP_RTPDTMF))
					{
						Acs_VoIP_RTPDTMF *rtpDtmf = (Acs_VoIP_RTPDTMF *)FetchIOData(pAcsEvt);
						dtmf = rtpDtmf->m_s8EventChar;
					}
					sprintf ( TmpS, "(%s) (%s,%d) [%c]", GetString_DeviceAll(&pAcsEvt->m_DeviceID), 
					GetString_IOType(pIOData->m_u16IoType),  pIOData->m_u16IoDataLen, dtmf ); 
					break;
				case XMS_IO_TYPE_VOIP_T38START:
					if (pIOData->m_u16IoDataLen == sizeof(DJ_S32))
					{
						DJ_S32 *ret = (DJ_S32 *)FetchIOData(pAcsEvt);
						if (*ret == 0)
						{
							

							pdlg->UpdateData();

							if (g_iSendRecv == 0)//SendFax
							{
								//pdlg->m_lstIP.SetItemText(iDevice, 3, _T("Send Fax"));

								XMS_ctsSendFax(g_acsHandle,
									&DevOpened[iOpenedIndex1].DevID,
									&DevOpened[iOpenedIndex2].DevID,
									//&g_deviceVoIP[iDevice].device,
									(DJ_S8 *)(LPCTSTR)SendTiffFileName, "1234", NULL);

								sprintf ( TmpS, "(%s) (%s,%d) T38START SENDFAX", GetString_DeviceAll(&pAcsEvt->m_DeviceID), 
								GetString_IOType(pIOData->m_u16IoType),  pIOData->m_u16IoDataLen  ); 
							}
							else
							{
								//pdlg->m_lstIP.SetItemText(iDevice, 3, _T("Recv Fax"));
								XMS_ctsReceiveFax(g_acsHandle,
									&DevOpened[iOpenedIndex1].DevID,
									&DevOpened[iOpenedIndex2].DevID,
									//&g_deviceVoIP[iDevice].device,
									(DJ_S8 *)(LPCTSTR)RecvTiffFileName, "1234", NULL);

								sprintf ( TmpS, "(%s) (%s,%d) T38START RECVFAX", GetString_DeviceAll(&pAcsEvt->m_DeviceID), 
								GetString_IOType(pIOData->m_u16IoType),  pIOData->m_u16IoDataLen  ); 
							}
						}
					}
			
					
					break;
				//default:
				//	sprintf ( TmpS, "(%s) (%s,%d) INVALID IOTYPE FOR VOIP", GetString_DeviceAll(&pAcsEvt->m_DeviceID), 
				//				GetString_IOType(pIOData->m_u16IoType),  pIOData->m_u16IoDataLen  ); 
				//	break;

				
			}
		//Fax Process....end

		}
		else //NO IP Device
		{
			char *p;
			p = (char *)(pIOData) + sizeof(Acs_IO_Data);
			switch( pIOData->m_u16IoType)
			{
			case XMS_IO_TYPE_DTMF:
				sprintf ( TmpS, "(%s) (%s,%d) [%s]", 
				GetString_DeviceAll(&pAcsEvt->m_DeviceID), 
				GetString_IOType(pIOData->m_u16IoType),  
				pIOData->m_u16IoDataLen, 
				p ); 
				break;
			case XMS_IO_TYPE_GTG:
				sprintf ( TmpS, "(%s) (%s,%d) [%c]", 
				GetString_DeviceAll(&pAcsEvt->m_DeviceID), 
				GetString_IOType(pIOData->m_u16IoType),  
				pIOData->m_u16IoDataLen, 
				*p ); 
				break;
			case XMS_IO_TYPE_FSK:
				sprintf ( TmpS, "(%s) (%s,Len:%d) [%d][%d][%d][%s]", 
				GetString_DeviceAll(&pAcsEvt->m_DeviceID), 
				GetString_IOType(pIOData->m_u16IoType),  
				pIOData->m_u16IoDataLen, 
				p[0],p[1],p[2],p ); 
				break;
			
			case XMS_IO_TYPE_PVD:
				sprintf ( TmpS, "(%s) (%s,%d) [%c]", 
				GetString_DeviceAll(&pAcsEvt->m_DeviceID), 
				GetString_IOType(pIOData->m_u16IoType),  
				pIOData->m_u16IoDataLen, 
				*p ); 
				break;
			default:
				break;
			}
			
		}

		}
		strcat ( TmpStr, TmpS );
		//AddMsg ( MSG_TYPE_EVENT, TmpStr );
		break;

	case XMS_EVT_CAS_MFC_START:
	case XMS_EVT_CAS_MFC_END:
		pCAS_ExtraInfo = (Acs_CAS_ExtraInfo_t *)FetchEventData(pAcsEvt);

		sprintf ( TmpS, "(%s) KA=%d, KD=%d)", GetString_DeviceAll(&pAcsEvt->m_DeviceID), 
			pCAS_ExtraInfo->m_u8KA, pCAS_ExtraInfo->m_u8KD );
		strcat ( TmpStr, TmpS );
		break;


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

		sprintf ( TmpS, ": %s(0x%X)", GetString_ErrorCode(pAcsUniFailure->m_s32AcsEvtErrCode), pAcsUniFailure->m_s32AcsEvtErrCode );
		strcat ( TmpStr, TmpS );

		if ( pAcsEvt->m_DeviceID.m_s16DeviceMain != 0 )
		{
			//Unifailure event that some device link each other
			sprintf ( TmpS, " (%s)", GetString_DeviceAll(&pAcsEvt->m_DeviceID) );
			strcat ( TmpStr, TmpS );
		}
		break;
	default:
		break;

	}

	AddMsg ( MSG_TYPE_EVENT, TmpStr );
}
Ejemplo n.º 21
0
DJ_Void EvtHandler(DJ_U32 esrParam)
{
	Acs_Evt_t *			    pAcsEvt = NULL;
	Acs_Dev_List_Head_t * pAcsDevList = NULL;


	pAcsEvt = (Acs_Evt_t *) esrParam;
	DispEventInfo ( pAcsEvt );

	switch ( pAcsEvt->m_s32EventType )
	{
		case XMS_EVT_QUERY_DEVICE:
			if ( IsSysMod(pAcsEvt->m_DeviceID.m_s8ModuleID) )
			{
				pAcsDevList = ( Acs_Dev_List_Head_t *) FetchEventData(pAcsEvt);

				//收到设备变化的事件,增加/调整 该设备资源
				AddDeviceRes ( pAcsDevList );
			}
			break; 
		case XMS_EVT_QUERY_ONE_DSP_END:
			if ( IsSysMod(pAcsEvt->m_DeviceID.m_s8ModuleID) )
			{
				AllDeviceRes[pAcsEvt->m_DeviceID.m_s8ModuleID].lFlag = 1;		// 该DSP可以用了

				OpenAllDevice_Dsp ( pAcsEvt->m_DeviceID.m_s8ModuleID );

				RefreshMapTable ( );

				ReDrawAll ();
			}
			break;

		case XMS_EVT_QUERY_DEVICE_END:	// 获取设备列表结束
			break;

		case XMS_EVT_OPEN_DEVICE:
			OpenDeviceOK ( &pAcsEvt->m_DeviceID );
			break;

		case XMS_EVT_DEVICESTATE:
			HandleDevState ( pAcsEvt );
			break;

		case XMS_EVT_UNIFAILURE:
			// must handle this event in your real System
			break;

		default:
			if ( pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_INTERFACE_CH  )
			{
				TrunkWork ( &M_OneTrunk(pAcsEvt->m_DeviceID), pAcsEvt );			
			}
			else if ( pAcsEvt->m_DeviceID.m_s16DeviceMain == XMS_DEVMAIN_VOICE )
			{
				DeviceID_t	*pDevID;

				pDevID = &M_OneVoice(pAcsEvt->m_DeviceID).UsedDevID;

				if ( pDevID->m_s16DeviceMain == XMS_DEVMAIN_INTERFACE_CH )
				{
					TrunkWork ( &M_OneTrunk(*pDevID), pAcsEvt );
				}
			}
			break;
	}
}
Ejemplo n.º 22
0
void VOIPWork ( VOIP_STRUCT *pOneVOIP, Acs_Evt_t *pAcsEvt )
{
	Acs_CallControl_Data   *pCallControl = NULL;
	VoIPCallPrivate_t      *voipCallPrivate = NULL;
	DeviceID_t				FreeVocDeviceID;
	char					FileName[256];
	char                    chTmpFilePath[256] = "";

	if (pOneVOIP == NULL || pAcsEvt == NULL)
		return;

	if ( pAcsEvt->m_s32EventType == XMS_EVT_CLEARCALL )	/*拆线事件*/
	{
		if (cfg_iVoiceCheck == 1)
		{
			StopPlayFile(&pOneVOIP->VocDevID);
			
			//删除录音文件
			GetFilePathName(pOneVOIP, chTmpFilePath);
			sprintf(FileName, "%s\\DemoRec.%0003d", chTmpFilePath, pOneVOIP->iSeqID);
			DeleteFile(FileName);
		}

		ResetVOIP ( pOneVOIP, pAcsEvt );
		Change_State(pOneVOIP, VOIP_FREE);

		return ; 
	}

	switch(pOneVOIP->State)
	{
	case VOIP_FREE:
		if ( pAcsEvt->m_s32EventType == XMS_EVT_CALLIN )	/*呼入事件*/
		{
			pCallControl = (Acs_CallControl_Data *)FetchEventData(pAcsEvt);

			ASSERT(pCallControl->m_PrivData.m_u32DataSize == sizeof(VoIPCallPrivate_t));
			voipCallPrivate = (VoIPCallPrivate_t *)&(pCallControl->m_PrivData);			

			XMS_ctsAlertCall ( g_acsHandle, &pOneVOIP->deviceID, NULL );

			XMS_ctsAnswerCallIn ( g_acsHandle, &pOneVOIP->deviceID, NULL );			
			
			pOneVOIP->iProtocol = voipCallPrivate->m_s32Protocol;

			//Caller Info
			strncpy(pOneVOIP->CallerAddr, voipCallPrivate->m_s8CallerAddress, sizeof(pOneVOIP->CallerAddr));			
			strncpy(pOneVOIP->CallerUserID, voipCallPrivate->m_s8CallerUserID, sizeof(pOneVOIP->CallerUserID));
			strncpy ( pOneVOIP->CallerNum, pCallControl->m_s8CallingNum, sizeof(pOneVOIP->CallerNum));
			pOneVOIP->iCallerPort = (unsigned short)voipCallPrivate->m_s32CallerPort;
			//

			//Callee Info
			strncpy(pOneVOIP->CalleeAddr, voipCallPrivate->m_s8CalleeAddress, sizeof(pOneVOIP->CalleeAddr));			
			strncpy(pOneVOIP->CalleeUserID, voipCallPrivate->m_s8CalleeUserID, sizeof(pOneVOIP->CalleeUserID));
			strncpy ( pOneVOIP->CalleeNum, pCallControl->m_s8CalledNum, sizeof(pOneVOIP->CalleeNum));			
			pOneVOIP->iCalleePort = (unsigned short)voipCallPrivate->m_s32CalleePort;
			//

			DrawMain_CallInfo( pOneVOIP );
			
			Change_State ( pOneVOIP, VOIP_WAIT_ANSWERCALL );
		}
		break;

	case VOIP_WAIT_ANSWERCALL:		
		if ( pAcsEvt->m_s32EventType == XMS_EVT_ANSWERCALL )	/*应答呼入完成事件*/
		{
			pCallControl = (Acs_CallControl_Data *)FetchEventData(pAcsEvt);

			if (cfg_iVoiceCheck == 1)
			{
				if ( SearchOneFreeVoice ( pOneVOIP,  &FreeVocDeviceID ) >= 0 )
				{
					pOneVOIP->u8PlayTag = 16;
					
					pOneVOIP->VocDevID = FreeVocDeviceID;
					
					M_OneVoice(FreeVocDeviceID).UsedDevID = pOneVOIP->deviceID; 
					
					DrawMain_VocInfo ( pOneVOIP );
					
					GetFilePathName(pOneVOIP, chTmpFilePath);
					sprintf(FileName, "%s\\DemoRec.%0003d", chTmpFilePath, pOneVOIP->iSeqID);		
					RecordFile ( pOneVOIP, FileName, 8000L*10, false);

					Change_State ( pOneVOIP, VOIP_RECORDFILE );					
				
				}
			}
			else
			{
				Change_State ( pOneVOIP, VOIP_WAITHANGUP );
			}
		}
		break;

	case VOIP_RECORDFILE:
		if ( CheckRecordEnd ( pOneVOIP, pAcsEvt) )	/*record完成事件*/
		{
			BindOneFreeVoice(pOneVOIP, pOneVOIP->VocDevID);
			Change_State ( pOneVOIP, VOIP_WAITBINDOK);
		}
		break;

	case VOIP_WAITBINDOK:
		if (pAcsEvt->m_s32EventType == XMS_EVT_SETPARAM)
		{
			GetFilePathName(pOneVOIP, chTmpFilePath);
			sprintf(FileName, "%s\\DemoRec.%0003d", chTmpFilePath, pOneVOIP->iSeqID);	
			pOneVOIP->u8PlayTag ++;
			PlayFile ( &pOneVOIP->VocDevID, FileName, pOneVOIP->u8PlayTag, true );

			Change_State (pOneVOIP, VOIP_PLAYRECORD);
		}	
		break;

	case VOIP_PLAYRECORD:
		if ( CheckPlayEnd ( pOneVOIP, pAcsEvt) )	/*play完成事件*/
		{
			// 主动挂机
			UnBindOneVoice(pOneVOIP);

			XMS_ctsClearCall ( g_acsHandle, &pOneVOIP->deviceID, 0, NULL );			

			Change_State ( pOneVOIP, VOIP_WAITHANGUP );
		}
		break;
	}
}
Ejemplo n.º 23
0
//////////////////////////////////////////////////////////////////////////
// XMS_EVT_RECVIODATA event handler (H.245 UserInputIndication/SIP INFO/RFC 2833 DTMF)
void OnRecvIOData(Acs_Evt_t *pAcsEvt)
{
	Acs_IO_Data *pIOEvt = (Acs_IO_Data *)FetchEventData(pAcsEvt);

	TRACE(_T("Device[%02d][%02d][%02d] receive IO Data\n"),
		pAcsEvt->m_DeviceID.m_s8ModuleID,
		pAcsEvt->m_DeviceID.m_s16DeviceMain,
		pAcsEvt->m_DeviceID.m_s16ChannelID);

	int iDevice = pAcsEvt->m_DeviceID.m_s16ChannelID;

	int iDtmfLen = strlen(g_deviceVoIP[iDevice].szDtmf);
	if (iDtmfLen >= sizeof(g_deviceVoIP[iDevice].szDtmf)-1)
	{
		memset(g_deviceVoIP[iDevice].szDtmf, 0, sizeof(g_deviceVoIP[iDevice].szDtmf));
		iDtmfLen = 0;
	}

	char dtmf = '?';

	switch (pIOEvt->m_u16IoType)
	{
	case XMS_IO_TYPE_VOIP_REGREQUEST:
		if (pIOEvt->m_u16IoDataLen == sizeof(Acs_VoIP_REGSTATE))
		{
			// check client's info
			Acs_VoIP_REGSTATE *pRegRequest = (Acs_VoIP_REGSTATE *)FetchIOData(pAcsEvt);
			TRACE(_T("Client registrates from: \"%s\" %s@%s:%d\n"),
				pRegRequest->m_s8UserID, pRegRequest->m_s8TelNo, pRegRequest->m_s8Address, pRegRequest->m_u16Port);

			// response to registration
			// if authentication is disabled,
			//   set Acs_VoIP_REGRESP::m_u8Granted to 0/1 to grant/disgrant registration
			// if authentication is enabled,
			//   set Acs_VoIP_REGRESP::m_u8Granted to 0, and fill Acs_VoIP_REGRESP::m_s8Password to authenticate,
			//   or
			//   set Acs_VoIP_REGRESP::m_u8Granted to 0, and leave Acs_VoIP_REGRESP::m_s8Password empty to disgrant registration,
			//   or
			//   set Acs_VoIP_REGRESP::m_u8Granted to 1 to grant registration without authenticating.
			Acs_VoIP_REGRESP regResponse = {0};
			regResponse.m_u16SlotID = pRegRequest->m_u16SlotID;
			regResponse.m_u8Granted = 1;
//			strcpy(regResponse.m_s8Password, "passwd");
			XMS_ctsSendIOData(g_acsHandle, &g_deviceVoIP[iDevice].device, XMS_IO_TYPE_VOIP_REGRESPONSE,
				sizeof(regResponse), &regResponse);
		}
		break;
	case XMS_IO_TYPE_VOIP_REGSTATE:
		if (pIOEvt->m_u16IoDataLen == sizeof(Acs_VoIP_REGSTATE))
		{
			Acs_VoIP_REGSTATE *pRegState = (Acs_VoIP_REGSTATE *)FetchIOData(pAcsEvt);
			TRACE(_T("Client %s on slot(%d): %s@%s:%d\n"),
				pRegState->m_u8State?_T("registered"):_T("unregistered"),
				pRegState->m_u16SlotID,
				pRegState->m_s8TelNo, pRegState->m_s8Address, pRegState->m_u16Port);
		}
		break;
	case XMS_IO_TYPE_VOIP_H245UII:
		if (pIOEvt->m_u16IoDataLen == sizeof(Acs_VoIP_H245UII))
		{
			Acs_VoIP_H245UII *h245Uii = (Acs_VoIP_H245UII *)FetchIOData(pAcsEvt);
			dtmf = h245Uii->m_s8Signal;
			g_deviceVoIP[iDevice].szDtmf[iDtmfLen] = dtmf;
		}
		break;
	case XMS_IO_TYPE_VOIP_SIPINFO:
		if (pIOEvt->m_u16IoDataLen == sizeof(Acs_VoIP_SIPINFO))
		{
			Acs_VoIP_SIPINFO *sipInfo = (Acs_VoIP_SIPINFO *)FetchIOData(pAcsEvt);
			if (strcmp(sipInfo->m_s8ContentType, "application/dtmf") == 0)
				sscanf(sipInfo->m_s8Body, "dtmf=%c", &dtmf);
			g_deviceVoIP[iDevice].szDtmf[iDtmfLen] = dtmf;
		}
		break;
	case XMS_IO_TYPE_VOIP_RTPDTMF:
		if (pIOEvt->m_u16IoDataLen == sizeof(Acs_VoIP_RTPDTMF))
		{
			Acs_VoIP_RTPDTMF *rtpDtmf = (Acs_VoIP_RTPDTMF *)FetchIOData(pAcsEvt);
			dtmf = rtpDtmf->m_s8EventChar;
			g_deviceVoIP[iDevice].szDtmf[iDtmfLen] = dtmf;
		}
		break;
	case XMS_IO_TYPE_VOIP_RTPTONE:
		if (pIOEvt->m_u16IoDataLen == sizeof(Acs_VoIP_RTPTONE))
		{
			Acs_VoIP_RTPTONE *rtpTone = (Acs_VoIP_RTPTONE *)FetchIOData(pAcsEvt);
		}
		break;
	case XMS_IO_TYPE_VOIP_REFER_NOTIFY:
		if (pIOEvt->m_u16IoDataLen == sizeof(Acs_VoIP_ReferResult))
		{
			Acs_VoIP_ReferResult *pTransferResult = (Acs_VoIP_ReferResult *)FetchIOData(pAcsEvt);
			TRACE("XMS_IO_TYPE_VOIP_REFER_NOTIFY state:%d reason:%d\n", pTransferResult->m_u8State, pTransferResult->m_u8Reason);
			if(pTransferResult->m_u8State==17)
			{
				if(pTransferResult->m_u8Reason==23 || pTransferResult->m_u8Reason==24)
				{
					RetCode_t ret = XMS_ctsClearCall(g_acsHandle, &g_deviceVoIP[iDevice].device, 0, NULL);
				}
				else
				{
					VoIPCallModifyPrivate_t callModify = {0};
					callModify.m_PrivateData.m_u32DataSize = sizeof(VoIPCallModifyPrivate_t);
					callModify.m_u8MediaCapNum = 0;
					// set media mode to send/recv
					callModify.u8MediaMode = 0;
					
					RetCode_t ret = XMS_ctsSendIOData(g_acsHandle, &g_deviceVoIP[iDevice].device, XMS_IO_TYPE_VOIP_CALLMODIFY, sizeof(VoIPCallModifyPrivate_t), (void*)&callModify);
				}
			}
		}
		break;
	}

	if (pIOEvt->m_u16IoType != XMS_IO_TYPE_VOIP_REGREQUEST &&
		pIOEvt->m_u16IoType != XMS_IO_TYPE_VOIP_REGSTATE)
		g_pDlg->refreshListIP(iDevice);
}
Ejemplo n.º 24
0
void	DispEventInfo ( Acs_Evt_t *pAcsEvt )
{
	char	TmpStr[256]={0};
	char	TmpS[256]={0};
	DeviceID_t	*pLinkTrkDevID;
	Acs_Dev_List_Head_t * pAcsDevList = NULL;
	Acs_UniFailure_Data * pAcsUniFailure = NULL;
	Acs_GeneralProc_Data * pAcsProcData=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_CALLOUT:
	case XMS_EVT_CALLIN:
	case XMS_EVT_ANALOG_INTERFACE:
	case XMS_EVT_LINKDEVICE:
	case XMS_EVT_UNLINKDEVICE:
	case XMS_EVT_SETPARAM:
	case XMS_EVT_PLAY:
	case XMS_EVT_RECORD:		
	case XMS_EVT_OPEN_DEVICE:
	case XMS_EVT_CONTROLPLAY:
	case XMS_EVT_CONTROLRECORD:
	case XMS_EVT_CLEARCALL:
	case XMS_EVT_ANSWERCALL:
	case XMS_EVT_CAS_MFC_START:
	case XMS_EVT_CAS_MFC_END:
	case XMS_EVT_SENDIODATA:
	case XMS_EVT_DEV_TIMER:
		sprintf ( TmpS, "(%s, %s, %d, %d)", 
			GetString_DeviceMain(pAcsEvt->m_DeviceID.m_s16DeviceMain),
			GetString_DeviceSub(pAcsEvt->m_DeviceID.m_s16DeviceSub),
			pAcsEvt->m_DeviceID.m_s8ModuleID,
			pAcsEvt->m_DeviceID.m_s16ChannelID);
		strcat ( TmpStr, TmpS );
		break;
	case XMS_EVT_DEVICESTATE:
		{	
			char StateStr[100]={0};
			pAcsProcData = (Acs_GeneralProc_Data *)FetchEventData(pAcsEvt);
			GetString_LineState ( StateStr, pAcsProcData->m_s32DeviceState );
			sprintf ( TmpS, "(%s, %s, %d, %d), %s", 
				GetString_DeviceMain(pAcsEvt->m_DeviceID.m_s16DeviceMain),
				GetString_DeviceSub(pAcsEvt->m_DeviceID.m_s16DeviceSub),
				pAcsEvt->m_DeviceID.m_s8ModuleID,
				pAcsEvt->m_DeviceID.m_s16ChannelID,
				StateStr);
			strcat ( TmpStr, TmpS );
		}

		break;
	case XMS_EVT_RECVIODATA:
		{
			char		*p;
			Acs_IO_Data				*pIOData = NULL;
			pIOData = (Acs_IO_Data *)FetchEventData(pAcsEvt);	
			pLinkTrkDevID = &M_OneVoice(pAcsEvt->m_DeviceID).UsedDevID;

			if ( ( pIOData->m_u16IoType == XMS_IO_TYPE_DTMF ) && ( pIOData->m_u16IoDataLen > 0 ) )
			{
				p = (char *)FetchIOData(pAcsEvt);
				sprintf(TmpS,"[%c], (%s, %s, %d, %d), LinkTrk(%s, %s, %d, %d)",*p, 
					GetString_DeviceMain(pAcsEvt->m_DeviceID.m_s16DeviceMain),
					GetString_DeviceSub(pAcsEvt->m_DeviceID.m_s16DeviceSub),
					pAcsEvt->m_DeviceID.m_s8ModuleID,
					pAcsEvt->m_DeviceID.m_s16ChannelID,
					GetString_DeviceMain(pLinkTrkDevID->m_s16DeviceMain),
					GetString_DeviceSub(pLinkTrkDevID->m_s16DeviceSub),
					pLinkTrkDevID->m_s8ModuleID,
					pLinkTrkDevID->m_s16ChannelID);				
				strcat ( TmpStr, TmpS );
			}else if ( (pIOData->m_u16IoType == XMS_IO_TYPE_FSK) && (pIOData->m_u16IoDataLen > 0 ))
			{
				p = (char *)FetchIOData(pAcsEvt);
				sprintf(TmpS,"[%s], (%s, %s, %d, %d), LinkTrk(%s, %s, %d, %d)",p, 
					GetString_DeviceMain(pAcsEvt->m_DeviceID.m_s16DeviceMain),
					GetString_DeviceSub(pAcsEvt->m_DeviceID.m_s16DeviceSub),
					pAcsEvt->m_DeviceID.m_s8ModuleID,
					pAcsEvt->m_DeviceID.m_s16ChannelID,
					GetString_DeviceMain(pLinkTrkDevID->m_s16DeviceMain),
					GetString_DeviceSub(pLinkTrkDevID->m_s16DeviceSub),
					pLinkTrkDevID->m_s8ModuleID,
					pLinkTrkDevID->m_s16ChannelID);				
				strcat ( TmpStr, TmpS );
				
			}else
			{
				sprintf(TmpS,", m_u16IoType:%d, (%s, %s, %d, %d)",
					pIOData->m_u16IoType,
					GetString_DeviceMain(pAcsEvt->m_DeviceID.m_s16DeviceMain),
					GetString_DeviceSub(pAcsEvt->m_DeviceID.m_s16DeviceSub),
					pAcsEvt->m_DeviceID.m_s8ModuleID,
					pAcsEvt->m_DeviceID.m_s16ChannelID);				
				strcat ( TmpStr, TmpS );
			}
		}
		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_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;

	}
	WriteLog(LEVEL_DEBUG, TmpStr);
}