749 lines
22 KiB
C
749 lines
22 KiB
C
|
/****************************************************************************/
|
||
|
// tgcc.h
|
||
|
//
|
||
|
// TS GCC layer include file.
|
||
|
//
|
||
|
// Copyright (C) 1997-2000 Microsoft Corporation
|
||
|
/****************************************************************************/
|
||
|
#ifndef _GCC_H_
|
||
|
#define _GCC_H_
|
||
|
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
// Defines
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
#ifndef EXTERN_C
|
||
|
#ifdef __cplusplus
|
||
|
#define EXTERN_C extern "C"
|
||
|
#else
|
||
|
#define EXTERN_C extern
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
// Typedefs
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
/*
|
||
|
** Typedefs that used to be defined in MCS but are no longer used there.
|
||
|
*/
|
||
|
typedef unsigned char *TransportAddress;
|
||
|
typedef HANDLE PhysicalHandle;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** Typedef for a GCC Numeric string. This typedef is used throughout GCC for
|
||
|
** storing variable length, NULL terminated, single byte character strings.
|
||
|
** A single character in this string is constrained to numeric values
|
||
|
** ranging from "0" to "9".
|
||
|
*/
|
||
|
typedef unsigned char GCCNumericCharacter;
|
||
|
typedef GCCNumericCharacter *GCCNumericString;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** Typedef for a GCC Unicode string. This typedef is used throughout GCC for
|
||
|
** storing variable length, NULL terminated, wide character strings.
|
||
|
*/
|
||
|
typedef unsigned short GCCUnicodeCharacter;
|
||
|
typedef GCCUnicodeCharacter FAR *GCCUnicodeString;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** GCCConferenceName
|
||
|
** This structure defines the conference name. In a create request, the
|
||
|
** conference name can include an optional unicode string but it must
|
||
|
** always include the simple numeric string. In a join request, either
|
||
|
** one can be specified.
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
GCCNumericString numeric_string;
|
||
|
GCCUnicodeString text_string; /* optional */
|
||
|
} GCCConferenceName;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** GCCConferenceID
|
||
|
** Locally allocated identifier of a created conference. All subsequent
|
||
|
** references to the conference are made using the ConferenceID as a unique
|
||
|
** identifier. The ConferenceID shall be identical to the MCS domain
|
||
|
** selector used locally to identify the MCS domain associated with the
|
||
|
** conference.
|
||
|
*/
|
||
|
typedef unsigned long GCCConferenceID;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** GCCPassword
|
||
|
** This is the unique password specified by the convenor of the
|
||
|
** conference that is used by the node controller to insure conference
|
||
|
** security. This is also a unicode string.
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
GCCNumericString numeric_string;
|
||
|
GCCUnicodeString text_string; /* optional */
|
||
|
} GCCPassword;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** GCCTerminationMethod
|
||
|
** The termination method is used by GCC to determine
|
||
|
** what action to take when all participants of a conference have
|
||
|
** disconnected. The conference can either be manually terminated
|
||
|
** by the node controller or it can terminate itself automatically when
|
||
|
** all the participants have left the conference.
|
||
|
*/
|
||
|
typedef enum
|
||
|
{
|
||
|
GCC_AUTOMATIC_TERMINATION_METHOD = 0,
|
||
|
GCC_MANUAL_TERMINATION_METHOD = 1
|
||
|
} GCCTerminationMethod;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** ConferencePrivileges
|
||
|
** This structure defines the list of privileges that can be assigned to
|
||
|
** a particular conference.
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
T120Boolean terminate_is_allowed;
|
||
|
T120Boolean eject_user_is_allowed;
|
||
|
T120Boolean add_is_allowed;
|
||
|
T120Boolean lock_unlock_is_allowed;
|
||
|
T120Boolean transfer_is_allowed;
|
||
|
} GCCConferencePrivileges;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** Typedef for a GCC octet string. This typedef is used throughout GCC for
|
||
|
** storing variable length single byte character strings with embedded NULLs.
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
unsigned short octet_string_length;
|
||
|
unsigned char FAR *octet_string;
|
||
|
} GCCOctetString;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** Typedef for a GCC long string. This typedef is used in GCC for
|
||
|
** storing variable length strings of longs with embedded NULLs.
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
unsigned short long_string_length;
|
||
|
unsigned long FAR *long_string;
|
||
|
} GCCLongString;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** The following enum structure typedefs are used to define the GCC Object Key.
|
||
|
** The GCC Object Key is used throughout GCC for things like the Application
|
||
|
** keys and Capability IDs.
|
||
|
*/
|
||
|
typedef enum
|
||
|
{
|
||
|
GCC_OBJECT_KEY = 1,
|
||
|
GCC_H221_NONSTANDARD_KEY = 2
|
||
|
} GCCObjectKeyType;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
GCCObjectKeyType key_type;
|
||
|
union
|
||
|
{
|
||
|
GCCLongString object_id;
|
||
|
GCCOctetString h221_non_standard_id;
|
||
|
} u;
|
||
|
} GCCObjectKey;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** GCCUserData
|
||
|
** This structure defines a user data element which is used throughout GCC.
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
GCCObjectKey key;
|
||
|
GCCOctetString FAR UNALIGNED *octet_string; /* optional */
|
||
|
} GCCUserData;
|
||
|
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
GCC_STATUS_PACKET_RESOURCE_FAILURE = 0,
|
||
|
GCC_STATUS_PACKET_LENGTH_EXCEEDED = 1,
|
||
|
GCC_STATUS_CTL_SAP_RESOURCE_ERROR = 2,
|
||
|
GCC_STATUS_APP_SAP_RESOURCE_ERROR = 3, /* parameter = Sap Handle */
|
||
|
GCC_STATUS_CONF_RESOURCE_ERROR = 4, /* parameter = Conference ID */
|
||
|
GCC_STATUS_INCOMPATIBLE_PROTOCOL = 5, /* parameter = Physical Handle */
|
||
|
GCC_STATUS_JOIN_FAILED_BAD_CONF_NAME = 6, /* parameter = Physical Handle */
|
||
|
GCC_STATUS_JOIN_FAILED_BAD_CONVENER = 7, /* parameter = Physical Handle */
|
||
|
GCC_STATUS_JOIN_FAILED_LOCKED = 8 /* parameter = Physical Handle */
|
||
|
} GCCStatusMessageType;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** GCCReason
|
||
|
** When GCC issues an indication to a user application, it often includes a
|
||
|
** reason parameter informing the user of why the activity is occurring.
|
||
|
*/
|
||
|
typedef enum
|
||
|
{
|
||
|
GCC_REASON_USER_INITIATED = 0,
|
||
|
GCC_REASON_UNKNOWN = 1,
|
||
|
GCC_REASON_NORMAL_TERMINATION = 2,
|
||
|
GCC_REASON_TIMED_TERMINATION = 3,
|
||
|
GCC_REASON_NO_MORE_PARTICIPANTS = 4,
|
||
|
GCC_REASON_ERROR_TERMINATION = 5,
|
||
|
GCC_REASON_ERROR_LOW_RESOURCES = 6,
|
||
|
GCC_REASON_MCS_RESOURCE_FAILURE = 7,
|
||
|
GCC_REASON_PARENT_DISCONNECTED = 8,
|
||
|
GCC_REASON_CONDUCTOR_RELEASE = 9,
|
||
|
GCC_REASON_SYSTEM_RELEASE = 10,
|
||
|
GCC_REASON_NODE_EJECTED = 11,
|
||
|
GCC_REASON_HIGHER_NODE_DISCONNECTED = 12,
|
||
|
GCC_REASON_HIGHER_NODE_EJECTED = 13,
|
||
|
GCC_REASON_DOMAIN_PARAMETERS_UNACCEPTABLE = 14,
|
||
|
GCC_REASON_SERVER_INITIATED = 15,
|
||
|
LAST_GCC_REASON = GCC_REASON_DOMAIN_PARAMETERS_UNACCEPTABLE
|
||
|
} GCCReason;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** GCCResult
|
||
|
** When a user makes a request of GCC, GCC often responds with a result,
|
||
|
** letting the user know whether or not the request succeeded.
|
||
|
*/
|
||
|
typedef enum
|
||
|
{
|
||
|
GCC_RESULT_SUCCESSFUL = 0,
|
||
|
GCC_RESULT_RESOURCES_UNAVAILABLE = 1,
|
||
|
GCC_RESULT_INVALID_CONFERENCE = 2,
|
||
|
GCC_RESULT_INVALID_PASSWORD = 3,
|
||
|
GCC_RESULT_INVALID_CONVENER_PASSWORD = 4,
|
||
|
GCC_RESULT_SYMMETRY_BROKEN = 5,
|
||
|
GCC_RESULT_UNSPECIFIED_FAILURE = 6,
|
||
|
GCC_RESULT_NOT_CONVENER_NODE = 7,
|
||
|
GCC_RESULT_REGISTRY_FULL = 8,
|
||
|
GCC_RESULT_INDEX_ALREADY_OWNED = 9,
|
||
|
GCC_RESULT_INCONSISTENT_TYPE = 10,
|
||
|
GCC_RESULT_NO_HANDLES_AVAILABLE = 11,
|
||
|
GCC_RESULT_CONNECT_PROVIDER_FAILED = 12,
|
||
|
GCC_RESULT_CONFERENCE_NOT_READY = 13,
|
||
|
GCC_RESULT_USER_REJECTED = 14,
|
||
|
GCC_RESULT_ENTRY_DOES_NOT_EXIST = 15,
|
||
|
GCC_RESULT_NOT_CONDUCTIBLE = 16,
|
||
|
GCC_RESULT_NOT_THE_CONDUCTOR = 17,
|
||
|
GCC_RESULT_NOT_IN_CONDUCTED_MODE = 18,
|
||
|
GCC_RESULT_IN_CONDUCTED_MODE = 19,
|
||
|
GCC_RESULT_ALREADY_CONDUCTOR = 20,
|
||
|
GCC_RESULT_CHALLENGE_RESPONSE_REQUIRED = 21,
|
||
|
GCC_RESULT_INVALID_CHALLENGE_RESPONSE = 22,
|
||
|
GCC_RESULT_INVALID_REQUESTER = 23,
|
||
|
GCC_RESULT_ENTRY_ALREADY_EXISTS = 24,
|
||
|
GCC_RESULT_INVALID_NODE = 25,
|
||
|
GCC_RESULT_INVALID_SESSION_KEY = 26,
|
||
|
GCC_RESULT_INVALID_CAPABILITY_ID = 27,
|
||
|
GCC_RESULT_INVALID_NUMBER_OF_HANDLES = 28,
|
||
|
GCC_RESULT_CONDUCTOR_GIVE_IS_PENDING = 29,
|
||
|
GCC_RESULT_INCOMPATIBLE_PROTOCOL = 30,
|
||
|
GCC_RESULT_CONFERENCE_ALREADY_LOCKED = 31,
|
||
|
GCC_RESULT_CONFERENCE_ALREADY_UNLOCKED = 32,
|
||
|
GCC_RESULT_INVALID_NETWORK_TYPE = 33,
|
||
|
GCC_RESULT_INVALID_NETWORK_ADDRESS = 34,
|
||
|
GCC_RESULT_ADDED_NODE_BUSY = 35,
|
||
|
GCC_RESULT_NETWORK_BUSY = 36,
|
||
|
GCC_RESULT_NO_PORTS_AVAILABLE = 37,
|
||
|
GCC_RESULT_CONNECTION_UNSUCCESSFUL = 38,
|
||
|
GCC_RESULT_LOCKED_NOT_SUPPORTED = 39,
|
||
|
GCC_RESULT_UNLOCK_NOT_SUPPORTED = 40,
|
||
|
GCC_RESULT_ADD_NOT_SUPPORTED = 41,
|
||
|
GCC_RESULT_DOMAIN_PARAMETERS_UNACCEPTABLE = 42,
|
||
|
LAST_CGG_RESULT = GCC_RESULT_DOMAIN_PARAMETERS_UNACCEPTABLE
|
||
|
} GCCResult;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** GCCMessageType
|
||
|
** This section defines the messages that can be sent to the application
|
||
|
** through the callback facility. These messages correspond to the
|
||
|
** indications and confirms that are defined within T.124.
|
||
|
*/
|
||
|
typedef enum
|
||
|
{
|
||
|
/******************* NODE CONTROLLER CALLBACKS ***********************/
|
||
|
|
||
|
/* Conference Create, Terminate related calls */
|
||
|
GCC_CREATE_INDICATION = 0,
|
||
|
GCC_CREATE_CONFIRM = 1,
|
||
|
GCC_QUERY_INDICATION = 2,
|
||
|
GCC_QUERY_CONFIRM = 3,
|
||
|
GCC_JOIN_INDICATION = 4,
|
||
|
GCC_JOIN_CONFIRM = 5,
|
||
|
GCC_INVITE_INDICATION = 6,
|
||
|
GCC_INVITE_CONFIRM = 7,
|
||
|
GCC_ADD_INDICATION = 8,
|
||
|
GCC_ADD_CONFIRM = 9,
|
||
|
GCC_LOCK_INDICATION = 10,
|
||
|
GCC_LOCK_CONFIRM = 11,
|
||
|
GCC_UNLOCK_INDICATION = 12,
|
||
|
GCC_UNLOCK_CONFIRM = 13,
|
||
|
GCC_LOCK_REPORT_INDICATION = 14,
|
||
|
GCC_DISCONNECT_INDICATION = 15,
|
||
|
GCC_DISCONNECT_CONFIRM = 16,
|
||
|
GCC_TERMINATE_INDICATION = 17,
|
||
|
GCC_TERMINATE_CONFIRM = 18,
|
||
|
GCC_EJECT_USER_INDICATION = 19,
|
||
|
GCC_EJECT_USER_CONFIRM = 20,
|
||
|
GCC_TRANSFER_INDICATION = 21,
|
||
|
GCC_TRANSFER_CONFIRM = 22,
|
||
|
GCC_APPLICATION_INVOKE_INDICATION = 23, /* SHARED CALLBACK */
|
||
|
GCC_APPLICATION_INVOKE_CONFIRM = 24, /* SHARED CALLBACK */
|
||
|
GCC_SUB_INITIALIZED_INDICATION = 25,
|
||
|
|
||
|
/* Conference Roster related callbacks */
|
||
|
GCC_ANNOUNCE_PRESENCE_CONFIRM = 26,
|
||
|
GCC_ROSTER_REPORT_INDICATION = 27, /* SHARED CALLBACK */
|
||
|
GCC_ROSTER_INQUIRE_CONFIRM = 28, /* SHARED CALLBACK */
|
||
|
|
||
|
/* Conductorship related callbacks */
|
||
|
GCC_CONDUCT_ASSIGN_INDICATION = 29, /* SHARED CALLBACK */
|
||
|
GCC_CONDUCT_ASSIGN_CONFIRM = 30,
|
||
|
GCC_CONDUCT_RELEASE_INDICATION = 31, /* SHARED CALLBACK */
|
||
|
GCC_CONDUCT_RELEASE_CONFIRM = 32,
|
||
|
GCC_CONDUCT_PLEASE_INDICATION = 33,
|
||
|
GCC_CONDUCT_PLEASE_CONFIRM = 34,
|
||
|
GCC_CONDUCT_GIVE_INDICATION = 35,
|
||
|
GCC_CONDUCT_GIVE_CONFIRM = 36,
|
||
|
GCC_CONDUCT_INQUIRE_CONFIRM = 37, /* SHARED CALLBACK */
|
||
|
GCC_CONDUCT_ASK_INDICATION = 38,
|
||
|
GCC_CONDUCT_ASK_CONFIRM = 39,
|
||
|
GCC_CONDUCT_GRANT_INDICATION = 40, /* SHARED CALLBACK */
|
||
|
GCC_CONDUCT_GRANT_CONFIRM = 41,
|
||
|
|
||
|
/* Miscellaneous Node Controller callbacks */
|
||
|
GCC_TIME_REMAINING_INDICATION = 42,
|
||
|
GCC_TIME_REMAINING_CONFIRM = 43,
|
||
|
GCC_TIME_INQUIRE_INDICATION = 44,
|
||
|
GCC_TIME_INQUIRE_CONFIRM = 45,
|
||
|
GCC_CONFERENCE_EXTEND_INDICATION = 46,
|
||
|
GCC_CONFERENCE_EXTEND_CONFIRM = 47,
|
||
|
GCC_ASSISTANCE_INDICATION = 48,
|
||
|
GCC_ASSISTANCE_CONFIRM = 49,
|
||
|
GCC_TEXT_MESSAGE_INDICATION = 50,
|
||
|
GCC_TEXT_MESSAGE_CONFIRM = 51,
|
||
|
|
||
|
/***************** USER APPLICATION CALLBACKS *******************/
|
||
|
|
||
|
/* Application Roster related callbacks */
|
||
|
GCC_PERMIT_TO_ENROLL_INDICATION = 52,
|
||
|
GCC_ENROLL_CONFIRM = 53,
|
||
|
GCC_APP_ROSTER_REPORT_INDICATION = 54, /* SHARED CALLBACK */
|
||
|
GCC_APP_ROSTER_INQUIRE_CONFIRM = 55, /* SHARED CALLBACK */
|
||
|
|
||
|
/* Application Registry related callbacks */
|
||
|
GCC_REGISTER_CHANNEL_CONFIRM = 56,
|
||
|
GCC_ASSIGN_TOKEN_CONFIRM = 57,
|
||
|
GCC_RETRIEVE_ENTRY_CONFIRM = 58,
|
||
|
GCC_DELETE_ENTRY_CONFIRM = 59,
|
||
|
GCC_SET_PARAMETER_CONFIRM = 60,
|
||
|
GCC_MONITOR_INDICATION = 61,
|
||
|
GCC_MONITOR_CONFIRM = 62,
|
||
|
GCC_ALLOCATE_HANDLE_CONFIRM = 63,
|
||
|
|
||
|
|
||
|
/****************** NON-Standard Primitives **********************/
|
||
|
GCC_PERMIT_TO_ANNOUNCE_PRESENCE = 100, /* Node Controller Callback */
|
||
|
GCC_CONNECTION_BROKEN_INDICATION = 101, /* Node Controller Callback */
|
||
|
GCC_FATAL_ERROR_SAP_REMOVED = 102, /* Application Callback */
|
||
|
GCC_STATUS_INDICATION = 103, /* Node Controller Callback */
|
||
|
GCC_TRANSPORT_STATUS_INDICATION = 104 /* Node Controller Callback */
|
||
|
} GCCMessageType;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* These structures are used to hold the information included for the
|
||
|
* various callback messages. In the case where these structures are used for
|
||
|
* callbacks, the address of the structure is passed as the only parameter.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* GCC_CREATE_INDICATION
|
||
|
*
|
||
|
* Union Choice:
|
||
|
* CreateIndicationMessage
|
||
|
* This is a pointer to a structure that contains all necessary
|
||
|
* information about the new conference that is about to be created.
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
GCCConferenceName conference_name;
|
||
|
GCCConferenceID conference_id;
|
||
|
GCCPassword FAR *convener_password; /* optional */
|
||
|
GCCPassword FAR *password; /* optional */
|
||
|
T120Boolean conference_is_locked;
|
||
|
T120Boolean conference_is_listed;
|
||
|
T120Boolean conference_is_conductible;
|
||
|
GCCTerminationMethod termination_method;
|
||
|
GCCConferencePrivileges FAR *conductor_privilege_list; /* optional */
|
||
|
GCCConferencePrivileges FAR *conducted_mode_privilege_list;/* optional */
|
||
|
GCCConferencePrivileges FAR *non_conducted_privilege_list; /* optional */
|
||
|
GCCUnicodeString conference_descriptor; /* optional */
|
||
|
GCCUnicodeString caller_identifier; /* optional */
|
||
|
TransportAddress calling_address; /* optional */
|
||
|
TransportAddress called_address; /* optional */
|
||
|
DomainParameters FAR *domain_parameters; /* optional */
|
||
|
unsigned short number_of_user_data_members;
|
||
|
GCCUserData FAR * FAR *user_data_list; /* optional */
|
||
|
ConnectionHandle connection_handle;
|
||
|
PhysicalHandle physical_handle;
|
||
|
} CreateIndicationMessage;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* GCC_DISCONNECT_INDICATION
|
||
|
*
|
||
|
* Union Choice:
|
||
|
* DisconnectIndicationMessage
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
GCCConferenceID conference_id;
|
||
|
GCCReason reason;
|
||
|
UserID disconnected_node_id;
|
||
|
} DisconnectIndicationMessage;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* GCC_TERMINATE_INDICATION
|
||
|
*
|
||
|
* Union Choice:
|
||
|
* TerminateIndicationMessage
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
GCCConferenceID conference_id;
|
||
|
UserID requesting_node_id;
|
||
|
GCCReason reason;
|
||
|
} TerminateIndicationMessage;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* GCCMessage
|
||
|
* This structure defines the message that is passed from GCC to either
|
||
|
* the node controller or a user application when an indication or
|
||
|
* confirm occurs.
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
GCCMessageType message_type;
|
||
|
void FAR *user_defined;
|
||
|
|
||
|
union {
|
||
|
CreateIndicationMessage create_indication;
|
||
|
DisconnectIndicationMessage disconnect_indication;
|
||
|
TerminateIndicationMessage terminate_indication;
|
||
|
} u;
|
||
|
} GCCMessage;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* This is the definition for the GCC callback function. Applications
|
||
|
* writing callback routines should NOT use the typedef to define their
|
||
|
* functions. These should be explicitly defined the way that the
|
||
|
* typedef is defined.
|
||
|
*/
|
||
|
|
||
|
#define GCC_CALLBACK_NOT_PROCESSED 0
|
||
|
#define GCC_CALLBACK_PROCESSED 1
|
||
|
|
||
|
typedef T120Boolean (CALLBACK *GCCCallBack) (GCCMessage FAR *gcc_message);
|
||
|
|
||
|
|
||
|
/*
|
||
|
** Typedef for a GCC Character string. This typedef is used throughout GCC for
|
||
|
** storing variable length, NULL terminated, single byte character strings.
|
||
|
*/
|
||
|
typedef unsigned char GCCCharacter;
|
||
|
typedef GCCCharacter FAR *GCCCharacterString;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** Typdef for GCC version which is used when registering the node controller
|
||
|
** or an application.
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
unsigned short major_version;
|
||
|
unsigned short minor_version;
|
||
|
} GCCVersion;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** GCCNonStandardParameter
|
||
|
** This structure is used within the NetworkAddress typedef and
|
||
|
** the NetworkService typedef defined below.
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
GCCObjectKey object_key;
|
||
|
GCCOctetString parameter_data;
|
||
|
} GCCNonStandardParameter;
|
||
|
|
||
|
|
||
|
/*
|
||
|
** GCCNetworkAddress
|
||
|
** The following block of structures defines the Network Address as defined
|
||
|
** by T.124. Most of these structures were taken almost verbatim from the
|
||
|
** ASN.1 interface file. Since I'm not really sure what most of this stuff
|
||
|
** is for I really didn't know how to simplify it.
|
||
|
*/
|
||
|
typedef struct
|
||
|
{
|
||
|
T120Boolean speech;
|
||
|
T120Boolean voice_band;
|
||
|
T120Boolean digital_56k;
|
||
|
T120Boolean digital_64k;
|
||
|
T120Boolean digital_128k;
|
||
|
T120Boolean digital_192k;
|
||
|
T120Boolean digital_256k;
|
||
|
T120Boolean digital_320k;
|
||
|
T120Boolean digital_384k;
|
||
|
T120Boolean digital_512k;
|
||
|
T120Boolean digital_768k;
|
||
|
T120Boolean digital_1152k;
|
||
|
T120Boolean digital_1472k;
|
||
|
T120Boolean digital_1536k;
|
||
|
T120Boolean digital_1920k;
|
||
|
T120Boolean packet_mode;
|
||
|
T120Boolean frame_mode;
|
||
|
T120Boolean atm;
|
||
|
} GCCTransferModes;
|
||
|
|
||
|
#define MAXIMUM_DIAL_STRING_LENGTH 17
|
||
|
typedef char GCCDialingString[MAXIMUM_DIAL_STRING_LENGTH];
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
unsigned short length;
|
||
|
unsigned short FAR *value;
|
||
|
} GCCExtraDialingString;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
T120Boolean telephony3kHz;
|
||
|
T120Boolean telephony7kHz;
|
||
|
T120Boolean videotelephony;
|
||
|
T120Boolean videoconference;
|
||
|
T120Boolean audiographic;
|
||
|
T120Boolean audiovisual;
|
||
|
T120Boolean multimedia;
|
||
|
} GCCHighLayerCompatibility;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
GCCTransferModes transfer_modes;
|
||
|
GCCDialingString international_number;
|
||
|
GCCCharacterString sub_address_string; /* optional */
|
||
|
GCCExtraDialingString FAR *extra_dialing_string; /* optional */
|
||
|
GCCHighLayerCompatibility FAR *high_layer_compatibility; /* optional */
|
||
|
} GCCAggregatedChannelAddress;
|
||
|
|
||
|
#define MAXIMUM_NSAP_ADDRESS_SIZE 20
|
||
|
typedef struct
|
||
|
{
|
||
|
struct
|
||
|
{
|
||
|
unsigned short length;
|
||
|
unsigned char value[MAXIMUM_NSAP_ADDRESS_SIZE];
|
||
|
} nsap_address;
|
||
|
|
||
|
GCCOctetString FAR *transport_selector; /* optional */
|
||
|
} GCCTransportConnectionAddress;
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
GCC_AGGREGATED_CHANNEL_ADDRESS = 1,
|
||
|
GCC_TRANSPORT_CONNECTION_ADDRESS = 2,
|
||
|
GCC_NONSTANDARD_NETWORK_ADDRESS = 3
|
||
|
} GCCNetworkAddressType;
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
GCCNetworkAddressType network_address_type;
|
||
|
union
|
||
|
{
|
||
|
GCCAggregatedChannelAddress aggregated_channel_address;
|
||
|
GCCTransportConnectionAddress transport_connection_address;
|
||
|
GCCNonStandardParameter non_standard_network_address;
|
||
|
} u;
|
||
|
} GCCNetworkAddress;
|
||
|
|
||
|
|
||
|
/*
|
||
|
* This section defines the valid return values from GCC function calls. Do
|
||
|
* not confuse this return value with the Result and Reason values defined
|
||
|
* by T.124 (which are discussed later). These values are returned directly
|
||
|
* from the call to the API entry point, letting you know whether or not the
|
||
|
* request for service was successfully invoked. The Result and Reason
|
||
|
* codes are issued as part of an indication or confirm which occurs
|
||
|
* asynchronously to the call that causes it.
|
||
|
*/
|
||
|
typedef enum
|
||
|
{
|
||
|
GCC_NO_ERROR = 0,
|
||
|
GCC_NOT_INITIALIZED = 1,
|
||
|
GCC_ALREADY_INITIALIZED = 2,
|
||
|
GCC_ALLOCATION_FAILURE = 3,
|
||
|
GCC_NO_SUCH_APPLICATION = 4,
|
||
|
GCC_INVALID_CONFERENCE = 5,
|
||
|
GCC_CONFERENCE_ALREADY_EXISTS = 6,
|
||
|
GCC_NO_TRANSPORT_STACKS = 7,
|
||
|
GCC_INVALID_ADDRESS_PREFIX = 8,
|
||
|
GCC_INVALID_TRANSPORT = 9,
|
||
|
GCC_FAILURE_CREATING_PACKET = 10,
|
||
|
GCC_QUERY_REQUEST_OUTSTANDING = 11,
|
||
|
GCC_INVALID_QUERY_TAG = 12,
|
||
|
GCC_FAILURE_CREATING_DOMAIN = 13,
|
||
|
GCC_CONFERENCE_NOT_ESTABLISHED = 14,
|
||
|
GCC_INVALID_PASSWORD = 15,
|
||
|
GCC_INVALID_MCS_USER_ID = 16,
|
||
|
GCC_INVALID_JOIN_RESPONSE_TAG = 17,
|
||
|
GCC_TRANSPORT_ALREADY_LOADED = 18,
|
||
|
GCC_TRANSPORT_BUSY = 19,
|
||
|
GCC_TRANSPORT_NOT_READY = 20,
|
||
|
GCC_DOMAIN_PARAMETERS_UNACCEPTABLE = 21,
|
||
|
GCC_APP_NOT_ENROLLED = 22,
|
||
|
GCC_NO_GIVE_RESPONSE_PENDING = 23,
|
||
|
GCC_BAD_NETWORK_ADDRESS_TYPE = 24,
|
||
|
GCC_BAD_OBJECT_KEY = 25,
|
||
|
GCC_INVALID_CONFERENCE_NAME = 26,
|
||
|
GCC_INVALID_CONFERENCE_MODIFIER = 27,
|
||
|
GCC_BAD_SESSION_KEY = 28,
|
||
|
GCC_BAD_CAPABILITY_ID = 29,
|
||
|
GCC_BAD_REGISTRY_KEY = 30,
|
||
|
GCC_BAD_NUMBER_OF_APES = 31,
|
||
|
GCC_BAD_NUMBER_OF_HANDLES = 32,
|
||
|
GCC_ALREADY_REGISTERED = 33,
|
||
|
GCC_APPLICATION_NOT_REGISTERED = 34,
|
||
|
GCC_BAD_CONNECTION_HANDLE_POINTER = 35,
|
||
|
GCC_INVALID_NODE_TYPE = 36,
|
||
|
GCC_INVALID_ASYMMETRY_INDICATOR = 37,
|
||
|
GCC_INVALID_NODE_PROPERTIES = 38,
|
||
|
GCC_BAD_USER_DATA = 39,
|
||
|
GCC_BAD_NETWORK_ADDRESS = 40,
|
||
|
GCC_INVALID_ADD_RESPONSE_TAG = 41,
|
||
|
GCC_BAD_ADDING_NODE = 42,
|
||
|
GCC_FAILURE_ATTACHING_TO_MCS = 43,
|
||
|
GCC_INVALID_TRANSPORT_ADDRESS = 44,
|
||
|
GCC_INVALID_PARAMETER = 45,
|
||
|
GCC_COMMAND_NOT_SUPPORTED = 46,
|
||
|
GCC_UNSUPPORTED_ERROR = 47,
|
||
|
GCC_TRANSMIT_BUFFER_FULL = 48,
|
||
|
GCC_INVALID_CHANNEL = 49,
|
||
|
GCC_INVALID_MODIFICATION_RIGHTS = 50,
|
||
|
GCC_INVALID_REGISTRY_ITEM = 51,
|
||
|
GCC_INVALID_NODE_NAME = 52,
|
||
|
GCC_INVALID_PARTICIPANT_NAME = 53,
|
||
|
GCC_INVALID_SITE_INFORMATION = 54,
|
||
|
GCC_INVALID_NON_COLLAPSED_CAP = 55,
|
||
|
GCC_INVALID_ALTERNATIVE_NODE_ID = 56,
|
||
|
LAST_GCC_ERROR = GCC_INVALID_ALTERNATIVE_NODE_ID
|
||
|
} GCCError, *PGCCError;
|
||
|
|
||
|
|
||
|
#if DBG
|
||
|
|
||
|
// Debug print levels
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
DBNONE,
|
||
|
DBERROR,
|
||
|
DBWARN,
|
||
|
DBNORMAL,
|
||
|
DBDEBUG,
|
||
|
DbDETAIL,
|
||
|
DBFLOW,
|
||
|
DBALL
|
||
|
} DBPRINTLEVEL;
|
||
|
|
||
|
#endif // Typedefs
|
||
|
|
||
|
|
||
|
|
||
|
//---------------------------------------------------------------------------
|
||
|
// Prototypes
|
||
|
//---------------------------------------------------------------------------
|
||
|
|
||
|
GCCError
|
||
|
APIENTRY
|
||
|
GCCRegisterNodeControllerApplication (
|
||
|
GCCCallBack control_sap_callback,
|
||
|
void FAR *user_defined,
|
||
|
GCCVersion gcc_version_requested,
|
||
|
unsigned short FAR *initialization_flags,
|
||
|
unsigned long FAR *application_id,
|
||
|
unsigned short FAR *capabilities_mask,
|
||
|
GCCVersion FAR *gcc_high_version,
|
||
|
GCCVersion FAR *gcc_version);
|
||
|
|
||
|
|
||
|
GCCError
|
||
|
APIENTRY
|
||
|
GCCCleanup(ULONG application_id);
|
||
|
|
||
|
|
||
|
GCCError
|
||
|
APIENTRY
|
||
|
GCCLoadTransport(
|
||
|
char FAR *transport_identifier,
|
||
|
char FAR *transport_file_name);
|
||
|
|
||
|
GCCError
|
||
|
APIENTRY
|
||
|
GCCConferenceCreateResponse(
|
||
|
GCCNumericString conference_modifier,
|
||
|
DomainHandle hDomain,
|
||
|
T120Boolean use_password_in_the_clear,
|
||
|
DomainParameters FAR * domain_parameters,
|
||
|
unsigned short number_of_network_addresses,
|
||
|
GCCNetworkAddress FAR * FAR *local_network_address_list,
|
||
|
unsigned short number_of_user_data_members,
|
||
|
GCCUserData FAR * FAR * user_data_list,
|
||
|
GCCResult result);
|
||
|
|
||
|
GCCError
|
||
|
APIENTRY
|
||
|
GCCConferenceInit(
|
||
|
HANDLE hIca,
|
||
|
HANDLE hStack,
|
||
|
PVOID pvContext,
|
||
|
DomainHandle *phDomain);
|
||
|
|
||
|
GCCError
|
||
|
APIENTRY
|
||
|
GCCConferenceTerminateRequest(
|
||
|
DomainHandle hDomain,
|
||
|
ConnectionHandle hConnection,
|
||
|
GCCReason reason);
|
||
|
|
||
|
|
||
|
#if DBG
|
||
|
EXTERN_C VOID GCCSetPrintLevel(IN DBPRINTLEVEL DbPrintLevel);
|
||
|
|
||
|
#else
|
||
|
#define GCCSetPrintLevel(_x_)
|
||
|
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#endif // _GCC_H_
|
||
|
|