⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cstatst2.cpp

📁 csta协议的开发
💻 CPP
📖 第 1 页 / 共 4 页
字号:

	if (dlg.DoModal() != IDOK) return;

	strcpy(((PrivateData_t*)privData)->vendor, "Alcatel");
	unsigned short lg = sizeof (long) +			// 4 for object id
						sizeof(InterruptTransaction_t);
	((PrivateData_t*)privData)->length = lg;


	InterruptTransaction_t my_interruptTransaction;

	// Process the connectionId
	my_interruptTransaction.connectionID.callID = atol (dlg.m_edCallID);
	strcpy (my_interruptTransaction.connectionID.deviceID,
			dlg.m_edDeviceID);
	my_interruptTransaction.connectionID.devIDType = (ConnectionID_Device_t) dlg.m_iEscapeDeviceType;

	// process the boolean
	my_interruptTransaction.interruptible = dlg.m_bInterruptible;

	AlcatelCstaPrivObject_t my_alcatelCstaPrivObject;
	my_alcatelCstaPrivObject.objectId = interruptTransaction_Id;
	my_alcatelCstaPrivObject.u.interruptTransaction = my_interruptTransaction;

	memcpy (((PrivateData_t*)privData)->data, (char*)&my_alcatelCstaPrivObject, lg);

	  m_nRetCode = cstaEscapeService (m_acsHandle,
                  (InvokeID_t)0,
                  (PrivateData_t*)privData);
	if (m_nRetCode < 0)
	{
		MessageBoxError ("cstaEscapeService", m_nRetCode);
		return;
	}

	DisplayTheEvent ("CSTA Escape Service Inter");
	return;
}
// **************************************************************************
//	Added by G.L. 26 August 98
//  CstaEscapeSetDeviceInService 
// **************************************************************************
void CMainWind::CstaEscapeSetDeviceInService()
{
	CEscSetDeviceInservice dlg;
	char privData[160]; 

	if (dlg.DoModal() != IDOK) return;

	strcpy(((PrivateData_t*)privData)->vendor, "Alcatel");
	unsigned short lg = sizeof (long) +			// 4 for object id
						sizeof(SetDeviceInService_t);
	((PrivateData_t*)privData)->length = lg;

	SetDeviceInService_t	my_setDeviceInService;

	// Process the device Id
	strcpy (my_setDeviceInService.deviceID,dlg.m_edDeviceID);

	// process the boolean
	my_setDeviceInService.setInService = dlg.m_bSetInService;

	AlcatelCstaPrivObject_t my_alcatelCstaPrivObject;
	my_alcatelCstaPrivObject.objectId = setDeviceInService_Id;
	my_alcatelCstaPrivObject.u.setDeviceInService = my_setDeviceInService;

	memcpy (((PrivateData_t*)privData)->data, (char*)&my_alcatelCstaPrivObject, lg);

	  m_nRetCode = cstaEscapeService (m_acsHandle,
                  (InvokeID_t)0,
                  (PrivateData_t*)privData);
	if (m_nRetCode < 0)
	{
		MessageBoxError ("cstaEscapeService", m_nRetCode);
		return;
	}

	DisplayEventTitle ("CSTA Escape Service Set Device In Service");
	return;
}
// **************************************************************************
//	Added by G.L.  August 27 98
//  CstaAssociateData 
// **************************************************************************
void CMainWind::CstaAssociateData()
{
	CAssociateData dlg;
	dlg.m_iEscapeDeviceType = DYNAMIC_ID;
	dlg.m_edDeviceID = myDeviceId;
	dlg.m_edCallID = mainCallID;
	char privData[SIZE_OF_ALCATEL_PRIVATE_DATA];
	memset (privData,0,SIZE_OF_ALCATEL_PRIVATE_DATA);
	int nbOfPrivateData = 0;
	BOOL boolVrid = TRUE;
	BOOL boolACR = TRUE;
	int i = 0;
	
	if (dlg.DoModal() != IDOK) return;
	ConnectionID_t		connectionID;
	
    connectionID.callID = atol (dlg.m_edCallID);
    strcpy (connectionID.deviceID, dlg.m_edDeviceID);
    connectionID.devIDType = (ConnectionID_Device_t)dlg.m_iEscapeDeviceType;
	
	char my_accountInfo[32];
	strcpy(my_accountInfo,dlg.m_iAccountCode);
	
	char my_authCode[32];
	strcpy(my_authCode,dlg.m_iAuthCode);
	
	CorrelatorData_t	my_correlatorData;
	if (0 == dlg.m_edCorrelator.Compare("0"))
	{
		my_correlatorData.length = 0;
		my_correlatorData.correlatorData [0] = '\0';
	}
	else
	{
		strcpy (my_correlatorData.correlatorData, dlg.m_edCorrelator);
		my_correlatorData.length = dlg.m_edCorrelator.GetLength( );
	}
	
	
	if ( ! dlg.m_sVrid.IsEmpty())	nbOfPrivateData++;
	if ( !dlg.m_acrDeviceID.IsEmpty() || 0 != dlg.m_iacrSkillNumber)	nbOfPrivateData++;
	
	
	CstaCommonArguments_t *cstaCommonArgumentsPt = (CstaCommonArguments_t*) ((PrivateData_t FAR*)privData)->data;
	
	for (i = 0; i < nbOfPrivateData ; i++)
	{
		if (( ! dlg.m_sVrid.IsEmpty()) && boolVrid )
		{				
			
			OtherPrivateData_t my_otherPrivateData;
			memset(my_otherPrivateData.privateIdentifier,0,MAX_LENGTH_PRIVATE_IDENTIFIER);
			memset(my_otherPrivateData.privateData,0,MAX_LENGTH_PRIVATE_DATA);
			unsigned short shortSwappedValue;
			//shortSwappedValue  = ntohs((unsigned int) VIOLA_DATA);
			shortSwappedValue  =  VIOLA_DATA;
			memcpy (my_otherPrivateData.privateIdentifier,&shortSwappedValue,2);
			my_otherPrivateData.lengthPrivateIdentifier = 2;
			
			int vrid = atoi (dlg.m_sVrid);
			int lenvrid = VIOLA_CRID_LENGTH; 
			char tmpbuf[4];
			memset (tmpbuf,0,4);
			if (vrid > 65535)
			{ // it is a long
				unsigned long longVcrid;
				longVcrid  = ntohl((unsigned int) vrid);
				memcpy (tmpbuf,&longVcrid,lenvrid);
				my_otherPrivateData.privateData[1] = tmpbuf[3];
				my_otherPrivateData.privateData[2] = tmpbuf[2];
				my_otherPrivateData.privateData[3] = tmpbuf[1];
				my_otherPrivateData.privateData[4] = tmpbuf[0];
			}
			else
			{ // it is a short
				unsigned short shortVcrid;
				shortVcrid  = ntohs((unsigned int) vrid);
				memcpy (tmpbuf,&shortVcrid,lenvrid);
				my_otherPrivateData.privateData[1] = tmpbuf[1];
				my_otherPrivateData.privateData[2] = tmpbuf[0];
			}
			
			my_otherPrivateData.privateData[0] = VIOLA_CRID;
			my_otherPrivateData.lengthPrivateData =  1 + lenvrid;
			
			cstaCommonArgumentsPt->privateData.AlcCstaPrivPtOffsetArray[i] = (i * sizeof(AlcatelCstaPrivObject_t));
			
			AlcatelCstaPrivObject_t *alcatelCstaPrivObjectPt = (AlcatelCstaPrivObject_t*)((char*) cstaCommonArgumentsPt->privateData.privateHeap +
				cstaCommonArgumentsPt->privateData.AlcCstaPrivPtOffsetArray[i]);
			
			alcatelCstaPrivObjectPt->objectId = otherPrivateData_Id;
			alcatelCstaPrivObjectPt->u.otherPrivateData = my_otherPrivateData;
			boolVrid = FALSE;
			continue;
		}
		if ( (!dlg.m_acrDeviceID.IsEmpty() || 0 != dlg.m_iacrSkillNumber) && boolACR )
		{	
			ACRAttributeList_t my_ACRAttributeList;

			strcpy (my_ACRAttributeList.acrAgentNumber,dlg.m_acrDeviceID);
			my_ACRAttributeList.count = 1;
			memset (my_ACRAttributeList.elementArray,0,MAX_NUMBER_OF_ELEMENT* sizeof (Element_t));

			my_ACRAttributeList.elementArray[0].skillNumber = dlg.m_iacrSkillNumber;
			my_ACRAttributeList.elementArray[0].acrStatus = dlg.m_bacrStatus;
			my_ACRAttributeList.elementArray[0].expertEvaluationLevel = dlg.m_iacrExpertEval;

			/*my_ACRAttributeList.count = MAX_NUMBER_OF_ELEMENT;
			for (int m = 0; m < MAX_NUMBER_OF_ELEMENT;  m++)
			{
			my_ACRAttributeList.elementArray[m].skillNumber = dlg.m_iacrSkillNumber;
			my_ACRAttributeList.elementArray[m].acrStatus = dlg.m_bacrStatus;
			my_ACRAttributeList.elementArray[m].expertEvaluationLevel = dlg.m_iacrExpertEval;
			}*/
			

			cstaCommonArgumentsPt->privateData.AlcCstaPrivPtOffsetArray[i] = (i * sizeof(AlcatelCstaPrivObject_t));
			
			AlcatelCstaPrivObject_t *alcatelCstaPrivObjectPt = (AlcatelCstaPrivObject_t*)((char*) cstaCommonArgumentsPt->privateData.privateHeap +
				cstaCommonArgumentsPt->privateData.AlcCstaPrivPtOffsetArray[i]);

			alcatelCstaPrivObjectPt->objectId = acrAttributeList_Id;
			alcatelCstaPrivObjectPt->u.aCRAttributeList = my_ACRAttributeList;
			boolACR = FALSE;
			continue;
		}
		
	}//end for
	
	if (nbOfPrivateData != 0)
	{
		CopyPrivateData(nbOfPrivateData,cstaCommonArgumentsPt, privData);
		
		m_nRetCode = cstaAssociateData(	m_acsHandle,
			(InvokeID_t)0,
			(ConnectionID_t		FAR *)&connectionID,
			(AccountInfo_t		FAR*)&my_accountInfo,
			(AuthCode_t			FAR*)&my_authCode,
			(CorrelatorData_t	FAR*)&my_correlatorData,
			(PrivateData_t FAR *) &privData);
	}
	else 
	{
		
		m_nRetCode = cstaAssociateData(	m_acsHandle,
			(InvokeID_t)0,
			(ConnectionID_t		FAR *)&connectionID,
			(AccountInfo_t		FAR*)&my_accountInfo,
			(AuthCode_t			FAR*)&my_authCode,
			(CorrelatorData_t	FAR*)&my_correlatorData,
			NULL);
	}
    if (m_nRetCode < 0) {
		MessageBoxError ("cstaAssociateData", m_nRetCode);
		return;
    }
	
	CString eventString;
	
    DisplayEventTitle("CSTA REQUEST Associate Data: ");
	eventString += AddConnectionID (connectionID);
	DisplayTheEvent (eventString);
	
	eventString.Format("Account code: %s", my_accountInfo);
	DisplayTheEvent (eventString);  	
	
	eventString.Format("Auth Code: %s", my_authCode);
	DisplayTheEvent (eventString);  
	
	eventString.Format("Correlator Data: %s", my_correlatorData.correlatorData);
	DisplayTheEvent (eventString);  
}

void CMainWind::CstaAssociateDataConfEvent () {
  DisplayTheEvent ("CSTA CONFIRM Associate Data");
  return;
}
// **************************************************************************
//	Added by G.L.  August 31 98
//  CstaHostIdentification 
// **************************************************************************
void CMainWind::CstaHostIdentification(){
CEscHostIdentification dlg;
dlg.m_cHostIdentification = "VIOLA.155.132.39.149";
char privData[SIZE_OF_ALCATEL_PRIVATE_DATA];
memset (privData,0,SIZE_OF_ALCATEL_PRIVATE_DATA);
int nbOfPrivateData = 1;
 

	if (dlg.DoModal() != IDOK) return;

	CstaCommonArguments_t *cstaCommonArgumentsPt = (CstaCommonArguments_t*) ((PrivateData_t FAR*)privData)->data;

	cstaCommonArgumentsPt->privateData.AlcCstaPrivPtOffsetArray[0] = 0;
	AlcatelCstaPrivObject_t *alcatelCstaPrivObjectPt = (AlcatelCstaPrivObject_t*)((char*) cstaCommonArgumentsPt->privateData.privateHeap +
										cstaCommonArgumentsPt->privateData.AlcCstaPrivPtOffsetArray[0]);

	HostStatus_t		 my_hostStatus;

	switch (dlg.m_iHostStatus)
	{
	case 0: //connected
	my_hostStatus = HOST_STATUS_CONNECTED;
	break;
	case 1: //disable
	my_hostStatus = HOST_STATUS_DISABLED;
	break;
	case 2: //disconnect
	my_hostStatus = HOST_STATUS_DECONNECTED;
	break;
	case 3: //enable
	my_hostStatus = HOST_STATUS_ENABLED;
	break;
	}
	HostIdentification_t my_hostIdentification;
	strcpy (my_hostIdentification.hostIdentification,dlg.m_cHostIdentification);
	
	alcatelCstaPrivObjectPt->objectId = hostIdentification_Id;
	alcatelCstaPrivObjectPt->u.hostIdentification = my_hostIdentification;

	CopyPrivateData(nbOfPrivateData,cstaCommonArgumentsPt, privData);

	  m_nRetCode = cstaSendIvrStat (m_acsHandle,
                  (InvokeID_t)0,
				  (HostStatus_t	 FAR *) &my_hostStatus,
                  (PrivateData_t FAR *)	&privData);
	if (m_nRetCode < 0)
	{
		MessageBoxError ("cstaSendIvrStat", m_nRetCode);
		return;
	}
	DisplayEventTitle ("CSTA Send IVR Status ");
}
// **************************************************************************
//	Added by G.L.  Sept 10 98
//  CstaSupervisorAssistRequest 
// **************************************************************************
void CMainWind::CstaSupervisorAssistRequest()
{
CEscSuperAssistRequest   dlg;
char privData[SIZE_OF_ALCATEL_PRIVATE_DATA];
memset (privData,0,SIZE_OF_ALCATEL_PRIVATE_DATA);

	if (dlg.DoModal() != IDOK) return;

	strcpy(((PrivateData_t*)privData)->vendor, "Alcatel");
	unsigned short lg = sizeof (long) +			// 4 for object id
						sizeof(SupervisorAssistRequest_t);
	((PrivateData_t*)privData)->length = lg;


    SupervisorAssistRequest_t my_SupervisorAssistRequest;
	strcpy (my_SupervisorAssistRequest.device,dlg.m_sDeviceID);

	AlcatelCstaPrivObject_t my_alcatelCstaPrivObject;
	my_alcatelCstaPrivObject.objectId = supervisorAssistRequest_Id;
	my_alcatelCstaPrivObject.u.supervisorAssistRequest = my_SupervisorAssistRequest;

	memcpy (((PrivateData_t*)privData)->data, (char*)&my_alcatelCstaPrivObject, lg);

	  m_nRetCode = cstaEscapeService (m_acsHandle,
                  (InvokeID_t)0,
                  (PrivateData_t*)privData);
	if (m_nRetCode < 0)
	{
		MessageBoxError ("cstaEscapeService", m_nRetCode);
		return;
	}

	DisplayEventTitle ("CSTA Escape Service : Supervisor Assist Request");
	return;

}
// **************************************************************************
//	Added by G.L.  Sept 11 98
//  CstaSupervisorAssistCancel 
// **************************************************************************
void CMainWind::CstaSupervisorAssistCancel()
{
CEcsSuperAssistCancel dlg;
char privData[SIZE_OF_ALCATEL_PRIVATE_DATA];
memset (privData,0,SIZE_OF_ALCATEL_PRIVATE_DATA);

	if (dlg.DoModal() != IDOK) return;

	strcpy(((PrivateData_t*)privData)->vendor, "Alcatel");
	unsigned short lg = sizeof (long) +			// 4 for object id
						sizeof(SupervisorAssistCancel_t);
	((PrivateData_t*)privData)->length = lg;


    SupervisorAssistCancel_t my_SupervisorAssistCancel;
	strcpy (my_SupervisorAssistCancel.requestingDevice,dlg.m_sDeviceIDRequesting);
	strcpy (my_SupervisorAssistCancel.otherDevice,dlg.m_sDeviceIDOther);

	AlcatelCstaPrivObject_t my_alcatelCstaPrivObject;
	my_alcatelCstaPrivObject.objectId = supervisorAssistCancel_Id;
	my_alcatelCstaPrivObject.u.supervisorAssistCancel = my_SupervisorAssistCancel;

	memcpy (((PrivateData_t*)privData)->data, (char*)&my_alcatelCstaPrivObject, lg);

	  m_nRetCode = cstaEscapeService (m_acsHandle,
                  (InvokeID_t)0,
                  (PrivateData_t*)privData);
	if (m_nRetCode < 0)
	{
		MessageBoxError ("cstaEscapeService", m_nRetCode);
		return;
	}

	DisplayEventTitle ("CSTA Escape Service : Supervisor Assist Cancel");
	return;
}
/*YB 240800+*/
VOID CALLBACK AutoReconnect(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
{
	((CMainWind*) AfxGetMainWnd())->AcsOpenStream(ST_CSTA2);
  return;
}
void CMainWind::TryToReconnect()
{
	if (!m_bAutoReconnect) {
		m_bAutoReconnect = TRUE;
		my_reconnectTimer = ::SetTimer(NULL, 0, 5000, AutoReconnect);

		DisplayEventTitle ("TryToReconnect Started");
	}
  return;
}
/*YB 240800-*/
VOID CALLBACK AutoKeepAliveTimer(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
{
	//CstaSysStatReqConfEventTimer ();
	((CMainWind*) AfxGetMainWnd())->CstaSysStatReq ();
  //::KillTimer(hwnd, idEvent);
  return;
}
// **************************************************************************
//	Added by G.L.  Sept 22 98
//  AutoKeepalive 
// **************************************************************************
void CMainWind::AutoKeepalive()
{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -