summaryrefslogtreecommitdiffstats
path: root/drivers/isdn/hardware/eicon/kst_ifc.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/isdn/hardware/eicon/kst_ifc.h')
-rw-r--r--drivers/isdn/hardware/eicon/kst_ifc.h335
1 files changed, 335 insertions, 0 deletions
diff --git a/drivers/isdn/hardware/eicon/kst_ifc.h b/drivers/isdn/hardware/eicon/kst_ifc.h
new file mode 100644
index 000000000..894fdfda1
--- /dev/null
+++ b/drivers/isdn/hardware/eicon/kst_ifc.h
@@ -0,0 +1,335 @@
+/*
+ *
+ 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