|
|
/*
* File: iconnect.h * * Network audio connection interface header file. * * Revision History: * * 04/15/96 mikev created */
#ifndef _ICONNECT_H
#define _ICONNECT_H
#include "icomchan.h"
#include "apierror.h"
// RES_PAIR contains an instance of a matching set of local and remote
// capability IDs.
typedef struct res_pair { MEDIA_FORMAT_ID idLocal; // locally unique ID
MEDIA_FORMAT_ID idRemote; // remote's ID
MEDIA_FORMAT_ID idPublicLocal; // the public ID that corresponds to the (private) idLocal
}RES_PAIR, *PRES_PAIR;
typedef enum { AT_H323_ID =1, // unicode string (typically user name or full email address)
AT_H323_E164, // unicode E164
AT_INVALID // this always goes last. it marks the end of valid values
}ALIAS_ADDR_TYPE;
typedef struct { ALIAS_ADDR_TYPE aType; WORD wDataLength; // UNICODE character count
LPWSTR lpwData; // UNICODE data.
} H323ALIASNAME, *P_H323ALIASNAME;
typedef struct { WORD wCount; // # of entries in array of H323ALIASNAME
P_H323ALIASNAME pItems; // points to array of H323ALIASNAME
} H323ALIASLIST, *P_H323ALIASLIST;
typedef enum { CLS_Idle, CLS_Connecting, CLS_Inuse, CLS_Listening, CLS_Disconnecting, CLS_Alerting }ConnectStateType;
//
// call progress codes
//
#define CONNECTION_CONNECTED 0x00000001 // connected at network level
#define CONNECTION_RECEIVED_DISCONNECT 0x00000002 // other end disconnected
#define CONNECTION_CAPABILITIES_READY 0x00000003 // capabilities have been exchanged
#define CONNECTION_PROCEEDING 0x00000005 // "ringing"
#define CONNECTION_READY 0x00000006 // start talking!
#define CONNECTION_REJECTED 0x00000007 // received a rejection
#define CONNECTION_DISCONNECTED 0x00000008 // this end is now disconnected
#define CONNECTION_BUSY 0x00000012 // busy signal
#define CONNECTION_ERROR 0x00000013
//
// Call completion summary codes ("Reason") for disconnecting or being rejected.
// This is a "first error" code. It is assigned its value at the first detectable
// event which is known to terminate a call.
//
// The IConfAdvise implementation bears the responsibility for preserving the
// summary codes. Control channel implementations (IControlChannel) supply the
// best known summary code for each event, regardless of prior events.
//
#define CCR_INVALID_REASON 0 // this indicates that no reason has been assigned
#define CCR_UNKNOWN MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 1)
#define CCR_LOCAL_DISCONNECT MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 2)
#define CCR_REMOTE_DISCONNECT MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 3)
#define CCR_REMOTE_REJECTED MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 4)
#define CCR_REMOTE_BUSY MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 5)
#define CCR_LOCAL_PROTOCOL_ERROR MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 6)
#define CCR_REMOTE_PROTOCOL_ERROR MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 7)
#define CCR_INCOMPATIBLE_VERSION MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 8)
#define CCR_LOCAL_SYSTEM_ERROR MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 9)
#define CCR_REMOTE_SYSTEM_ERROR MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 10)
#define CCR_LOCAL_MEDIA_ERROR MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 11)
#define CCR_REMOTE_MEDIA_ERROR MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 12)
#define CCR_LOCAL_REJECT MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 13)
#define CCR_LOCAL_BUSY MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 14)
#define CCR_INCOMPATIBLE_CAPS MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 15) // no capabilities in common
#define CCR_NO_ANSWER_TIMEOUT MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 16)
#define CCR_GK_NO_RESOURCES MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 17)
#define CCR_LOCAL_SECURITY_DENIED MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 18)
#define CCR_REMOTE_SECURITY_DENIED MAKE_CUSTOM_HRESULT(SEVERITY_SUCCESS, TRUE, FACILITY_CALLSUMMARY, 19)
//
// IH323Endpoint
//
#undef INTERFACE
#define INTERFACE IH323Endpoint
DECLARE_INTERFACE( IH323Endpoint ) { STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR * ppvObj) PURE; STDMETHOD_(ULONG,AddRef) (THIS) PURE; STDMETHOD_(ULONG,Release) (THIS) PURE;
STDMETHOD(SetAdviseInterface)(THIS_ IH323ConfAdvise *pH323ConfAdvise) PURE; STDMETHOD(ClearAdviseInterface)(THIS) PURE; STDMETHOD(PlaceCall)(THIS_ BOOL bUseGKResolution, PSOCKADDR_IN pCallAddr, P_H323ALIASLIST pDestinationAliases, P_H323ALIASLIST pExtraAliases, LPCWSTR pCalledPartyNumber, P_APP_CALL_SETUP_DATA pAppData) PURE; STDMETHOD(Disconnect)(THIS) PURE; STDMETHOD(GetState)(THIS_ ConnectStateType *pState) PURE; STDMETHOD(GetRemoteUserName)(THIS_ LPWSTR lpwszName, UINT uSize) PURE; STDMETHOD(GetRemoteUserAddr)(THIS_ PSOCKADDR_IN psinUser) PURE; STDMETHOD(AcceptRejectConnection)(THIS_ CREQ_RESPONSETYPE Response) PURE; STDMETHOD_(HRESULT, GetSummaryCode)(THIS) PURE; STDMETHOD(CreateCommChannel)(THIS_ LPGUID pMediaGuid, ICommChannel **ppICommChannel, BOOL fSend) PURE; STDMETHOD (ResolveFormats)(THIS_ LPGUID pMediaGuidArray, UINT uNumMedia, PRES_PAIR pResOutput) PURE; STDMETHOD(GetVersionInfo)(THIS_ PCC_VENDORINFO *ppLocalVendorInfo, PCC_VENDORINFO *ppRemoteVendorInfo) PURE; };
#endif //#ifndef _ICONNECT_H
|