337 lines
		
	
	
	
		
			9.6 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			337 lines
		
	
	
	
		
			9.6 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |  * | ||
|  |   Copyright (c) Eicon Networks, 2000. | ||
|  |  * | ||
|  |   This source file is supplied for the use with | ||
|  |   Eicon Networks range of DIVA Server Adapters. | ||
|  |  * | ||
|  |   Eicon File Revision :    1.9 | ||
|  |  * | ||
|  |   This program is free software; you can redistribute it and/or modify | ||
|  |   it under the terms of the GNU General Public License as published by | ||
|  |   the Free Software Foundation; either version 2, or (at your option) | ||
|  |   any later version. | ||
|  |  * | ||
|  |   This program is distributed in the hope that it will be useful, | ||
|  |   but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY | ||
|  |   implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
|  |   See the GNU General Public License for more details. | ||
|  |  * | ||
|  |   You should have received a copy of the GNU General Public License | ||
|  |   along with this program; if not, write to the Free Software | ||
|  |   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
|  |  * | ||
|  |  */ | ||
|  | #ifndef __DIVA_EICON_TRACE_API__
 | ||
|  | #define __DIVA_EICON_TRACE_API__
 | ||
|  | 
 | ||
|  | #define DIVA_TRACE_LINE_TYPE_LEN 64
 | ||
|  | #define DIVA_TRACE_IE_LEN        64
 | ||
|  | #define DIVA_TRACE_FAX_PRMS_LEN  128
 | ||
|  | 
 | ||
|  | typedef struct _diva_trace_ie { | ||
|  | 	byte length; | ||
|  | 	byte data[DIVA_TRACE_IE_LEN]; | ||
|  | } diva_trace_ie_t; | ||
|  | 
 | ||
|  | /*
 | ||
|  | 	Structure used to represent "State\\BX\\Modem" directory | ||
|  | 	to user. | ||
|  | 	*/ | ||
|  | typedef struct _diva_trace_modem_state { | ||
|  | 	dword	ChannelNumber; | ||
|  | 
 | ||
|  | 	dword	Event; | ||
|  | 
 | ||
|  | 	dword	Norm; | ||
|  | 
 | ||
|  | 	dword Options; /* Options received from Application */ | ||
|  | 
 | ||
|  | 	dword	TxSpeed; | ||
|  | 	dword	RxSpeed; | ||
|  | 
 | ||
|  | 	dword RoundtripMsec; | ||
|  | 
 | ||
|  | 	dword SymbolRate; | ||
|  | 
 | ||
|  | 	int		RxLeveldBm; | ||
|  | 	int		EchoLeveldBm; | ||
|  | 
 | ||
|  | 	dword	SNRdb; | ||
|  | 	dword MAE; | ||
|  | 
 | ||
|  | 	dword LocalRetrains; | ||
|  | 	dword RemoteRetrains; | ||
|  | 	dword LocalResyncs; | ||
|  | 	dword RemoteResyncs; | ||
|  | 
 | ||
|  | 	dword DiscReason; | ||
|  | 
 | ||
|  | } diva_trace_modem_state_t; | ||
|  | 
 | ||
|  | /*
 | ||
|  | 	Representation of "State\\BX\\FAX" directory | ||
|  | 	*/ | ||
|  | typedef struct _diva_trace_fax_state { | ||
|  | 	dword	ChannelNumber; | ||
|  | 	dword Event; | ||
|  | 	dword Page_Counter; | ||
|  | 	dword Features; | ||
|  | 	char Station_ID[DIVA_TRACE_FAX_PRMS_LEN]; | ||
|  | 	char Subaddress[DIVA_TRACE_FAX_PRMS_LEN]; | ||
|  | 	char Password[DIVA_TRACE_FAX_PRMS_LEN]; | ||
|  | 	dword Speed; | ||
|  | 	dword Resolution; | ||
|  | 	dword Paper_Width; | ||
|  | 	dword Paper_Length; | ||
|  | 	dword Scanline_Time; | ||
|  | 	dword Disc_Reason; | ||
|  | 	dword	dummy; | ||
|  | } diva_trace_fax_state_t; | ||
|  | 
 | ||
|  | /*
 | ||
|  | 	Structure used to represent Interface State in the abstract | ||
|  | 	and interface/D-channel protocol independent form. | ||
|  | 	*/ | ||
|  | typedef struct _diva_trace_interface_state { | ||
|  | 	char Layer1[DIVA_TRACE_LINE_TYPE_LEN]; | ||
|  | 	char Layer2[DIVA_TRACE_LINE_TYPE_LEN]; | ||
|  | } diva_trace_interface_state_t; | ||
|  | 
 | ||
|  | typedef struct _diva_incoming_call_statistics { | ||
|  | 	dword Calls; | ||
|  | 	dword Connected; | ||
|  | 	dword User_Busy; | ||
|  | 	dword Call_Rejected; | ||
|  | 	dword Wrong_Number; | ||
|  | 	dword Incompatible_Dst; | ||
|  | 	dword Out_of_Order; | ||
|  | 	dword Ignored; | ||
|  | } diva_incoming_call_statistics_t; | ||
|  | 
 | ||
|  | typedef struct _diva_outgoing_call_statistics { | ||
|  | 	dword Calls; | ||
|  | 	dword Connected; | ||
|  | 	dword User_Busy; | ||
|  | 	dword No_Answer; | ||
|  | 	dword Wrong_Number; | ||
|  | 	dword Call_Rejected; | ||
|  | 	dword Other_Failures; | ||
|  | } diva_outgoing_call_statistics_t; | ||
|  | 
 | ||
|  | typedef struct _diva_modem_call_statistics { | ||
|  | 	dword Disc_Normal; | ||
|  | 	dword Disc_Unspecified; | ||
|  | 	dword Disc_Busy_Tone; | ||
|  | 	dword Disc_Congestion; | ||
|  | 	dword Disc_Carr_Wait; | ||
|  | 	dword Disc_Trn_Timeout; | ||
|  | 	dword Disc_Incompat; | ||
|  | 	dword Disc_Frame_Rej; | ||
|  | 	dword Disc_V42bis; | ||
|  | } diva_modem_call_statistics_t; | ||
|  | 
 | ||
|  | typedef struct _diva_fax_call_statistics { | ||
|  | 	dword Disc_Normal; | ||
|  | 	dword Disc_Not_Ident; | ||
|  | 	dword Disc_No_Response; | ||
|  | 	dword Disc_Retries; | ||
|  | 	dword Disc_Unexp_Msg; | ||
|  | 	dword Disc_No_Polling; | ||
|  | 	dword Disc_Training; | ||
|  | 	dword Disc_Unexpected; | ||
|  | 	dword Disc_Application; | ||
|  | 	dword Disc_Incompat; | ||
|  | 	dword Disc_No_Command; | ||
|  | 	dword Disc_Long_Msg; | ||
|  | 	dword Disc_Supervisor; | ||
|  | 	dword Disc_SUB_SEP_PWD; | ||
|  | 	dword Disc_Invalid_Msg; | ||
|  | 	dword Disc_Page_Coding; | ||
|  | 	dword Disc_App_Timeout; | ||
|  | 	dword Disc_Unspecified; | ||
|  | } diva_fax_call_statistics_t; | ||
|  | 
 | ||
|  | typedef struct _diva_prot_statistics { | ||
|  | 	dword X_Frames; | ||
|  | 	dword X_Bytes; | ||
|  | 	dword X_Errors; | ||
|  | 	dword R_Frames; | ||
|  | 	dword R_Bytes; | ||
|  | 	dword R_Errors; | ||
|  | } diva_prot_statistics_t; | ||
|  | 
 | ||
|  | typedef struct _diva_ifc_statistics { | ||
|  | 	diva_incoming_call_statistics_t	inc; | ||
|  | 	diva_outgoing_call_statistics_t outg; | ||
|  | 	diva_modem_call_statistics_t		mdm; | ||
|  | 	diva_fax_call_statistics_t			fax; | ||
|  | 	diva_prot_statistics_t					b1; | ||
|  | 	diva_prot_statistics_t					b2; | ||
|  | 	diva_prot_statistics_t					d1; | ||
|  | 	diva_prot_statistics_t					d2; | ||
|  | } diva_ifc_statistics_t; | ||
|  | 
 | ||
|  | /*
 | ||
|  | 	Structure used to represent "State\\BX" directory | ||
|  | 	to user. | ||
|  | 	*/ | ||
|  | typedef struct _diva_trace_line_state { | ||
|  | 	dword	ChannelNumber; | ||
|  | 
 | ||
|  | 	char Line[DIVA_TRACE_LINE_TYPE_LEN]; | ||
|  | 
 | ||
|  | 	char Framing[DIVA_TRACE_LINE_TYPE_LEN]; | ||
|  | 
 | ||
|  | 	char Layer2[DIVA_TRACE_LINE_TYPE_LEN]; | ||
|  | 	char Layer3[DIVA_TRACE_LINE_TYPE_LEN]; | ||
|  | 
 | ||
|  | 	char RemoteAddress[DIVA_TRACE_LINE_TYPE_LEN]; | ||
|  | 	char RemoteSubAddress[DIVA_TRACE_LINE_TYPE_LEN]; | ||
|  | 
 | ||
|  | 	char LocalAddress[DIVA_TRACE_LINE_TYPE_LEN]; | ||
|  | 	char LocalSubAddress[DIVA_TRACE_LINE_TYPE_LEN]; | ||
|  | 
 | ||
|  | 	diva_trace_ie_t	call_BC; | ||
|  | 	diva_trace_ie_t	call_HLC; | ||
|  | 	diva_trace_ie_t	call_LLC; | ||
|  | 
 | ||
|  | 	dword Charges; | ||
|  | 
 | ||
|  | 	dword CallReference; | ||
|  | 
 | ||
|  | 	dword LastDisconnecCause; | ||
|  | 
 | ||
|  | 	char UserID[DIVA_TRACE_LINE_TYPE_LEN]; | ||
|  | 
 | ||
|  | 	diva_trace_modem_state_t modem; | ||
|  | 	diva_trace_fax_state_t   fax; | ||
|  | 
 | ||
|  | 	diva_trace_interface_state_t* pInterface; | ||
|  | 
 | ||
|  | 	diva_ifc_statistics_t*				pInterfaceStat; | ||
|  | 
 | ||
|  | } diva_trace_line_state_t; | ||
|  | 
 | ||
|  | #define DIVA_SUPER_TRACE_NOTIFY_LINE_CHANGE             ('l')
 | ||
|  | #define DIVA_SUPER_TRACE_NOTIFY_MODEM_CHANGE            ('m')
 | ||
|  | #define DIVA_SUPER_TRACE_NOTIFY_FAX_CHANGE              ('f')
 | ||
|  | #define DIVA_SUPER_TRACE_INTERFACE_CHANGE               ('i')
 | ||
|  | #define DIVA_SUPER_TRACE_NOTIFY_STAT_CHANGE             ('s')
 | ||
|  | #define DIVA_SUPER_TRACE_NOTIFY_MDM_STAT_CHANGE         ('M')
 | ||
|  | #define DIVA_SUPER_TRACE_NOTIFY_FAX_STAT_CHANGE         ('F')
 | ||
|  | 
 | ||
|  | struct _diva_strace_library_interface; | ||
|  | typedef void (*diva_trace_channel_state_change_proc_t)(void* user_context, | ||
|  | 							struct _diva_strace_library_interface* hLib, | ||
|  | 							int Adapter, | ||
|  | 							diva_trace_line_state_t* channel, int notify_subject); | ||
|  | typedef void (*diva_trace_channel_trace_proc_t)(void* user_context, | ||
|  | 							struct _diva_strace_library_interface* hLib, | ||
|  | 							int Adapter, void* xlog_buffer, int length); | ||
|  | typedef void (*diva_trace_error_proc_t)(void* user_context, | ||
|  | 							struct _diva_strace_library_interface* hLib, | ||
|  | 							int Adapter, | ||
|  | 							int error, const char* file, int line); | ||
|  | 
 | ||
|  | /*
 | ||
|  | 	This structure creates interface from user to library | ||
|  | 	*/ | ||
|  | typedef struct _diva_trace_library_user_interface { | ||
|  | 	void*																		user_context; | ||
|  | 	diva_trace_channel_state_change_proc_t	notify_proc; | ||
|  | 	diva_trace_channel_trace_proc_t					trace_proc; | ||
|  | 	diva_trace_error_proc_t									error_notify_proc; | ||
|  | } diva_trace_library_user_interface_t; | ||
|  | 
 | ||
|  | /*
 | ||
|  | 	Interface from Library to User | ||
|  | 	*/ | ||
|  | typedef int   (*DivaSTraceLibraryStart_proc_t)(void* hLib); | ||
|  | typedef int   (*DivaSTraceLibraryFinit_proc_t)(void* hLib); | ||
|  | typedef int   (*DivaSTraceMessageInput_proc_t)(void* hLib); | ||
|  | typedef void*	(*DivaSTraceGetHandle_proc_t)(void* hLib); | ||
|  | 
 | ||
|  | /*
 | ||
|  | 	Turn Audio Tap trace on/off | ||
|  | 	Channel should be in the range 1 ... Number of Channels | ||
|  | 	*/ | ||
|  | typedef int (*DivaSTraceSetAudioTap_proc_t)(void* hLib, int Channel, int on); | ||
|  | 
 | ||
|  | /*
 | ||
|  | 	Turn B-channel trace on/off | ||
|  | 	Channel should be in the range 1 ... Number of Channels | ||
|  | 	*/ | ||
|  | typedef int (*DivaSTraceSetBChannel_proc_t)(void* hLib, int Channel, int on); | ||
|  | 
 | ||
|  | /*
 | ||
|  | 	Turn	D-channel (Layer1/Layer2/Layer3) trace on/off | ||
|  | 		Layer1 - All D-channel frames received/sent over the interface | ||
|  | 						 inclusive Layer 2 headers, Layer 2 frames and TEI management frames | ||
|  | 		Layer2 - Events from LAPD protocol instance with SAPI of signalling protocol | ||
|  | 		Layer3 - All D-channel frames addressed to assigned to the card TEI and | ||
|  | 						 SAPI of signalling protocol, and signalling protocol events. | ||
|  | 	*/ | ||
|  | typedef int (*DivaSTraceSetDChannel_proc_t)(void* hLib, int on); | ||
|  | 
 | ||
|  | /*
 | ||
|  | 	Get overall card statistics | ||
|  | 	*/ | ||
|  | typedef int (*DivaSTraceGetOutgoingCallStatistics_proc_t)(void* hLib); | ||
|  | typedef int (*DivaSTraceGetIncomingCallStatistics_proc_t)(void* hLib); | ||
|  | typedef int (*DivaSTraceGetModemStatistics_proc_t)(void* hLib); | ||
|  | typedef int (*DivaSTraceGetFaxStatistics_proc_t)(void* hLib); | ||
|  | typedef int (*DivaSTraceGetBLayer1Statistics_proc_t)(void* hLib); | ||
|  | typedef int (*DivaSTraceGetBLayer2Statistics_proc_t)(void* hLib); | ||
|  | typedef int (*DivaSTraceGetDLayer1Statistics_proc_t)(void* hLib); | ||
|  | typedef int (*DivaSTraceGetDLayer2Statistics_proc_t)(void* hLib); | ||
|  | 
 | ||
|  | /*
 | ||
|  | 	Call control | ||
|  | 	*/ | ||
|  | typedef int (*DivaSTraceClearCall_proc_t)(void* hLib, int Channel); | ||
|  | 
 | ||
|  | typedef struct _diva_strace_library_interface { | ||
|  | 	void* hLib; | ||
|  |   DivaSTraceLibraryStart_proc_t DivaSTraceLibraryStart; | ||
|  |   DivaSTraceLibraryStart_proc_t DivaSTraceLibraryStop; | ||
|  | 	DivaSTraceLibraryFinit_proc_t DivaSTraceLibraryFinit; | ||
|  | 	DivaSTraceMessageInput_proc_t DivaSTraceMessageInput; | ||
|  | 	DivaSTraceGetHandle_proc_t    DivaSTraceGetHandle; | ||
|  | 	DivaSTraceSetAudioTap_proc_t  DivaSTraceSetAudioTap; | ||
|  | 	DivaSTraceSetBChannel_proc_t  DivaSTraceSetBChannel; | ||
|  | 	DivaSTraceSetDChannel_proc_t  DivaSTraceSetDChannel; | ||
|  | 	DivaSTraceSetDChannel_proc_t  DivaSTraceSetInfo; | ||
|  | 	DivaSTraceGetOutgoingCallStatistics_proc_t \ | ||
|  | 																DivaSTraceGetOutgoingCallStatistics; | ||
|  | 	DivaSTraceGetIncomingCallStatistics_proc_t \ | ||
|  | 																DivaSTraceGetIncomingCallStatistics; | ||
|  | 	DivaSTraceGetModemStatistics_proc_t \ | ||
|  | 																DivaSTraceGetModemStatistics; | ||
|  | 	DivaSTraceGetFaxStatistics_proc_t \ | ||
|  | 																DivaSTraceGetFaxStatistics; | ||
|  | 	DivaSTraceGetBLayer1Statistics_proc_t \ | ||
|  | 																DivaSTraceGetBLayer1Statistics; | ||
|  | 	DivaSTraceGetBLayer2Statistics_proc_t \ | ||
|  | 																DivaSTraceGetBLayer2Statistics; | ||
|  | 	DivaSTraceGetDLayer1Statistics_proc_t \ | ||
|  | 																DivaSTraceGetDLayer1Statistics; | ||
|  | 	DivaSTraceGetDLayer2Statistics_proc_t \ | ||
|  | 																DivaSTraceGetDLayer2Statistics; | ||
|  | 	DivaSTraceClearCall_proc_t    DivaSTraceClearCall; | ||
|  | } diva_strace_library_interface_t; | ||
|  | 
 | ||
|  | /*
 | ||
|  | 	Create and return Library interface | ||
|  | 	*/ | ||
|  | diva_strace_library_interface_t* DivaSTraceLibraryCreateInstance (int Adapter, | ||
|  | 													const diva_trace_library_user_interface_t* user_proc, | ||
|  |                           byte* pmem); | ||
|  | dword DivaSTraceGetMemotyRequirement (int channels); | ||
|  | 
 | ||
|  | #define DIVA_MAX_ADAPTERS  64
 | ||
|  | #define DIVA_MAX_LINES     32
 | ||
|  | 
 | ||
|  | #endif
 | ||
|  | 
 |