2027 lines
70 KiB
C
2027 lines
70 KiB
C
#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(0) // it's all in one DLL, no need for export
|
||
// declare exported functions
|
||
#if defined(H245DLL_EXPORT)
|
||
#define H245DLL __declspec (dllexport)
|
||
#else // (H245DLL_EXPORT)
|
||
#define H245DLL __declspec (dllimport)
|
||
#endif // (H245DLL_EXPORT)
|
||
#else
|
||
#define H245DLL
|
||
#endif
|
||
|
||
|
||
/************************************/
|
||
/* 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 DWORD_PTR 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_NONE = noSuspendResume_chosen,
|
||
H245_V76_WITH_ADDRESS = V76LogicalChannelParameters_suspendResume_suspendResumewAddress_chosen,
|
||
H245_V76_WITHOUT_ADDRESS = V76LogicalChannelParameters_suspendResume_suspendResumewoAddress_chosen
|
||
// the older (Version 2?) ASN had these spellings
|
||
// 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;
|
||
|
||
|
||
// 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 = ConferenceCommand_makeTerminalBroadcaster_chosen,
|
||
H245_CMD_CANCEL_BROADCASTER = cnclMkTrmnlBrdcstr_chosen,
|
||
H245_CMD_SEND_THIS_SOURCE = ConferenceCommand_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
|
||
DWORD_PTR 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
|
||
DWORD_PTR dwPreserved; // User supplied dwPreserved from H245Init()
|
||
DWORD_PTR 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.3"
|
||
|
||
|
||
|
||
/**************************************************/
|
||
/* API Procedure Call Typedefs and API Prototypes */
|
||
/**************************************************/
|
||
|
||
typedef DWORD_PTR H245_INST_T;
|
||
typedef HRESULT (*H245_CONF_IND_CALLBACK_T)(H245_CONF_IND_T *, void *);
|
||
typedef int (*H245_CAP_CALLBACK_T)(DWORD_PTR, H245_TOTCAP_T *);
|
||
typedef int (*H245_CAPDESC_CALLBACK_T)(DWORD_PTR, H245_TOTCAPDESC_T *);
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
H245DLL H245_INST_T
|
||
H245Init (
|
||
H245_CONFIG_T Configuration,
|
||
unsigned long dwPhysId,
|
||
unsigned long *pdwLinkLayerPhysId,
|
||
DWORD_PTR dwPreserved,
|
||
H245_CONF_IND_CALLBACK_T CallBack,
|
||
unsigned char byTerminalType
|
||
);
|
||
|
||
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,
|
||
DWORD_PTR 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,
|
||
DWORD_PTR dwTransId
|
||
);
|
||
|
||
H245DLL HRESULT
|
||
H245EnumCaps (
|
||
H245_INST_T dwInst,
|
||
DWORD_PTR 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,
|
||
DWORD_PTR 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,
|
||
DWORD_PTR 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,
|
||
DWORD_PTR dwTransId,
|
||
H245_CHANNEL_T wTxChannel
|
||
);
|
||
|
||
H245DLL HRESULT
|
||
H245CloseChannelReq (
|
||
H245_INST_T dwInst,
|
||
DWORD_PTR 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,
|
||
DWORD_PTR 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,
|
||
DWORD_PTR 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,
|
||
DWORD_PTR dwTransId,
|
||
const ModeElement * pModeElements,
|
||
unsigned long dwCount
|
||
);
|
||
*/
|
||
H245DLL HRESULT
|
||
H245RequestMode (
|
||
H245_INST_T dwInst,
|
||
DWORD_PTR dwTransId,
|
||
// const ModeElement * pModeElements,
|
||
//tomitowoju@intel.com
|
||
ModeDescription ModeDescriptions[],
|
||
//tomitowoju@intel.com
|
||
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,
|
||
DWORD_PTR dwTransId
|
||
);
|
||
|
||
H245DLL HRESULT
|
||
H245MaintenanceLoop (
|
||
H245_INST_T dwInst,
|
||
DWORD_PTR 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
|
||
|