Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

2029 lines
72 KiB

#ifndef H245API_H
#define H245API_H
/******************************************************************************
*
* INTEL Corporation Proprietary Information
* Copyright (c) 1994, 1995, 1996 Intel Corporation.
*
* This listing is supplied under the terms of a license agreement
* with INTEL Corporation and may not be used, copied, nor disclosed
* except in accordance with the terms of that agreement.
*
*****************************************************************************/
/******************************************************************************
*
* $Workfile: h245api.h $
* $Revision: 1.64 $
* $Modtime: 04 Mar 1997 16:51:38 $
* $Log: S:/sturgeon/src/include/vcs/h245api.h_v $
*
* Rev 1.64 04 Mar 1997 17:32:36 MANDREWS
* H245CopyCap() and H245CopyCapDescriptor() now return HRESULTs.
*
* Rev 1.63 26 Feb 1997 10:56:20 MANDREWS
* Added H245_MAX_CAPID.
*
* Rev 1.62 Feb 24 1997 18:28:26 tomitowx
* multiple modedescriptor support
*
* Rev 1.61 19 Dec 1996 17:16:10 EHOWARDX
* Now using ASN.1 compiler C++ flag.
*
* Rev 1.60 17 Dec 1996 17:14:12 EHOWARDX
* Added pSeparateStack to IND_OPEN_T.
*
* Rev 1.59 12 Dec 1996 11:24:38 EHOWARDX
* Backed out H245_CONF_H323_OLD change.
*
* Rev 1.57 11 Dec 1996 13:46:46 SBELL1
* Changed H245Init to return linkLayer Physical ID
*
* Rev 1.56 24 Oct 1996 15:57:54 MANDREWS
* Fixed typo in last update.
*
* Rev 1.55 Oct 21 1996 17:11:00 mandrews
* Fixed type in last check-in.
*
* Rev 1.54 Oct 21 1996 16:41:20 mandrews
* Added H245_MASTER_SLAVE_CONFLICT as an additional openChannelReject
* reason code.
*
* Rev 1.53 17 Oct 1996 18:17:54 EHOWARDX
* Changed general string to always be Unicode.
*
* Rev 1.52 14 Oct 1996 14:00:28 EHOWARDX
*
* Unicode changes.
*
* Rev 1.51 03 Sep 1996 18:09:54 EHOWARDX
*
* Changed some parameters to const.
* Changed H245_REQ_ENTRY_H243_CONFERENCE_ID to H245_REQ_ENTER_H243_CONFERENCE
*
* Rev 1.50 15 Aug 1996 14:33:48 EHOWARDX
* Changed definition of H245_COMM_MODE_ENTRY_T as per Mike Andrews' request.
*
* Rev 1.49 24 Jul 1996 15:18:16 EHOWARDX
* Backed out change of IndNonstandardRequest to IndNonstandardReq,
* IndNonstandardResponse to IndNonStandardRsp, and IndNonstandardCommand to
* IndNonstandardCmd to make less work for upper layers (CCTEST).
*
* Rev 1.48 19 Jul 1996 14:12:20 EHOWARDX
*
* Added indication callback structure for CommunicationModeResponse and
* CommunicationModeCommand.
*
* Rev 1.47 19 Jul 1996 12:50:30 EHOWARDX
*
* Multipoint clean-up.
*
* Rev 1.46 16 Jul 1996 17:53:48 unknown
* Added FNS indication.
*
* Rev 1.45 16 Jul 1996 11:51:58 EHOWARDX
*
* Changed ERROR_LOCAL_BASE_ID to ERROR_BASE_ID.
*
* Rev 1.44 16 Jul 1996 11:46:10 EHOWARDX
*
* Eliminated H245_ERROR_MUX_CAPS_ALREADY_SET (changing the existing
* mux cap should not be an error).
*
* Rev 1.43 11 Jul 1996 18:42:14 rodellx
*
* Fixed bug where HRESULT ids were in violation of Facility and/or Code
* value rules.
*
* Rev 1.42 10 Jul 1996 11:33:42 unknown
* Changed error base.
*
* Rev 1.41 01 Jul 1996 22:07:24 EHOWARDX
* Added Conference and CommunicationMode structures and API functions.
*
* Rev 1.40 18 Jun 1996 14:48:54 EHOWARDX
*
* Bumped version number to 2 and modified H245MaintenanceLoopRelease()
* and associated Confirms.
*
* Rev 1.39 14 Jun 1996 18:59:38 EHOWARDX
* Geneva update.
*
* Rev 1.38 31 May 1996 18:19:46 EHOWARDX
* Brought error codes in line with STURERR.DOC guidelines.
*
* Rev 1.37 30 May 1996 23:37:26 EHOWARDX
* Clean up.
*
* Rev 1.36 30 May 1996 13:55:02 EHOWARDX
* Changed H245EndConnection to H245EndSession.
* Removed H245_CONF_ENDCONNECTION.
*
* Rev 1.35 29 May 1996 14:23:58 EHOWARDX
* Changed definition of H245_ERROR_OK back to 0 (NOERROR == S_OK == 0).
*
* Rev 1.34 29 May 1996 13:19:50 EHOWARDX
* RESULT to HRESULT conversion.
*
* Rev 1.33 24 May 1996 23:12:56 EHOWARDX
* Tel Aviv update.
*
* Rev 1.32 21 May 1996 18:23:58 EHOWARDX
*
* Added dwTransId parameter to H245RequestMultiplexEntry,
* H245RequestMode, and H245MaintenanceLoopRequest.
*
* Rev 1.31 20 May 1996 14:14:42 EHOWARDX
* Fixed typo.
*
* Rev 1.30 20 May 1996 14:05:20 EHOWARDX
* Removed dwTransId formal parameter from H245EndConnection().
*
* Rev 1.29 16 May 1996 15:51:56 EHOWARDX
* Fixed typo in H245_INVALID_CAPDESCID.
*
* Rev 1.28 16 May 1996 10:57:46 unknown
* Added H245_INVALID_CAPDESCID.
*
* Rev 1.27 14 May 1996 20:20:14 EHOWARDX
* Removed H245_IND_SYS.
*
* Rev 1.26 14 May 1996 19:00:58 EHOWARDX
* Deleted unused H245_SYSCON_xxx values.
*
* Rev 1.25 14 May 1996 16:58:48 EHOWARDX
* Changed H245_IND_CAPDESC_T To H245_TOTCAPDESC_T.
* H245EnumCaps() cap desc callback now takes single pointer to
* H245_TOTCAPDESC_T instead of separate H245_CAPDESCID_T and
* H245_CAPDESC_T pointer.
*
* Rev 1.24 13 May 1996 23:13:46 EHOWARDX
* Everything ready for Micrsoft drop on the 17th.
*
* Rev 1.23 13 May 1996 15:43:16 EHOWARDX
* Changed return type of H245CopyCapDescriptor from H245_CAPDESC_T pointer
* to H245_TOTCAPDESC_T pointer.
*
* Rev 1.22 13 May 1996 14:05:16 EHOWARDX
* Added H245CopyCapDescriptor() and H245FreeCapDescriptor().
*
* Rev 1.21 11 May 1996 20:00:34 EHOWARDX
* Changed IS1381 to IS13818 (correct name for capability).
* Changed H245SystemControl() - eliminated dwTransId and added
* H245_SYSCON_GET_XXX requests.
*
* Rev 1.20 10 May 1996 17:38:28 unknown
* Changed H245GetCaps and H245EnumCaps to also return Cap Descriptors.
*
* Rev 1.19 09 May 1996 20:22:58 EHOWARDX
* Latest and greatest...
*
* Rev 1.35 09 May 1996 19:38:14 EHOWARDX
* Redesigned locking logic and added new functionality.
*
* Rev 1.34 06 May 1996 13:19:44 EHOWARDX
* Moved enums out of structures.
* Added H245NonStandardH221() and H245NonStandardObject().
*
* Rev 1.33 01 May 1996 19:29:16 EHOWARDX
* Added H245CopyCap(), H245FreeCap(), H245CopyMux(), H245FreeMux().
* Changed H2250_xxx definitions for H.225.0 address to H245_xxx.
*
* Rev 1.32 27 Apr 1996 21:04:26 EHOWARDX
* Changed channel numbers to words, added new open/open ack fields.
*
* Rev 1.31 26 Apr 1996 15:57:14 EHOWARDX
* Added new Terminal Capabilities.
*
* Rev 1.27.1.6 25 Apr 1996 17:53:06 EHOWARDX
* Added H245_INVALID_ID, currently set to zero, should be 0xFFFFFFFF later.
*
* Rev 1.27.1.5 25 Apr 1996 16:50:04 EHOWARDX
* Added new functions as per API Changes spec.
*
* Rev 1.27.1.4 24 Apr 1996 20:57:30 EHOWARDX
* Added new OpenLogicalChannelAck/OpenLogicalChannelReject support.
*
* Rev 1.27.1.3 18 Apr 1996 15:56:42 EHOWARDX
* Updated to 1.30.
*
* Rev 1.27.1.2 16 Apr 1996 20:09:52 EHOWARDX
* Added new H2250LogicalChannelParameter fields.
*
* Rev 1.27.1.1 16 Apr 1996 18:45:24 EHOWARDX
* Added silenceSupression to H.225.0 Logical Channel Parameters.
*
* Rev 1.27.1.0 03 Apr 1996 15:56:14 cjutzi
* Branched for H.323.
*
* Rev 1.27 02 Apr 1996 08:29:44 cjutzi
* - Changed CapDescriptor API
*
* Rev 1.26 01 Apr 1996 16:46:50 cjutzi
*
* - Completed ENdConnection, and made asynch.. rather
* than sync.. as before
* Changed H245ShutDown to be sync rather than async..
*
* Rev 1.25 29 Mar 1996 14:55:52 cjutzi
*
* - added USERINPUT stuff
* - Added hooks for stats in SYSCON H245SystemControl
*
* Rev 1.24 27 Mar 1996 10:55:40 cjutzi
* - added c++ wrapper for API calls..
*
* Rev 1.23 20 Mar 1996 14:42:46 cjutzi
* - added ERROR NO_CAPDESC
*
* Rev 1.22 18 Mar 1996 15:14:56 cjutzi
*
* - added RxPort and TEST_TIMER
*
* Rev 1.21 12 Mar 1996 15:49:24 cjutzi
*
* - implemented locking
* - added EndSession
* - added Shutdown
*
*
* Rev 1.20 08 Mar 1996 14:06:04 cjutzi
*
* - Removed Simultanious capability api
* - added CapabilityDescriptor api.. (very similar.. made more sence)
* - compeleted Mux Table upcall information..
*
* Rev 1.19 06 Mar 1996 08:45:58 cjutzi
*
* - added ERROR ASN1
*
* Rev 1.18 05 Mar 1996 17:32:24 cjutzi
*
* - master slave indication message from Hani.. implemented..
* added H245_IND_MSTSLV ..
*
* Rev 1.17 05 Mar 1996 16:36:46 cjutzi
*
* - removed MUX_ENTRY_DESC_T .. cleaned it up.. don't need it..
*
* Rev 1.16 05 Mar 1996 10:06:30 cjutzi
*
* - added mux table entry stuff
* - changed errors to map to 10000
*
* Rev 1.15 01 Mar 1996 13:46:20 cjutzi
* - added more error messages
*
* Rev 1.14 29 Feb 1996 17:27:38 cjutzi
*
* - bi-directional channel working
*
* Rev 1.13 29 Feb 1996 11:33:50 cjutzi
* - fixed bug w/ H245_CONF_IND_T .. as global union.. fixed to be
* struct
*
* Rev 1.12 29 Feb 1996 08:26:48 cjutzi
*
* - added 2 error messages (SIMCAPID and DATA_FORMAT)
*
* Rev 1.11 27 Feb 1996 13:28:50 cjutzi
* - added global protocol id H245_PROTOID
*
* Rev 1.10 26 Feb 1996 17:24:10 cjutzi
*
* - added MiscCommand.. had to add channel to H245_IND_MISC_T..
*
* Rev 1.9 26 Feb 1996 11:07:24 cjutzi
*
* - added simultanoius caps..
*
* Rev 1.8 16 Feb 1996 12:59:26 cjutzi
* - added tracing and debug..
* - got close to work.. Added structure to H245_IND_T.. new CLOSE indication
*
* Rev 1.7 15 Feb 1996 14:13:08 cjutzi
*
* - re-arranged the AL_T entries for more clairity..
*
* Rev 1.6 15 Feb 1996 10:48:30 cjutzi
*
* - major changes..
* - added MUX_T
* - changed H245_IND_T
* - changed IND_OPEN/IND_OPEN_NEEDSRSP etc..
*
* Rev 1.5 09 Feb 1996 16:14:04 cjutzi
*
* - removed init_success
* - removed shutdown success
* - added masterslave type for callback/confirm
* - added SYSCON TraceLvl
*
*****************************************************************************/
//
// H.245 return codes
//
#if defined(OIL)
#include "common.x"
#define HRESULT RESULT
#define ERROR_BASE_ID 0x8000
#define MAKE_H245_ERROR(error) (error)
#define H245_ERROR_OK 0
#define H245_ERROR_INVALID_DATA_FORMAT MAKE_H245_ERROR(ERROR_BASE_ID+0x01) /* Data Structure passed down is somehow invalid */
#define H245_ERROR_NOMEM MAKE_H245_ERROR(ERROR_BASE_ID+0x02) /* memory allocation failure */
#define H245_ERROR_NOSUP MAKE_H245_ERROR(ERROR_BASE_ID+0x03) /* H245 feature not valid, or not in this H245 spec */
#define H245_ERROR_PARAM MAKE_H245_ERROR(ERROR_BASE_ID+0x04) /* invalid parameter or data structure passed to API*/
#define H245_ERROR_ALREADY_INIT MAKE_H245_ERROR(ERROR_BASE_ID+0x05) /* system has already been initialized */
#define H245_ERROR_NOT_CONNECTED MAKE_H245_ERROR(ERROR_BASE_ID+0x06) /* system is not in the connected state */
#else
#pragma warning( disable : 4115 4201 4214 4514 )
#include "apierror.h"
#define H245_ERROR_OK NOERROR
#define H245_ERROR_INVALID_DATA_FORMAT MAKE_H245_ERROR(ERROR_INVALID_DATA) /* Data Structure passed down is somehow invalid */
#define H245_ERROR_NOMEM MAKE_H245_ERROR(ERROR_OUTOFMEMORY) /* memory allocation failure */
#define H245_ERROR_NOSUP MAKE_H245_ERROR(ERROR_NOT_SUPPORTED) /* H245 feature not valid, or not in this H245 spec */
#define H245_ERROR_PARAM MAKE_H245_ERROR(ERROR_INVALID_PARAMETER) /* invalid parameter or data structure passed to API*/
#define H245_ERROR_ALREADY_INIT MAKE_H245_ERROR(ERROR_ALREADY_INITIALIZED)/* system has already been initialized */
#define H245_ERROR_NOT_CONNECTED MAKE_H245_ERROR(ERROR_NOT_CONNECTED) /* system is not in the connected state */
#endif
#define H245_ERROR_NORESOURCE MAKE_H245_ERROR(ERROR_BASE_ID+0x10) /* No resources left for this call */
#define H245_ERROR_NOTIMP MAKE_H245_ERROR(ERROR_BASE_ID+0x11) /* H245 feature should be implemented.. but is not */
#define H245_ERROR_SUBSYS MAKE_H245_ERROR(ERROR_BASE_ID+0x12) /* subsystem failure.. error unknown */
#define H245_ERROR_FATAL MAKE_H245_ERROR(ERROR_BASE_ID+0x13) /* fatal error.. system will be coming down.. */
#define H245_ERROR_MAXTBL MAKE_H245_ERROR(ERROR_BASE_ID+0x14) /* you have reached the maxium number of tbl entries*/
#define H245_ERROR_CHANNEL_INUSE MAKE_H245_ERROR(ERROR_BASE_ID+0x15) /* channel is currently in use */
#define H245_ERROR_INVALID_CAPID MAKE_H245_ERROR(ERROR_BASE_ID+0x16) /* Invalid Cap ID.. can not be found */
#define H245_ERROR_INVALID_OP MAKE_H245_ERROR(ERROR_BASE_ID+0x17) /* Invalid operation at this time.. */
#define H245_ERROR_UNKNOWN MAKE_H245_ERROR(ERROR_BASE_ID+0x18) /* unknown error */
#define H245_ERROR_NOBANDWIDTH MAKE_H245_ERROR(ERROR_BASE_ID+0x19) /* Bandwidth will not allow this */
#define H245_ERROR_LOSTCON MAKE_H245_ERROR(ERROR_BASE_ID+0x1A) /* System connection .. channel 0 was lost */
#define H245_ERROR_INVALID_MUXTBLENTRY MAKE_H245_ERROR(ERROR_BASE_ID+0x1B) /* Invalid Multiplex Table Entry */
#define H245_ERROR_INVALID_INST MAKE_H245_ERROR(ERROR_BASE_ID+0x1C) /* instance is either no longer valid or is invalid */
#define H245_ERROR_INPROCESS MAKE_H245_ERROR(ERROR_BASE_ID+0x1D) /* request is denied.. action already in process */
#define H245_ERROR_INVALID_STATE MAKE_H245_ERROR(ERROR_BASE_ID+0x1E) /* Not proper state to process request */
#define H245_ERROR_TIMEOUT MAKE_H245_ERROR(ERROR_BASE_ID+0x1F) /* Timeout occured */
#define H245_ERROR_INVALID_CHANNEL MAKE_H245_ERROR(ERROR_BASE_ID+0x20) /* Invalid channel */
#define H245_ERROR_INVALID_CAPDESCID MAKE_H245_ERROR(ERROR_BASE_ID+0x21) /* Invalid Capbility Descriptor ID */
#define H245_ERROR_CANCELED MAKE_H245_ERROR(ERROR_BASE_ID+0x22) /* operation you are responding to has been canceled*/
#define H245_ERROR_MUXELEMENT_DEPTH MAKE_H245_ERROR(ERROR_BASE_ID+0x23) /* Mux Table Entry is too complex.. MAX recursion */
#define H245_ERROR_MUXELEMENT_WIDTH MAKE_H245_ERROR(ERROR_BASE_ID+0x24) /* Mux Table Entry has reached max subelement width */
#define H245_ERROR_ASN1 MAKE_H245_ERROR(ERROR_BASE_ID+0x25) /* ASN1 PDU compiler error - see PDU log */
#define H245_ERROR_NO_MUX_CAPS MAKE_H245_ERROR(ERROR_BASE_ID+0x26) /* Mux Capabilities have not been loaded */
#define H245_ERROR_NO_CAPDESC MAKE_H245_ERROR(ERROR_BASE_ID+0x27) /* No Capability Descriptors set */
#if defined(REMOVE_FROM_TSP)
// declare exported functions
#if defined(H245DLL_EXPORT)
#define H245DLL __declspec (dllexport)
#else // (H245DLL_EXPORT)
#define H245DLL __declspec (dllimport)
#endif // (H245DLL_EXPORT)
#else // REMOVE_FROM_TSP
#define H245DLL
#endif // REMOVE_FROM_TSP
/************************************/
/* ASN.1 DATASTRUCTURES ABSTRACTION */
/************************************/
#include "h245asn1.h"
typedef struct NonStandardIdentifier H245_NONSTANDID_T;
typedef struct NonStandardParameter H245_NONSTANDARD_PARAMETER_T;
typedef H245_NONSTANDARD_PARAMETER_T H245_CAP_NONSTANDARD_T;
typedef struct H261VideoCapability H245_CAP_H261_T;
typedef struct H262VideoCapability H245_CAP_H262_T;
typedef struct H263VideoCapability H245_CAP_H263_T;
typedef struct IS11172VideoCapability H245_CAP_VIS11172_T;
typedef struct IS11172AudioCapability H245_CAP_AIS11172_T;
typedef struct IS13818AudioCapability H245_CAP_IS13818_T;
typedef struct DataApplicationCapability H245_CAP_DATAAPPLICATION_T;
typedef struct H222Capability H245_CAP_H222_T;
typedef struct H223Capability H245_CAP_H223_T;
typedef struct V76Capability H245_CAP_VGMUX_T;
typedef struct H2250Capability H245_CAP_H2250_T;
typedef struct ConferenceCapability H245_CAP_CONFERENCE_T;
typedef struct TerminalLabel H245_TERMINAL_LABEL_T;
#define PDU_T MltmdSystmCntrlMssg
#define H245_ACCESS_T NetworkAccessParameters
typedef unsigned long H245_INST_T;
typedef unsigned short H245_CHANNEL_T;
typedef unsigned long H245_PORT_T;
#define H245_INVALID_ID ((H245_INST_T)0)
#define H245_INVALID_CHANNEL ((H245_CHANNEL_T)0)
#define H245_INVALID_PORT_NUMBER ((H245_PORT_T)-1)
typedef struct
{
unsigned int length;
unsigned char *value;
} H245_OCTET_STRING_T;
/************************/
/* H245 ABSTRACTION */
/************************/
/* H245_CAPDIR_T */
typedef enum
{
H245_CAPDIR_DONTCARE = 0,
H245_CAPDIR_RMTRX,
H245_CAPDIR_RMTTX,
H245_CAPDIR_RMTRXTX,
H245_CAPDIR_LCLRX,
H245_CAPDIR_LCLTX,
H245_CAPDIR_LCLRXTX
} H245_CAPDIR_T;
/* H245_DATA_T */
typedef enum
{
H245_DATA_DONTCARE = 0,
H245_DATA_NONSTD,
H245_DATA_NULL,
H245_DATA_VIDEO,
H245_DATA_AUDIO,
H245_DATA_DATA,
H245_DATA_ENCRYPT_D,
H245_DATA_CONFERENCE,
H245_DATA_MUX /* mux parameters */
} H245_DATA_T;
/* H245_CLIENT_T */
typedef enum
{
H245_CLIENT_DONTCARE = 0, // For H245EnumCap/H245GetCap
H245_CLIENT_NONSTD,
H245_CLIENT_VID_NONSTD,
H245_CLIENT_VID_H261,
H245_CLIENT_VID_H262,
H245_CLIENT_VID_H263,
H245_CLIENT_VID_IS11172,
H245_CLIENT_AUD_NONSTD,
H245_CLIENT_AUD_G711_ALAW64,
H245_CLIENT_AUD_G711_ALAW56,
H245_CLIENT_AUD_G711_ULAW64,
H245_CLIENT_AUD_G711_ULAW56,
H245_CLIENT_AUD_G722_64,
H245_CLIENT_AUD_G722_56,
H245_CLIENT_AUD_G722_48,
H245_CLIENT_AUD_G723,
H245_CLIENT_AUD_G728,
H245_CLIENT_AUD_G729,
H245_CLIENT_AUD_GDSVD,
H245_CLIENT_AUD_IS11172,
H245_CLIENT_AUD_IS13818,
H245_CLIENT_DAT_NONSTD,
H245_CLIENT_DAT_T120,
H245_CLIENT_DAT_DSMCC,
H245_CLIENT_DAT_USERDATA,
H245_CLIENT_DAT_T84,
H245_CLIENT_DAT_T434,
H245_CLIENT_DAT_H224,
H245_CLIENT_DAT_NLPID,
H245_CLIENT_DAT_DSVD,
H245_CLIENT_DAT_H222,
H245_CLIENT_ENCRYPTION_TX,
H245_CLIENT_ENCRYPTION_RX,
H245_CLIENT_CONFERENCE,
// Multiplex capabilities
H245_CLIENT_MUX_NONSTD,
H245_CLIENT_MUX_H222,
H245_CLIENT_MUX_H223,
H245_CLIENT_MUX_VGMUX,
H245_CLIENT_MUX_H2250,
H245_CLIENT_MUX_H223_ANNEX_A
} H245_CLIENT_T;
/* H245_CAP_T */
typedef union
{
H245_CAP_NONSTANDARD_T H245_NonStd; /* not implemented */
H245_CAP_NONSTANDARD_T H245Vid_NONSTD;
H245_CAP_H261_T H245Vid_H261;
H245_CAP_H262_T H245Vid_H262;
H245_CAP_H263_T H245Vid_H263;
H245_CAP_VIS11172_T H245Vid_IS11172;
H245_CAP_NONSTANDARD_T H245Aud_NONSTD;
unsigned short H245Aud_G711_ALAW64;
unsigned short H245Aud_G711_ALAW56;
unsigned short H245Aud_G711_ULAW64;
unsigned short H245Aud_G711_ULAW56;
unsigned short H245Aud_G722_64;
unsigned short H245Aud_G722_56;
unsigned short H245Aud_G722_48;
H245_CAP_G723_T H245Aud_G723;
unsigned short H245Aud_G728;
unsigned short H245Aud_G729;
unsigned short H245Aud_GDSVD;
H245_CAP_AIS11172_T H245Aud_IS11172;
H245_CAP_IS13818_T H245Aud_IS13818;
H245_CAP_DATAAPPLICATION_T H245Dat_NONSTD;
H245_CAP_DATAAPPLICATION_T H245Dat_T120;
H245_CAP_DATAAPPLICATION_T H245Dat_DSMCC;
H245_CAP_DATAAPPLICATION_T H245Dat_USERDATA;
H245_CAP_DATAAPPLICATION_T H245Dat_T84;
H245_CAP_DATAAPPLICATION_T H245Dat_T434;
H245_CAP_DATAAPPLICATION_T H245Dat_H224;
H245_CAP_DATAAPPLICATION_T H245Dat_NLPID;
H245_CAP_DATAAPPLICATION_T H245Dat_DSVD;
H245_CAP_DATAAPPLICATION_T H245Dat_H222;
ASN1_BOOL H245Encryption_TX;
unsigned char H245Encryption_RX;
H245_CAP_CONFERENCE_T H245Conference;
// Multiplex capabilities
H245_CAP_NONSTANDARD_T H245Mux_NONSTD;
H245_CAP_H222_T H245Mux_H222;
H245_CAP_H223_T H245Mux_H223;
H245_CAP_VGMUX_T H245Mux_VGMUX;
H245_CAP_H2250_T H245Mux_H2250;
} H245_CAP_T;
/* H245_CAPID_T */
typedef unsigned short H245_CAPID_T;
#define H245_INVALID_CAPID ((H245_CAPID_T)-1)
#define H245_MAX_CAPID (((H245_CAPID_T)-1) / 2)
/* H245_CAPDESCID_T */
typedef unsigned short H245_CAPDESCID_T;
#define H245_INVALID_CAPDESCID ((H245_CAPDESCID_T)-1)
/* H245_SIMCAP_T */
#define H245_MAX_ALTCAPS 16
typedef struct
{
unsigned short Length; /* number of CapId's in Array */
H245_CAPID_T AltCaps[H245_MAX_ALTCAPS]; /* list of alternatives CapId's */
} H245_SIMCAP_T;
#define H245_MAX_SIMCAPS 16
/* H245_CAPDESC_T */
typedef struct
{
unsigned short Length;
H245_SIMCAP_T SimCapArray[H245_MAX_SIMCAPS];
} H245_CAPDESC_T;
/* H245_TOTCAPDESC_T */
typedef struct
{
H245_CAPDESCID_T CapDescId;
H245_CAPDESC_T CapDesc;
} H245_TOTCAPDESC_T;
/* H245_TOTCAP_T */
typedef struct
{
H245_CAPDIR_T Dir;
H245_DATA_T DataType;
H245_CLIENT_T ClientType;
H245_CAPID_T CapId;
H245_CAP_T Cap;
} H245_TOTCAP_T;
/* H245_CONFIG_T */
typedef enum
{
H245_CONF_H324 = 1,
H245_CONF_H323,
H245_CONF_H310,
H245_CONF_GVD
} H245_CONFIG_T;
/* H245_ACC_REJ_T */
typedef unsigned long H245_ACC_REJ_T;
#define H245_ACC 0
#define H245_REJ 1 // unspecified
// Master Slave Determination reject causes
#define H245_REJ_MSD_IDENTICAL identicalNumbers_chosen
// Terminal Capability Set reject causes
#define H245_REJ_UNDEF_TBL_ENTRY undefinedTableEntryUsed_chosen
#define H245_REJ_DIS_CAP_EXCEED dscrptrCpctyExcdd_chosen
#define H245_REJ_TBLENTRY_CAP_EXCEED tblEntryCpctyExcdd_chosen
// Open Logical Channel reject causes
#define H245_REJ_REV_PARAM unstblRvrsPrmtrs_chosen
#define H245_REJ_TYPE_NOTSUPPORT dataTypeNotSupported_chosen
#define H245_REJ_TYPE_NOTAVAIL dataTypeNotAvailable_chosen
#define H245_REJ_TYPE_UNKNOWN unknownDataType_chosen
#define H245_REJ_AL_COMB dtTypALCmbntnNtSpprtd_chosen
#define H245_REJ_MULTICAST mltcstChnnlNtAllwd_chosen
#define H245_REJ_BANDWIDTH insufficientBandwidth_chosen
#define H245_REJ_STACK sprtStckEstblshmntFld_chosen
#define H245_REJ_SESSION_ID invalidSessionID_chosen
#define H245_REJ_MASTER_SLAVE_CONFLICT masterSlaveConflict_chosen
// Request Channel Close reject causes - use H245_REJ
// Multiplex Table Entry Send reject causes
#define H245_REJ_MUX_COMPLICATED descriptorTooComplex_chosen
// Request Mode reject causes
#define H245_REJ_UNAVAILABLE modeUnavailable_chosen
#define H245_REJ_MULTIPOINT multipointConstraint_chosen
#define H245_REJ_DENIED requestDenied_chosen
/* H245_ACC_REJ_MUX_T */
typedef struct
{
H245_ACC_REJ_T AccRej;
unsigned long MuxEntryId;
} H245_ACC_REJ_MUX_T[15];
/* H245_H222_LOGICAL_PARAM_T */
typedef struct
{
unsigned short resourceID;
unsigned short subChannelID;
ASN1_BOOL pcr_pidPresent;
unsigned short pcr_pid; // optional
H245_OCTET_STRING_T programDescriptors; // optional
H245_OCTET_STRING_T streamDescriptors; // optional
} H245_H222_LOGICAL_PARAM_T;
/* H245_H223_LOGICAL_PARAM_T */
typedef enum
{
H245_H223_AL_NONSTD = H223LCPs_aLTp_nnStndrd_chosen,
H245_H223_AL_AL1FRAMED = H223LCPs_aLTp_al1Frmd_chosen,
H245_H223_AL_AL1NOTFRAMED = H223LCPs_aLTp_al1NtFrmd_chosen,
H245_H223_AL_AL2NOSEQ = H223LCPs_aLTp_a2WSNs_1_chosen,
H245_H223_AL_AL2SEQ = H223LCPs_aLTp_a2WSNs_2_chosen,
H245_H223_AL_AL3 = H223LCPs_aLTp_al3_chosen
} H245_H223_AL_T;
typedef struct
{
H245_H223_AL_T AlType;
unsigned int SndBufSize; // 0..16777215
unsigned char CtlFldOctet; // 0..2
ASN1_BOOL SegmentFlag;
H245_NONSTANDARD_PARAMETER_T H223_NONSTD;
} H245_H223_LOGICAL_PARAM_T;
/* H245_VGMUX_LOGICAL_PARAM_T */
typedef enum
{
H245_V76_CRC8BIT = crc8bit_chosen,
H245_V76_CRC16BIT = crc16bit_chosen,
H245_V76_CRC32BIT = crc32bit_chosen
} H245_V76_CRC_LENGTH_T;
typedef enum
{
H245_V76_WITH_ADDRESS = wAddress_chosen,
H245_V76_WITHOUT_ADDRESS = woAddress_chosen
} H245_V76_SUSPEND_RESUME_T;
typedef enum
{
H245_V76_ERM = eRM_chosen,
H245_V76_UNERM = uNERM_chosen
} H245_V76_MODE_T;
typedef enum
{
H245_V76_REJ = rej_chosen,
H245_V76_SREJ = sREJ_chosen,
H245_V76_MSREJ = mSREJ_chosen
} H245_V76_RECOVERY_T;
typedef struct
{
H245_V76_CRC_LENGTH_T crcLength;
unsigned short n401;
ASN1_BOOL loopbackTestProcedure;
H245_V76_SUSPEND_RESUME_T suspendResume;
ASN1_BOOL uIH;
H245_V76_MODE_T mode;
unsigned short windowSize; // Only valid if mode = ERM
H245_V76_RECOVERY_T recovery; // Only valid if mode = ERM
ASN1_BOOL audioHeaderPresent;
} H245_VGMUX_LOGICAL_PARAM_T;
typedef struct
{
unsigned char type;
/* Note: All unicast types should be odd */
#define H245_IP_UNICAST 1
#define H245_IP_MULTICAST 2
#define H245_IP6_UNICAST 3
#define H245_IP6_MULTICAST 4
#define H245_IPSSR_UNICAST 5 // IP Strict Source Route
#define H245_IPLSR_UNICAST 6 // IP Loose Source Route
#define H245_IPX_UNICAST 9
#define H245_NETBIOS_UNICAST 11
union
{
// type == H245_IP_UNICAST or H245_IP_MULTICAST
struct
{
unsigned short tsapIdentifier;
unsigned char network[4];
} ip;
// type == H245_IP6_UNICAST or H245_IP6_MULTICAST
struct
{
unsigned short tsapIdentifier;
unsigned char network[16];
} ip6;
// type == H245_IPSSR_UNICAST or H245_IPLSR_UNICAST
struct
{
unsigned short tsapIdentifier;
unsigned char network[4];
unsigned char * route; // Routing info
unsigned long dwCount; // Number of addresses in above
} ipSourceRoute;
// type == H245_IPX_UNICAST
struct
{
unsigned char node[6];
unsigned char netnum[4];
unsigned char tsapIdentifier[2];
} ipx;
// type == H245_NETBIOS_UNICAST
unsigned char netBios[16];
} u;
} H245_TRANSPORT_ADDRESS_T;
/* H245_H2250_LOGICAL_PARAM_T */
typedef struct
{
// Note: first 8 fields MUST be same as H245_H2250ACK_LOGICAL_PARAM_T
H2250LCPs_nnStndrdLink nonStandardList; // Optional
H245_TRANSPORT_ADDRESS_T mediaChannel; // Media Channel Address
ASN1_BOOL mediaChannelPresent; // TRUE if previous field used
H245_TRANSPORT_ADDRESS_T mediaControlChannel; // Reverse RTCP channel
ASN1_BOOL mediaControlChannelPresent; // TRUE if previous field used
unsigned char dynamicRTPPayloadType; // 96..127
ASN1_BOOL dynamicRTPPayloadTypePresent; // TRUE if previous field used
unsigned char sessionID; // 0..255
unsigned char associatedSessionID; // 1..255
ASN1_BOOL associatedSessionIDPresent; // TRUE if previous field used
ASN1_BOOL mediaGuaranteed; // TRUE if guaranteed delivery
ASN1_BOOL mediaGuaranteedPresent; // TRUE if previous field used
ASN1_BOOL mediaControlGuaranteed; // TRUE if previous field used
ASN1_BOOL mediaControlGuaranteedPresent;// TRUE if previous field used
ASN1_BOOL silenceSuppression; // TRUE if using silence suppression
ASN1_BOOL silenceSuppressionPresent; // TRUE if previous field used
H245_TERMINAL_LABEL_T destination; // Terminal label for destination
ASN1_BOOL destinationPresent; // TRUE if previous field used
ASN1_BOOL h261aVideoPacketization;
} H245_H2250_LOGICAL_PARAM_T;
/* H245_H2250ACK_LOGICAL_PARAM_T */
typedef struct
{
H2250LCAPs_nnStndrdLink nonStandardList; // Optional
H245_TRANSPORT_ADDRESS_T mediaChannel; // Transport address
ASN1_BOOL mediaChannelPresent; // TRUE if previous field used
H245_TRANSPORT_ADDRESS_T mediaControlChannel; // Forward RTCP channel
ASN1_BOOL mediaControlChannelPresent; // TRUE if previous field used
unsigned char dynamicRTPPayloadType; // 96..127
ASN1_BOOL dynamicRTPPayloadTypePresent;// TRUE if previous field used
unsigned char sessionID; // 1..255
ASN1_BOOL sessionIDPresent; // TRUE if previous field used
} H245_H2250ACK_LOGICAL_PARAM_T;
// Comments from MikeV.
// 07/17/98, mikev comments: this enum is hacky - it's using the ASN.1 choice
// integers to tag internal structures. The internal structures don't always
// have a 1:1 relationship with the ASN.1. For example, H245_H2250ACK_LOGICAL_PARAM_T
// is tagged H245_H2250ACK, and there is no real "choice" for that
/* H245_MUX_T */
typedef enum
{
H245_H222 = fLCPs_mPs_h222LCPs_chosen,
H245_H223 = fLCPs_mPs_h223LCPs_chosen,
H245_VGMUX = fLCPs_mPs_v76LCPs_chosen,
H245_H2250 = fLCPs_mPs_h2250LCPs_chosen,
H245_H2250ACK = H245_H2250 + 1
} H245_MUX_KIND_T;
typedef struct
{
H245_MUX_KIND_T Kind;
union
{
H245_H222_LOGICAL_PARAM_T H222;
H245_H223_LOGICAL_PARAM_T H223;
H245_VGMUX_LOGICAL_PARAM_T VGMUX;
H245_H2250_LOGICAL_PARAM_T H2250;
H245_H2250ACK_LOGICAL_PARAM_T H2250ACK;
} u;
} H245_MUX_T;
/*
H245_MUX_ENTRY_ELEMENT_T
This structure defines the multiplex pattern
which will be used to decode bit patterns in
a given mux table entry. the Kind defines
whether this is a recursive structure (i.e.
pointing to yet another Mux Entry Element) or
whether it is a terminating leaf in the recursive
mux tree.
RepeatCount indicates how many bits should be
used for this channel. If bit count == 0 this
indicates repeat sequence until close flag
*/
typedef enum
{
H245_MUX_LOGICAL_CHANNEL = 1, /* logical channel number (Terminate list) */
H245_MUX_ENTRY_ELEMENT /* recursive.. yet another one */
} H245_MUX_ENTRY_KIND_T;
typedef struct H245_MUX_ENTRY_ELEMENT_T
{
struct H245_MUX_ENTRY_ELEMENT_T *pNext;
H245_MUX_ENTRY_KIND_T Kind;
union
{
H245_CHANNEL_T Channel;
struct H245_MUX_ENTRY_ELEMENT_T *pMuxTblEntryElem;
} u;
/* RepeatCount */
/* RepeatCount == 0 -> repeat until close */
/* RepeatCount != 0 -> repeate count */
unsigned long RepeatCount;
} H245_MUX_ENTRY_ELEMENT_T;
/*
H245_MUX_TABLE_T
an H245 Mux Table is defined as a linked list of
Mux Entry Descriptors. Each descriptor has an
associated entry number. These entry numbers
range from 1-15 and must be unique within the table.
The end of the list is designated by a pNext == NULL
*/
typedef struct H245_MUX_TABLE_T
{
struct H245_MUX_TABLE_T *pNext;
unsigned long MuxEntryId;
H245_MUX_ENTRY_ELEMENT_T *pMuxTblEntryElem; /* NULL indicates delete entry */
} H245_MUX_TABLE_T;
/********************/
/********************/
/* Indicator Code */
/********************/
/********************/
#define H245_IND_MSTSLV 0x01
#define H245_IND_CAP 0x02
#define H245_IND_CESE_RELEASE 0x30
#define H245_IND_OPEN 0x03
#define H245_IND_OPEN_CONF 0x04
#define H245_IND_CLOSE 0x05
#define H245_IND_REQ_CLOSE 0x06
#define H245_IND_CLCSE_RELEASE 0x31
#define H245_IND_MUX_TBL 0x07
#define H245_IND_MTSE_RELEASE 0x08
#define H245_IND_RMESE 0x09
#define H245_IND_RMESE_RELEASE 0x0A
#define H245_IND_MRSE 0x0B
#define H245_IND_MRSE_RELEASE 0x0C
#define H245_IND_MLSE 0x0D
#define H245_IND_MLSE_RELEASE 0x0E
#define H245_IND_NONSTANDARD_REQUEST 0x0F
#define H245_IND_NONSTANDARD_RESPONSE 0x10
#define H245_IND_NONSTANDARD_COMMAND 0x11
#define H245_IND_NONSTANDARD 0x12
#define H245_IND_MISC_COMMAND 0x13
#define H245_IND_MISC 0x14
#define H245_IND_COMM_MODE_REQUEST 0x15
#define H245_IND_COMM_MODE_RESPONSE 0x16
#define H245_IND_COMM_MODE_COMMAND 0x17
#define H245_IND_CONFERENCE_REQUEST 0x18
#define H245_IND_CONFERENCE_RESPONSE 0x19
#define H245_IND_CONFERENCE_COMMAND 0x1A
#define H245_IND_CONFERENCE 0x1B
#define H245_IND_SEND_TERMCAP 0x1C
#define H245_IND_ENCRYPTION 0x1D
#define H245_IND_FLOW_CONTROL 0x1E
#define H245_IND_ENDSESSION 0x1F
#define H245_IND_FUNCTION_NOT_UNDERSTOOD 0x20
#define H245_IND_JITTER 0x21
#define H245_IND_H223_SKEW 0x22
#define H245_IND_NEW_ATM_VC 0x23
#define H245_IND_USERINPUT 0x24
#define H245_IND_H2250_MAX_SKEW 0x25
#define H245_IND_MC_LOCATION 0x26
#define H245_IND_VENDOR_ID 0x27
#define H245_IND_FUNCTION_NOT_SUPPORTED 0x28
#define H245_IND_H223_RECONFIG 0x29
#define H245_IND_H223_RECONFIG_ACK 0x2A
#define H245_IND_H223_RECONFIG_REJECT 0x2B
/* H245_MSTSLV_T */
typedef enum
{
H245_INDETERMINATE = 0, // Master/Slave Determination failed
H245_MASTER = master_chosen, // Local terminal is Master
H245_SLAVE = slave_chosen // Local terminal is Slave
} H245_MSTSLV_T;
/* H245_IND_OPEN_T */
typedef struct
{
/* for receive */
H245_CHANNEL_T RxChannel;
H245_PORT_T RxPort; // optional
H245_DATA_T RxDataType;
H245_CLIENT_T RxClientType;
H245_CAP_T *pRxCap;
H245_MUX_T *pRxMux;
/* for bi-directional channel */
/* requested transmit stuff */
H245_DATA_T TxDataType;
H245_CLIENT_T TxClientType;
H245_CAP_T *pTxCap;
H245_MUX_T *pTxMux;
H245_ACCESS_T *pSeparateStack; // optional
} H245_IND_OPEN_T;
/* H245_IND_OPEN_CONF_T */
typedef struct
{
/* receive channel */
/* remote requested channel # */
H245_CHANNEL_T RxChannel;
/* transmit channel */
/* locally opened transmit channel # */
H245_CHANNEL_T TxChannel;
} H245_IND_OPEN_CONF_T;
/* H245_IND_CLOSE_T */
typedef enum
{
H245_USER = user_chosen,
H245_LCSE = lcse_chosen
} H245_IND_CLOSE_REASON_T;
typedef struct
{
H245_CHANNEL_T Channel;
H245_IND_CLOSE_REASON_T Reason;
} H245_IND_CLOSE_T;
/* H245_IND_MUX_TBL */
typedef struct
{
H245_MUX_TABLE_T *pMuxTbl;
unsigned long Count;
} H245_IND_MUXTBL_T;
/* H245_RMESE_T */
typedef struct
{
unsigned short awMultiplexTableEntryNumbers[15];
unsigned long dwCount;
} H245_RMESE_T;
/* H245_IND_MRSE_T */
typedef struct
{
RequestedModesLink pRequestedModes;
} H245_IND_MRSE_T;
/* H245_MLSE_T */
typedef enum
{
H245_SYSTEM_LOOP = systemLoop_chosen,
H245_MEDIA_LOOP = mediaLoop_chosen,
H245_CHANNEL_LOOP = logicalChannelLoop_chosen
} H245_LOOP_TYPE_T;
typedef struct
{
H245_LOOP_TYPE_T LoopType;
H245_CHANNEL_T Channel;
} H245_MLSE_T;
/* H245_IND_ENDSESSION_T */
typedef enum
{
H245_ENDSESSION_NONSTD = EndSssnCmmnd_nonStandard_chosen,
H245_ENDSESSION_DISCONNECT = disconnect_chosen,
H245_ENDSESSION_TELEPHONY,
H245_ENDSESSION_V8BIS,
H245_ENDSESSION_V34DSVD,
H245_ENDSESSION_V34DUPFAX,
H245_ENDSESSION_V34H324
} H245_ENDSESSION_T;
typedef struct
{
H245_ENDSESSION_T SessionMode;
/* if non standard chosen */
H245_NONSTANDARD_PARAMETER_T SessionNonStd;
} H245_IND_ENDSESSION_T;
/* H245_IND_NONSTANDARD_T */
typedef struct
{
unsigned char * pData;
unsigned long dwDataLength;
unsigned short * pwObjectId;
unsigned long dwObjectIdLength;
unsigned char byCountryCode;
unsigned char byExtension;
unsigned short wManufacturerCode;
} H245_IND_NONSTANDARD_T;
typedef struct
{
CMTEy_nnStndrdLink pNonStandard; // NULL if not present
unsigned char sessionID; // 0..255
unsigned char associatedSessionID; // 1..255
ASN1_BOOL associatedSessionIDPresent; // TRUE if previous field used
H245_TERMINAL_LABEL_T terminalLabel;
ASN1_BOOL terminalLabelPresent;
unsigned short * pSessionDescription;
unsigned short wSessionDescriptionLength;
H245_TOTCAP_T dataType;
H245_TRANSPORT_ADDRESS_T mediaChannel; // Media Channel Address
ASN1_BOOL mediaChannelPresent; // TRUE if previous field used
H245_TRANSPORT_ADDRESS_T mediaControlChannel; // Reverse RTCP channel
ASN1_BOOL mediaControlChannelPresent; // TRUE if previous field used
ASN1_BOOL mediaGuaranteed; // TRUE if guaranteed delivery
ASN1_BOOL mediaGuaranteedPresent; // TRUE if previous field used
ASN1_BOOL mediaControlGuaranteed; // TRUE if previous field used
ASN1_BOOL mediaControlGuaranteedPresent;// TRUE if previous field used
} H245_COMM_MODE_ENTRY_T;
typedef struct
{
H245_COMM_MODE_ENTRY_T *pTable;
unsigned char byTableCount;
} H245_IND_COMM_MODE_T;
typedef enum
{
H245_REQ_TERMINAL_LIST = terminalListRequest_chosen,
H245_REQ_MAKE_ME_CHAIR = makeMeChair_chosen,
H245_REQ_CANCEL_MAKE_ME_CHAIR = cancelMakeMeChair_chosen,
H245_REQ_DROP_TERMINAL = dropTerminal_chosen,
H245_REQ_TERMINAL_ID = requestTerminalID_chosen,
H245_REQ_ENTER_H243_PASSWORD = enterH243Password_chosen,
H245_REQ_ENTER_H243_TERMINAL_ID = enterH243TerminalID_chosen,
H245_REQ_ENTER_H243_CONFERENCE_ID = enterH243ConferenceID_chosen
} H245_CONFER_REQ_ENUM_T;
typedef struct
{
H245_CONFER_REQ_ENUM_T RequestType;
unsigned char byMcuNumber;
unsigned char byTerminalNumber;
} H245_CONFER_REQ_T;
typedef enum
{
H245_RSP_MC_TERMINAL_ID = mCTerminalIDResponse_chosen,
H245_RSP_TERMINAL_ID = terminalIDResponse_chosen,
H245_RSP_CONFERENCE_ID = conferenceIDResponse_chosen,
H245_RSP_PASSWORD = passwordResponse_chosen,
H245_RSP_TERMINAL_LIST = terminalListResponse_chosen,
H245_RSP_VIDEO_COMMAND_REJECT = videoCommandReject_chosen,
H245_RSP_TERMINAL_DROP_REJECT = terminalDropReject_chosen,
H245_RSP_DENIED_CHAIR_TOKEN,
H245_RSP_GRANTED_CHAIR_TOKEN
} H245_CONFER_RSP_ENUM_T;
typedef struct
{
H245_CONFER_RSP_ENUM_T ResponseType;
unsigned char byMcuNumber;
unsigned char byTerminalNumber;
unsigned char *pOctetString;
unsigned char byOctetStringLength;
TerminalLabel *pTerminalList;
unsigned short wTerminalListCount;
} H245_CONFER_RSP_T;
typedef enum
{
H245_CMD_BROADCAST_CHANNEL = brdcstMyLgclChnnl_chosen,
H245_CMD_CANCEL_BROADCAST_CHANNEL = cnclBrdcstMyLgclChnnl_chosen,
H245_CMD_BROADCASTER = makeTerminalBroadcaster_chosen,
H245_CMD_CANCEL_BROADCASTER = cnclMkTrmnlBrdcstr_chosen,
H245_CMD_SEND_THIS_SOURCE = sendThisSource_chosen,
H245_CMD_CANCEL_SEND_THIS_SOURCE = cancelSendThisSource_chosen,
H245_CMD_DROP_CONFERENCE = dropConference_chosen
} H245_CONFER_CMD_ENUM_T;
typedef struct
{
H245_CONFER_CMD_ENUM_T CommandType;
H245_CHANNEL_T Channel;
unsigned char byMcuNumber;
unsigned char byTerminalNumber;
} H245_CONFER_CMD_T;
typedef enum
{
H245_IND_SBE_NUMBER = sbeNumber_chosen,
H245_IND_TERMINAL_NUMBER_ASSIGN = terminalNumberAssign_chosen,
H245_IND_TERMINAL_JOINED = terminalJoinedConference_chosen,
H245_IND_TERMINAL_LEFT = terminalLeftConference_chosen,
H245_IND_SEEN_BY_ONE_OTHER = seenByAtLeastOneOther_chosen,
H245_IND_CANCEL_SEEN_BY_ONE_OTHER = cnclSnByAtLstOnOthr_chosen,
H245_IND_SEEN_BY_ALL = seenByAll_chosen,
H245_IND_CANCEL_SEEN_BY_ALL = cancelSeenByAll_chosen,
H245_IND_TERMINAL_YOU_ARE_SEEING = terminalYouAreSeeing_chosen,
H245_IND_REQUEST_FOR_FLOOR = requestForFloor_chosen
} H245_CONFER_IND_ENUM_T;
typedef struct
{
H245_CONFER_IND_ENUM_T IndicationType;
unsigned char bySbeNumber;
unsigned char byMcuNumber;
unsigned char byTerminalNumber;
} H245_CONFER_IND_T;
typedef enum
{
H245_SCOPE_CHANNEL_NUMBER = FCCd_scp_lgclChnnlNmbr_chosen,
H245_SCOPE_RESOURCE_ID = FlwCntrlCmmnd_scp_rsrcID_chosen,
H245_SCOPE_WHOLE_MULTIPLEX = FCCd_scp_whlMltplx_chosen
} H245_SCOPE_T;
#define H245_NO_RESTRICTION 0xFFFFFFFFL
typedef struct
{
H245_SCOPE_T Scope;
H245_CHANNEL_T Channel; // only used if Scope is H245_SCOPE_CHANNEL_NUMBER
unsigned short wResourceID; // only used if Scope is H245_SCOPE_RESOURCE_ID
unsigned long dwRestriction; // H245_NO_RESTRICTION if no restriction
} H245_IND_FLOW_CONTROL_T;
/* H245_USERINPUT_T */
typedef enum
{
H245_USERINPUT_NONSTD = UsrInptIndctn_nnStndrd_chosen,
H245_USERINPUT_STRING = alphanumeric_chosen
} H245_USERINPUT_KIND_T;
typedef struct
{
H245_USERINPUT_KIND_T Kind;
union
{
WCHAR * pGenString;
H245_NONSTANDARD_PARAMETER_T NonStd;
} u;
} H245_IND_USERINPUT_T;
typedef struct
{
H245_CHANNEL_T LogicalChannelNumber1;
H245_CHANNEL_T LogicalChannelNumber2;
unsigned short wSkew;
} H245_IND_SKEW_T;
typedef struct
{
H245_NONSTANDID_T Identifier;
unsigned char *pProductNumber;
unsigned char byProductNumberLength;
unsigned char *pVersionNumber;
unsigned char byVersionNumberLength;
} H245_IND_VENDOR_ID_T;
typedef enum
{
UNKNOWN,
REQ_NONSTANDARD,
REQ_MASTER_SLAVE,
REQ_TERMCAP_SET,
REQ_OPEN_LOGICAL_CHANNEL,
REQ_CLOSE_LOGICAL_CHANNEL,
REQ_REQUEST_CHANNEL_CLOSE,
REQ_MULTIPLEX_ENTRY_SEND,
REQ_REQUEST_MULTIPLEX_ENTRY,
REQ_REQUEST_MODE,
REQ_ROUND_TRIP_DELAY,
REQ_MAINTENANCE_LOOP,
REQ_COMMUNICATION_MODE,
REQ_CONFERENCE,
REQ_H223_ANNEX_A_RECONFIG,
RSP_NONSTANDARD,
RSP_MASTER_SLAVE_ACK,
RSP_MASTER_SLAVE_REJECT,
RSP_TERMCAP_SET_ACK,
RSP_TERMCAP_SET_REJECT,
RSP_OPEN_LOGICAL_CHANNEL_ACK,
RSP_OPEN_LOGICAL_CHANNEL_REJECT,
RSP_CLOSE_LOGICAL_CHANNEL_ACK,
RSP_REQUEST_CHANNEL_CLOSE_ACK,
RSP_REQUEST_CHANNEL_CLOSE_REJECT,
RSP_MULTIPLEX_ENTRY_SEND_ACK,
RSP_MULTIPLEX_ENTRY_SEND_REJECT,
RSP_REQUEST_MULTIPLEX_ENTRY_ACK,
RSP_REQUEST_MULTIPLEX_ENTRY_REJECT,
RSP_REQUEST_MODE_ACK,
RSP_REQUEST_MODE_REJECT,
RSP_ROUND_TRIP_DELAY,
RSP_MAINTENANCE_LOOP_ACK,
RSP_MAINTENANCE_LOOP_REJECT,
RSP_COMMUNICATION_MODE,
RSP_CONFERENCE,
RSP_H223_ANNEX_A_RECONFIG_ACK,
RSP_H223_ANNEX_A_RECONFIG_REJECT,
CMD_NONSTANDARD,
CMD_MAINTENANCE_LOOP_OFF,
CMD_SEND_TERMCAP,
CMD_ENCRYPTION,
CMD_FLOW_CONTROL,
CMD_END_SESSION,
CMD_MISCELLANEOUS,
CMD_COMMUNICATION_MODE,
CMD_CONFERENCE,
IND_NONSTANDARD,
IND_FUNCTION_NOT_UNDERSTOOD,
IND_MASTER_SLAVE_RELEASE,
IND_TERMCAP_SET_RELEASE,
IND_OPEN_LOGICAL_CHANNEL_CONFIRM,
IND_REQUEST_CHANNEL_CLOSE_RELEASE,
IND_MULTIPLEX_ENTRY_SEND_RELEASE,
IND_REQUEST_MULTIPLEX_ENTRY_RELEASE,
IND_REQUEST_MODE_RELEASE,
IND_MISCELLANEOUS,
IND_JITTER,
IND_H223_SKEW,
IND_NEW_ATM_VC,
IND_USER_INPUT,
IND_H2250_MAX_SKEW,
IND_MC_LOCATION,
IND_CONFERENCE_INDICATION,
IND_VENDOR_IDENTIFICATION,
IND_FUNCTION_NOT_SUPPORTED,
} H245_SUBMESSAGE_T;
typedef enum
{
H245_SYNTAX_ERROR = syntaxError_chosen,
H245_SEMANTIC_ERROR = semanticError_chosen,
H245_UNKNOWN_FUNCTION = unknownFunction_chosen
} H245_FNS_CAUSE_T;
typedef struct
{
H245_FNS_CAUSE_T Cause;
H245_SUBMESSAGE_T Type;
} H245_IND_FNS_T;
/**************/
/* H245_IND_T */
/**************/
typedef struct
{
unsigned long Indicator; // Type
unsigned long dwPreserved; // User supplied dwPreserved from H245Init()
union
{
H245_MSTSLV_T IndMstSlv; // H245_IND_MSTSLV
// H245_IND_CAP
// H245_IND_CESE_RELEASE
H245_IND_OPEN_T IndOpen; // H245_IND_OPEN
H245_IND_OPEN_CONF_T IndOpenConf; // H245_IND_OPEN_CONF
H245_IND_CLOSE_T IndClose; // H245_IND_CLOSE
H245_CHANNEL_T IndReqClose; // H245_IND_REQ_CLOSE
// H245_IND_CLCSE_RELEASE
H245_IND_MUXTBL_T IndMuxTbl; // H245_IND_MUX_TBL
// H245_IND_MTSE_RELEASE
H245_RMESE_T IndRmese; // H245_IND_RMESE
// H245_IND_RMESE_RELEASE
H245_IND_MRSE_T IndMrse; // H245_IND_MRSE
// H245_IND_MRSE_RELEASE
H245_MLSE_T IndMlse; // H245_IND_MLSE
// H245_IND_MLSE_RELEASE
H245_IND_NONSTANDARD_T IndNonstandardRequest; // H245_IND_NONSTANDARD_REQUEST
H245_IND_NONSTANDARD_T IndNonstandardResponse; // H245_IND_NONSTANDARD_RESPONSE
H245_IND_NONSTANDARD_T IndNonstandardCommand; // H245_IND_NONSTANDARD_COMMAND
H245_IND_NONSTANDARD_T IndNonstandard; // H245_IND_NONSTANDARD
// H245_IND_MISC_COMMAND
// H245_IND_MISC
// H245_IND_COMM_MODE_REQUEST
H245_IND_COMM_MODE_T IndCommRsp; // H245_IND_COMM_MODE_RESPONSE
H245_IND_COMM_MODE_T IndCommCmd; // H245_IND_COMM_MODE_COMMAND
H245_CONFER_REQ_T IndConferReq; // H245_IND_CONFERENCE_REQUEST
H245_CONFER_RSP_T IndConferRsp; // H245_IND_CONFERENCE_RESPONSE
H245_CONFER_CMD_T IndConferCmd; // H245_IND_CONFERENCE_COMMAND
H245_CONFER_IND_T IndConfer; // H245_IND_CONFERENCE
// H245_IND_SEND_TERMCAP
// H245_IND_ENCRYPTION
H245_IND_FLOW_CONTROL_T IndFlowControl; // H245_IND_FLOW_CONTROL
H245_IND_ENDSESSION_T IndEndSession; // H245_IND_ENDSESSION
// H245_IND_FUNCTION_NOT_UNDERSTOOD
// H245_IND_JITTER
H245_IND_SKEW_T IndH223Skew; // H245_IND_H223_SKEW
// H245_IND_NEW_ATM_VC
H245_IND_USERINPUT_T IndUserInput; // H245_IND_USERINPUT
H245_IND_SKEW_T IndH2250MaxSkew; // H245_IND_H2250_MAX_SKEW
H245_TRANSPORT_ADDRESS_T IndMcLocation; // H245_IND_MC_LOCATION
H245_IND_VENDOR_ID_T IndVendorId; // H245_IND_VENDOR_ID
H245_IND_FNS_T IndFns; // H245_IND_FUNCTION_NOT_SUPPORTED
// H245_IND_H223_RECONFIG
// H245_IND_H223_RECONFIG_ACK
// H245_IND_H223_RECONFIG_REJECT
} u;
} H245_IND_T;
/********************/
/********************/
/* Confirm Code */
/********************/
/********************/
#define H245_CONF_INIT_MSTSLV 0x101
#define H245_CONF_SEND_TERMCAP 0x102
#define H245_CONF_OPEN 0x103
#define H245_CONF_NEEDRSP_OPEN 0x104
#define H245_CONF_CLOSE 0x105
#define H245_CONF_REQ_CLOSE 0x106
#define H245_CONF_MUXTBL_SND 0x107
#define H245_CONF_RMESE 0x109
#define H245_CONF_RMESE_REJECT 0x10A
#define H245_CONF_RMESE_EXPIRED 0x10B
#define H245_CONF_MRSE 0x10C
#define H245_CONF_MRSE_REJECT 0x10D
#define H245_CONF_MRSE_EXPIRED 0x10E
#define H245_CONF_MLSE 0x10F
#define H245_CONF_MLSE_REJECT 0x110
#define H245_CONF_MLSE_EXPIRED 0x111
#define H245_CONF_RTDSE 0x112
#define H245_CONF_RTDSE_EXPIRED 0x113
/* H245_CONF_SEND_TERMCAP_T */
typedef struct
{
H245_ACC_REJ_T AccRej;
} H245_CONF_SEND_TERMCAP_T;
/* H245_CONF_OPEN_T */
typedef struct
{
H245_ACC_REJ_T AccRej;
H245_CHANNEL_T TxChannel;
H245_MUX_T * pTxMux; // optional
H245_CHANNEL_T RxChannel; // bi-dir only
H245_MUX_T * pRxMux; // bi-dir only
H245_PORT_T RxPort; // bi-dir only
H245_ACCESS_T * pSeparateStack; // optional
} H245_CONF_OPEN_T;
typedef H245_CONF_OPEN_T H245_CONF_NEEDRSP_OPEN_T;
/* H245_CONF_CLOSE_T */
typedef struct
{
H245_ACC_REJ_T AccRej;
H245_CHANNEL_T Channel;
} H245_CONF_CLOSE_T;
/* H245_CONF_REQ_CLOSE_T */
typedef H245_CONF_CLOSE_T H245_CONF_REQ_CLOSE_T;
/* H245_CONF_MUXTBL_T */
typedef struct
{
H245_ACC_REJ_T AccRej;
unsigned long MuxEntryId;
} H245_CONF_MUXTBL_T;
/***************/
/* H245_CONF_T */
/***************/
typedef struct
{
unsigned long Confirm; // Type
unsigned long dwPreserved; // User supplied dwPreserved from H245Init()
unsigned long dwTransId; // User supplied dwTransId from originating call
HRESULT Error; // Error code
union // Data for specific indications:
{
H245_MSTSLV_T ConfMstSlv; // H245_CONF_INIT_MSTSLV
H245_CONF_SEND_TERMCAP_T ConfSndTcap; // H245_CONF_SEND_TERMCAP
H245_CONF_OPEN_T ConfOpen; // H245_CONF_OPEN
H245_CONF_NEEDRSP_OPEN_T ConfOpenNeedRsp; // H245_CONF_NEEDRSP_OPEN
H245_CONF_CLOSE_T ConfClose; // H245_CONF_CLOSE
H245_CONF_REQ_CLOSE_T ConfReqClose; // H245_CONF_REQ_CLOSE
H245_CONF_MUXTBL_T ConfMuxSnd; // H245_CONF_MUXTBL_SND
H245_RMESE_T ConfRmese; // H245_CONF_RMESE
H245_RMESE_T ConfRmeseReject; // H245_CONF_RMESE_REJECT
// H245_CONF_RMESE_EXPIRED
unsigned short ConfMrse; // H245_CONF_MRSE
unsigned short ConfMrseReject; // H245_CONF_MRSE_REJECT
// H245_CONF_MRSE_EXPIRED
H245_MLSE_T ConfMlse; // H245_CONF_MLSE
H245_MLSE_T ConfMlseReject; // H245_CONF_MLSE_REJECT
// H245_CONF_MLSE_EXPIRED
// H245_CONF_RTDSE
// H245_CONF_RTDSE_EXPIRED
} u;
} H245_CONF_T;
typedef enum
{
H245_MESSAGE_REQUEST = MltmdSystmCntrlMssg_rqst_chosen,
H245_MESSAGE_RESPONSE = MSCMg_rspns_chosen,
H245_MESSAGE_COMMAND = MSCMg_cmmnd_chosen,
H245_MESSAGE_INDICATION = indication_chosen
} H245_MESSAGE_TYPE_T;
/*******************/
/* H245_CONF_IND_T */
/*******************/
typedef enum
{
H245_CONF = 1,
H245_IND
} H245_CONF_IND_KIND_T;
typedef struct
{
H245_CONF_IND_KIND_T Kind;
union
{
H245_CONF_T Confirm;
H245_IND_T Indication;
} u;
} H245_CONF_IND_T;
/***************************/
/* SYSTEM CONTROL MESSAGES */
/***************************/
typedef struct
{
unsigned long NumPduTx; /* number of tranmitted pdu's */
unsigned long NumPduRx; /* number of received pdu's */
unsigned long NumCRCErrors; /* number of crc errors */
unsigned long NumPduReTx; /* number of pdu's retransmitted */
} H245_SYSCON_STATS_T;
#define H245_SYSCON_TRACE_LVL 0x0100 /* pData = &dwTraceLevel */
#define H245_SYSCON_DUMP_TRACKER 0x0200 /* pData = NULL (debug) */
#define H245_SYSCON_GET_STATS 0x0300 /* pData = &H245_SYSCON_STATS_T */
#define H245_SYSCON_RESET_STATS 0x0400 /* pData = NULL */
#define H245_SYSCON_SET_FSM_N100 0x1000 /* pData = &dwRetryCount */
#define H245_SYSCON_SET_FSM_T101 0x1100 /* pData = &dwMilliseconds */
#define H245_SYSCON_SET_FSM_T102 0x1200 /* pData = &dwMilliseconds */
#define H245_SYSCON_SET_FSM_T103 0x1300 /* pData = &dwMilliseconds */
#define H245_SYSCON_SET_FSM_T104 0x1400 /* pData = &dwMilliseconds */
#define H245_SYSCON_SET_FSM_T105 0x1500 /* pData = &dwMilliseconds */
#define H245_SYSCON_SET_FSM_T106 0x1600 /* pData = &dwMilliseconds */
#define H245_SYSCON_SET_FSM_T107 0x1700 /* pData = &dwMilliseconds */
#define H245_SYSCON_SET_FSM_T108 0x1800 /* pData = &dwMilliseconds */
#define H245_SYSCON_SET_FSM_T109 0x1900 /* pData = &dwMilliseconds */
#define H245_SYSCON_GET_FSM_N100 0x2000 /* pData = &dwRetryCount */
#define H245_SYSCON_GET_FSM_T101 0x2100 /* pData = &dwMilliseconds */
#define H245_SYSCON_GET_FSM_T102 0x2200 /* pData = &dwMilliseconds */
#define H245_SYSCON_GET_FSM_T103 0x2300 /* pData = &dwMilliseconds */
#define H245_SYSCON_GET_FSM_T104 0x2400 /* pData = &dwMilliseconds */
#define H245_SYSCON_GET_FSM_T105 0x2500 /* pData = &dwMilliseconds */
#define H245_SYSCON_GET_FSM_T106 0x2600 /* pData = &dwMilliseconds */
#define H245_SYSCON_GET_FSM_T107 0x2700 /* pData = &dwMilliseconds */
#define H245_SYSCON_GET_FSM_T108 0x2800 /* pData = &dwMilliseconds */
#define H245_SYSCON_GET_FSM_T109 0x2900 /* pData = &dwMilliseconds */
/************************/
/* PROTOCOL ID FOR H245 */
/************************/
#define H245_PROTOID "0.0.8.245.0.2"
/**************************************************/
/* API Procedure Call Typedefs and API Prototypes */
/**************************************************/
typedef unsigned long H245_INST_T;
typedef HRESULT (*H245_CONF_IND_CALLBACK_T)(H245_CONF_IND_T *, void *);
typedef int (*H245_CAP_CALLBACK_T)(unsigned long, H245_TOTCAP_T *);
typedef int (*H245_CAPDESC_CALLBACK_T)(unsigned long, H245_TOTCAPDESC_T *);
#ifdef __cplusplus
extern "C" {
#endif
H245DLL H245_INST_T
H245Init (
H245_CONFIG_T Configuration,
unsigned long dwPhysId,
unsigned long *pdwLinkLayerPhysId,
unsigned long dwPreserved,
H245_CONF_IND_CALLBACK_T CallBack,
unsigned char byTerminalType
);
H245DLL H245_INST_T
H245GetInstanceId (unsigned long dwPhysicalId);
H245DLL HRESULT
H245EndSession (
H245_INST_T dwInst,
H245_ENDSESSION_T Mode,
const H245_NONSTANDARD_PARAMETER_T * pNonStd
);
H245DLL HRESULT
H245ShutDown (H245_INST_T dwInst);
H245DLL HRESULT
H245InitMasterSlave (
H245_INST_T dwInst,
unsigned long dwTransId
);
H245DLL HRESULT
H245SetLocalCap (
H245_INST_T dwInst,
H245_TOTCAP_T * pTotCap,
H245_CAPID_T * pCapId
);
H245DLL HRESULT
H245DelLocalCap (
H245_INST_T dwInst,
H245_CAPID_T CapId
);
H245DLL HRESULT
H245SetCapDescriptor (
H245_INST_T dwInst,
H245_CAPDESC_T *pCapDesc,
H245_CAPDESCID_T *pCapDescId
);
H245DLL HRESULT
H245DelCapDescriptor (
H245_INST_T dwInst,
H245_CAPDESCID_T CapDescId
);
H245DLL HRESULT
H245SendTermCaps (
H245_INST_T dwInst,
unsigned long dwTransId
);
H245DLL HRESULT
H245EnumCaps (
H245_INST_T dwInst,
unsigned long dwTransId,
H245_CAPDIR_T Direction,
H245_DATA_T DataType,
H245_CLIENT_T ClientType,
H245_CAP_CALLBACK_T pfCapCallback,
H245_CAPDESC_CALLBACK_T pfCapDescCallback
);
H245DLL HRESULT
H245GetCaps (
H245_INST_T dwInst,
H245_CAPDIR_T Direction,
H245_DATA_T DataType,
H245_CLIENT_T ClientType,
H245_TOTCAP_T * * ppTotCap,
unsigned long * pdwTotCapLen,
H245_TOTCAPDESC_T * * ppCapDesc,
unsigned long * pdwCapDescLen
);
H245DLL HRESULT
H245CopyCap (H245_TOTCAP_T **ppDestTotCap,
const H245_TOTCAP_T *pTotCap);
H245DLL HRESULT
H245FreeCap (H245_TOTCAP_T *pTotCap);
H245DLL HRESULT
H245CopyCapDescriptor (H245_TOTCAPDESC_T **ppDestCapDesc,
const H245_TOTCAPDESC_T *pCapDesc);
H245DLL HRESULT
H245FreeCapDescriptor (H245_TOTCAPDESC_T *pCapDesc);
H245DLL H245_MUX_T *
H245CopyMux (const H245_MUX_T * pMux);
H245DLL HRESULT
H245FreeMux (H245_MUX_T * pMux);
H245DLL HRESULT
H245OpenChannel (
H245_INST_T dwInst,
unsigned long dwTransId,
H245_CHANNEL_T wTxChannel,
const H245_TOTCAP_T * pTxMode,
const H245_MUX_T * pTxMux,
H245_PORT_T dwTxPort, // optional
const H245_TOTCAP_T * pRxMode, // bi-dir only
const H245_MUX_T * pRxMux, // bi-dir only
const H245_ACCESS_T * pSeparateStack // optional
);
H245DLL HRESULT
H245OpenChannelAccept (
H245_INST_T dwInst,
unsigned long dwTransId,
H245_CHANNEL_T wRxChannel, // RxChannel from IND_OPEN
const H245_MUX_T * pRxMux, // optional H2250LogicalChannelAckParameters
H245_CHANNEL_T wTxChannel, // bi-dir only
const H245_MUX_T * pTxMux, // bi-dir only optional H2250LogicalChannelParameters
H245_PORT_T dwTxPort, // bi-dir only optional
const H245_ACCESS_T * pSeparateStack // optional
);
H245DLL HRESULT
H245OpenChannelReject (
H245_INST_T dwInst,
H245_CHANNEL_T wRxChannel, // RxChannel from IND_OPEN
unsigned short wCause
);
H245DLL HRESULT
H245CloseChannel (
H245_INST_T dwInst,
unsigned long dwTransId,
H245_CHANNEL_T wTxChannel
);
H245DLL HRESULT
H245CloseChannelReq (
H245_INST_T dwInst,
unsigned long dwTransId,
H245_CHANNEL_T wRxChannel
);
H245DLL HRESULT
H245CloseChannelReqResp (
H245_INST_T dwInst,
H245_ACC_REJ_T AccRej,
H245_CHANNEL_T wChannel
);
H245DLL HRESULT
H245SendLocalMuxTable (
H245_INST_T dwInst,
unsigned long dwTransId,
H245_MUX_TABLE_T *pMuxTable
);
H245DLL HRESULT
H245MuxTableIndResp (
H245_INST_T dwInst,
H245_ACC_REJ_MUX_T AccRejMux,
unsigned long dwCount
);
H245DLL HRESULT
H245RequestMultiplexEntry (
H245_INST_T dwInst,
unsigned long dwTransId,
const unsigned short * pwMultiplexTableEntryNumbers,
unsigned long dwCount
);
H245DLL HRESULT
H245RequestMultiplexEntryAck (
H245_INST_T dwInst,
const unsigned short * pwMultiplexTableEntryNumbers,
unsigned long dwCount
);
H245DLL HRESULT
H245RequestMultiplexEntryReject (
H245_INST_T dwInst,
const unsigned short * pwMultiplexTableEntryNumbers,
unsigned long dwCount
);
/*
H245DLL HRESULT
H245RequestMode (
H245_INST_T dwInst,
unsigned long dwTransId,
const ModeElement * pModeElements,
unsigned long dwCount
);
*/
H245DLL HRESULT
H245RequestMode (
H245_INST_T dwInst,
unsigned long dwTransId,
// const ModeElement * pModeElements,
//[email protected]
ModeDescription ModeDescriptions[],
//[email protected]
unsigned long dwCount
) ;
H245DLL HRESULT
H245RequestModeAck (
H245_INST_T dwInst,
unsigned short wResponse
);
H245DLL HRESULT
H245RequestModeReject (
H245_INST_T dwInst,
unsigned short wCause
);
H245DLL HRESULT
H245RoundTripDelayRequest (
H245_INST_T dwInst,
unsigned long dwTransId
);
H245DLL HRESULT
H245MaintenanceLoop (
H245_INST_T dwInst,
unsigned long dwTransId,
H245_LOOP_TYPE_T dwLoopType,
H245_CHANNEL_T wChannel
);
H245DLL HRESULT
H245MaintenanceLoopRelease (H245_INST_T dwInst);
H245DLL HRESULT
H245MaintenanceLoopAccept (
H245_INST_T dwInst,
H245_CHANNEL_T wChannel
);
H245DLL HRESULT
H245MaintenanceLoopReject (
H245_INST_T dwInst,
H245_CHANNEL_T wChannel,
unsigned short wCause
);
H245DLL HRESULT
H245NonStandardObject (
H245_INST_T dwInst,
H245_MESSAGE_TYPE_T MessageType,
const unsigned char * pData,
unsigned long dwDataLength,
const unsigned short * pwObjectId,
unsigned long dwObjectIdLength
);
H245DLL HRESULT
H245NonStandardH221 (
H245_INST_T dwInst,
H245_MESSAGE_TYPE_T MessageType,
const unsigned char * pData,
unsigned long dwDataLength,
unsigned char byCountryCode,
unsigned char byExtension,
unsigned short wManufacturerCode
);
H245DLL HRESULT
H245CommunicationModeRequest(H245_INST_T dwInst);
H245DLL HRESULT
H245CommunicationModeResponse(
H245_INST_T dwInst,
const H245_COMM_MODE_ENTRY_T *pTable,
unsigned char byTableCount
);
H245DLL HRESULT
H245CommunicationModeCommand(
H245_INST_T dwInst,
const H245_COMM_MODE_ENTRY_T *pTable,
unsigned char byTableCount
);
H245DLL HRESULT
H245ConferenceRequest (
H245_INST_T dwInst,
H245_CONFER_REQ_ENUM_T RequestType,
unsigned char byMcuNumber,
unsigned char byTerminalNumber
);
H245DLL HRESULT
H245ConferenceResponse (
H245_INST_T dwInst,
H245_CONFER_RSP_ENUM_T ResponseType,
unsigned char byMcuNumber,
unsigned char byTerminalNumber,
const unsigned char *pOctetString,
unsigned char byOctetStringLength,
const TerminalLabel *pTerminalList,
unsigned short wTerminalListCount
);
H245DLL HRESULT
H245ConferenceCommand (
H245_INST_T dwInst,
H245_CONFER_CMD_ENUM_T CommandType,
H245_CHANNEL_T Channel,
unsigned char byMcuNumber,
unsigned char byTerminalNumber
);
H245DLL HRESULT
H245ConferenceIndication(
H245_INST_T dwInst,
H245_CONFER_IND_ENUM_T IndicationType,
unsigned char bySbeNumber,
unsigned char byMcuNumber,
unsigned char byTerminalNumber
);
H245DLL HRESULT
H245UserInput (
H245_INST_T dwInst,
const WCHAR * pGenString,
const H245_NONSTANDARD_PARAMETER_T * pNonStd
);
H245DLL HRESULT
H245FlowControl (
H245_INST_T dwInst,
H245_SCOPE_T Scope,
H245_CHANNEL_T Channel, // only used if Scope is H245_SCOPE_CHANNEL_NUMBER
unsigned short wResourceID, // only used if Scope is H245_SCOPE_RESOURCE_ID
unsigned long dwRestriction // H245_NO_RESTRICTION if no restriction
);
H245DLL HRESULT
H245H223SkewIndication (
H245_INST_T dwInst,
H245_CHANNEL_T wLogicalChannelNumber1,
H245_CHANNEL_T wLogicalChannelNumber2,
unsigned short wSkew
);
H245DLL HRESULT
H245H2250MaximumSkewIndication(
H245_INST_T dwInst,
H245_CHANNEL_T wLogicalChannelNumber1,
H245_CHANNEL_T wLogicalChannelNumber2,
unsigned short wMaximumSkew
);
H245DLL HRESULT
H245MCLocationIndication(
H245_INST_T dwInst,
const H245_TRANSPORT_ADDRESS_T * pSignalAddress
);
H245DLL HRESULT
H245VendorIdentification(
H245_INST_T dwInst,
const H245_NONSTANDID_T *pIdentifier,
const unsigned char *pProductNumber, // optional
unsigned char byProductNumberLength,// optional
const unsigned char *pVersionNumber, // optional
unsigned char byVersionNumberLength // optional
);
H245DLL HRESULT
H245SendPDU (
H245_INST_T dwInst,
PDU_T * pPdu
);
H245DLL HRESULT
H245SystemControl (
H245_INST_T dwInst,
unsigned long dwRequest,
void * pData
);
#ifdef __cplusplus
}
#endif
#endif