Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / isdn / hardware / eicon / kst_ifc.h
diff --git a/kernel/drivers/isdn/hardware/eicon/kst_ifc.h b/kernel/drivers/isdn/hardware/eicon/kst_ifc.h
new file mode 100644 (file)
index 0000000..894fdfd
--- /dev/null
@@ -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