336 lines
9.4 KiB
C
336 lines
9.4 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
|