windows-nt/Source/XPSP1/NT/enduser/netmeeting/av/callcont/h245com.h
2020-09-26 16:20:57 +08:00

192 lines
5.7 KiB
C

/******************************************************************************
*
* 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: h245com.h $
* $Revision: 1.6 $
* $Modtime: Mar 04 1997 17:38:42 $
* $Log: S:/STURGEON/SRC/H245/INCLUDE/VCS/h245com.h_v $
*
* Rev 1.6 Mar 04 1997 17:53:24 tomitowx
* process detach fix
*
* Rev 1.5 12 Dec 1996 15:53:48 EHOWARDX
*
* Master Slave Determination kludge.
*
* Rev 1.4 10 Jun 1996 16:51:20 EHOWARDX
* Added Configuration parameter to InstanceCreate().
*
* Rev 1.3 04 Jun 1996 13:24:38 EHOWARDX
* Fixed warnings in Release build.
*
* Rev 1.2 29 May 1996 15:21:30 EHOWARDX
* No change.
*
* Rev 1.1 28 May 1996 14:10:00 EHOWARDX
* Tel Aviv update.
*
* Rev 1.0 09 May 1996 21:04:48 EHOWARDX
* Initial revision.
*
* Rev 1.17 09 May 1996 19:38:10 EHOWARDX
* Redesigned locking logic and added new functionality.
*
* Rev 1.16 04 Apr 1996 18:06:30 cjutzi
* - added shutdown lock
*
* Rev 1.15 26 Mar 1996 13:39:56 cjutzi
* - fixed ASSERT warning message
*
* Rev 1.14 26 Mar 1996 13:24:26 cjutzi
*
* - added pragma for release code.. to disable warning messages
* from H245TRACE
*
* Rev 1.13 26 Mar 1996 09:49:34 cjutzi
*
* - ok.. Added Enter&Leave&Init&Delete Critical Sections for Ring 0
*
* Rev 1.12 26 Mar 1996 08:40:44 cjutzi
*
*
* Rev 1.11 25 Mar 1996 17:54:44 cjutzi
*
* - broke build.. backstep
*
* Rev 1.10 25 Mar 1996 17:21:32 cjutzi
*
* - added h245sys.x to the global includes for the enter critical
* section stuff
*
* Rev 1.9 18 Mar 1996 09:14:10 cjutzi
*
* - sorry.. removed timer lock.. not needed.
*
* Rev 1.8 18 Mar 1996 08:48:38 cjutzi
* - added timer lock
*
* Rev 1.7 13 Mar 1996 14:08:20 cjutzi
* - removed ASSERT when NDEBUG is defined
*
*
* Rev 1.6 13 Mar 1996 09:50:16 dabrown1
* added winspox.h for CRITICAL_SECTION definition
*
* Rev 1.5 12 Mar 1996 15:48:24 cjutzi
*
* - added instance table lock
*
* Rev 1.4 28 Feb 1996 09:36:22 cjutzi
*
* - added ossGlobal p_ossWorld for debug PDU tracing and PDU verification
*
* Rev 1.3 21 Feb 1996 12:18:52 EHOWARDX
* Added parenthesis around n in H245ASSERT() macro.
* Note: Logical not (!) has higher operator precedence than equal/not equal
* (== or !=). Therefore, in many places this ASSERT was not acting as the
* author intended. It is always a good idea to fully parenthesize expressions
* in macros!
*
* Rev 1.2 09 Feb 1996 16:19:52 cjutzi
*
* - Added export InstanceTbl to module.. from h245init.x
* - added trace
* - added Assert define's
* $Ident$
*
*****************************************************************************/
#ifndef _H245COM_H_
#define _H245COM_H_
#include "h245api.h"
#include "h245sys.x" /* critical section stuff */
#include "api.h" /* api includes */
#include "sendrcv.x"
#include "h245fsm.h"
#ifndef OIL
# define RESULT unsigned long
#endif
void H245Panic (LPSTR, int);
#ifndef NDEBUG
#define H245PANIC() { H245Panic(__FILE__,__LINE__); }
#else
#define H245PANIC()
#endif
/*
* Trace Level Definitions:
*
* 0 - no trace on at all
* 1 - only errors
* 2 - PDU tracking
* 3 - PDU and SendReceive packet tracing
* 4 - Main API Module level tracing
* 5 - Inter Module level tacing #1
* 6 - Inter Module level tacing #2
* 7 - <Undefined>
* 8 - <Undefined>
* 9 - <Undefined>
* 10- and above.. free for all
*/
#ifndef NDEBUG
void H245TRACE (H245_INST_T inst, DWORD level, LPSTR format, ...);
#else
/* disable H245TRACE warning message too may parameters for macro */
#pragma warning (disable:4002)
#define H245TRACE()
#endif
#define MAXINST 16
extern DWORD TraceLevel;
typedef struct TimerList
{
struct TimerList * pNext;
void * pContext;
H245TIMERCALLBACK pfnCallBack;
DWORD dwAlarm;
} TimerList_T;
typedef struct InstanceStruct
{
DWORD dwPhysId; // Physical Identifier
DWORD dwInst; // H.245 client instance Identifier
H245_CONFIG_T Configuration; // Client type
ASN1_CODER_INFO *pWorld; // Context for ASN.1 encode/decode
/* context for subsystems */
API_STRUCT_T API; // API subsystem substructure
hSRINSTANCE SendReceive; // Send/Receive subsystem substructure
Fsm_Struct_t StateMachine; // State Machine subsystem substructure
TimerList_T *pTimerList; // Linked list of running timeout timers
char fDelete; // TRUE to delete instance
char LockCount; // Nested critical section count
char bMasterSlaveKludge; // TRUE if remote is same version
char bReserved;
};
struct InstanceStruct * InstanceCreate(DWORD dwPhysId, H245_CONFIG_T Configuration);
struct InstanceStruct * InstanceLock(H245_INST_T dwInst);
int InstanceUnlock(struct InstanceStruct *pInstance);
int InstanceDelete(struct InstanceStruct *pInstance);
int InstanceUnlock_ProcessDetach(struct InstanceStruct *pInstance, BOOL fProcessDetach);
BOOL H245SysInit();
VOID H245SysDeInit();
#endif /* _H245COM_H_ */