GNU Linux-libre 4.9.311-gnu1
[releases.git] / drivers / isdn / hardware / eicon / kst_ifc.h
1 /*
2  *
3  Copyright (c) Eicon Networks, 2000.
4  *
5  This source file is supplied for the use with
6  Eicon Networks range of DIVA Server Adapters.
7  *
8  Eicon File Revision :    1.9
9  *
10  This program is free software; you can redistribute it and/or modify
11  it under the terms of the GNU General Public License as published by
12  the Free Software Foundation; either version 2, or (at your option)
13  any later version.
14  *
15  This program is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY
17  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18  See the GNU General Public License for more details.
19  *
20  You should have received a copy of the GNU General Public License
21  along with this program; if not, write to the Free Software
22  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23  *
24  */
25 #ifndef __DIVA_EICON_TRACE_API__
26 #define __DIVA_EICON_TRACE_API__
27
28 #define DIVA_TRACE_LINE_TYPE_LEN 64
29 #define DIVA_TRACE_IE_LEN        64
30 #define DIVA_TRACE_FAX_PRMS_LEN  128
31
32 typedef struct _diva_trace_ie {
33         byte length;
34         byte data[DIVA_TRACE_IE_LEN];
35 } diva_trace_ie_t;
36
37 /*
38   Structure used to represent "State\\BX\\Modem" directory
39   to user.
40 */
41 typedef struct _diva_trace_modem_state {
42         dword   ChannelNumber;
43
44         dword   Event;
45
46         dword   Norm;
47
48         dword Options; /* Options received from Application */
49
50         dword   TxSpeed;
51         dword   RxSpeed;
52
53         dword RoundtripMsec;
54
55         dword SymbolRate;
56
57         int             RxLeveldBm;
58         int             EchoLeveldBm;
59
60         dword   SNRdb;
61         dword MAE;
62
63         dword LocalRetrains;
64         dword RemoteRetrains;
65         dword LocalResyncs;
66         dword RemoteResyncs;
67
68         dword DiscReason;
69
70 } diva_trace_modem_state_t;
71
72 /*
73   Representation of "State\\BX\\FAX" directory
74 */
75 typedef struct _diva_trace_fax_state {
76         dword   ChannelNumber;
77         dword Event;
78         dword Page_Counter;
79         dword Features;
80         char Station_ID[DIVA_TRACE_FAX_PRMS_LEN];
81         char Subaddress[DIVA_TRACE_FAX_PRMS_LEN];
82         char Password[DIVA_TRACE_FAX_PRMS_LEN];
83         dword Speed;
84         dword Resolution;
85         dword Paper_Width;
86         dword Paper_Length;
87         dword Scanline_Time;
88         dword Disc_Reason;
89         dword   dummy;
90 } diva_trace_fax_state_t;
91
92 /*
93   Structure used to represent Interface State in the abstract
94   and interface/D-channel protocol independent form.
95 */
96 typedef struct _diva_trace_interface_state {
97         char Layer1[DIVA_TRACE_LINE_TYPE_LEN];
98         char Layer2[DIVA_TRACE_LINE_TYPE_LEN];
99 } diva_trace_interface_state_t;
100
101 typedef struct _diva_incoming_call_statistics {
102         dword Calls;
103         dword Connected;
104         dword User_Busy;
105         dword Call_Rejected;
106         dword Wrong_Number;
107         dword Incompatible_Dst;
108         dword Out_of_Order;
109         dword Ignored;
110 } diva_incoming_call_statistics_t;
111
112 typedef struct _diva_outgoing_call_statistics {
113         dword Calls;
114         dword Connected;
115         dword User_Busy;
116         dword No_Answer;
117         dword Wrong_Number;
118         dword Call_Rejected;
119         dword Other_Failures;
120 } diva_outgoing_call_statistics_t;
121
122 typedef struct _diva_modem_call_statistics {
123         dword Disc_Normal;
124         dword Disc_Unspecified;
125         dword Disc_Busy_Tone;
126         dword Disc_Congestion;
127         dword Disc_Carr_Wait;
128         dword Disc_Trn_Timeout;
129         dword Disc_Incompat;
130         dword Disc_Frame_Rej;
131         dword Disc_V42bis;
132 } diva_modem_call_statistics_t;
133
134 typedef struct _diva_fax_call_statistics {
135         dword Disc_Normal;
136         dword Disc_Not_Ident;
137         dword Disc_No_Response;
138         dword Disc_Retries;
139         dword Disc_Unexp_Msg;
140         dword Disc_No_Polling;
141         dword Disc_Training;
142         dword Disc_Unexpected;
143         dword Disc_Application;
144         dword Disc_Incompat;
145         dword Disc_No_Command;
146         dword Disc_Long_Msg;
147         dword Disc_Supervisor;
148         dword Disc_SUB_SEP_PWD;
149         dword Disc_Invalid_Msg;
150         dword Disc_Page_Coding;
151         dword Disc_App_Timeout;
152         dword Disc_Unspecified;
153 } diva_fax_call_statistics_t;
154
155 typedef struct _diva_prot_statistics {
156         dword X_Frames;
157         dword X_Bytes;
158         dword X_Errors;
159         dword R_Frames;
160         dword R_Bytes;
161         dword R_Errors;
162 } diva_prot_statistics_t;
163
164 typedef struct _diva_ifc_statistics {
165         diva_incoming_call_statistics_t inc;
166         diva_outgoing_call_statistics_t outg;
167         diva_modem_call_statistics_t mdm;
168         diva_fax_call_statistics_t fax;
169         diva_prot_statistics_t b1;
170         diva_prot_statistics_t b2;
171         diva_prot_statistics_t d1;
172         diva_prot_statistics_t d2;
173 } diva_ifc_statistics_t;
174
175 /*
176   Structure used to represent "State\\BX" directory
177   to user.
178 */
179 typedef struct _diva_trace_line_state {
180         dword   ChannelNumber;
181
182         char Line[DIVA_TRACE_LINE_TYPE_LEN];
183
184         char Framing[DIVA_TRACE_LINE_TYPE_LEN];
185
186         char Layer2[DIVA_TRACE_LINE_TYPE_LEN];
187         char Layer3[DIVA_TRACE_LINE_TYPE_LEN];
188
189         char RemoteAddress[DIVA_TRACE_LINE_TYPE_LEN];
190         char RemoteSubAddress[DIVA_TRACE_LINE_TYPE_LEN];
191
192         char LocalAddress[DIVA_TRACE_LINE_TYPE_LEN];
193         char LocalSubAddress[DIVA_TRACE_LINE_TYPE_LEN];
194
195         diva_trace_ie_t call_BC;
196         diva_trace_ie_t call_HLC;
197         diva_trace_ie_t call_LLC;
198
199         dword Charges;
200
201         dword CallReference;
202
203         dword LastDisconnecCause;
204
205         char UserID[DIVA_TRACE_LINE_TYPE_LEN];
206
207         diva_trace_modem_state_t modem;
208         diva_trace_fax_state_t fax;
209
210         diva_trace_interface_state_t *pInterface;
211
212         diva_ifc_statistics_t *pInterfaceStat;
213
214 } diva_trace_line_state_t;
215
216 #define DIVA_SUPER_TRACE_NOTIFY_LINE_CHANGE             ('l')
217 #define DIVA_SUPER_TRACE_NOTIFY_MODEM_CHANGE            ('m')
218 #define DIVA_SUPER_TRACE_NOTIFY_FAX_CHANGE              ('f')
219 #define DIVA_SUPER_TRACE_INTERFACE_CHANGE               ('i')
220 #define DIVA_SUPER_TRACE_NOTIFY_STAT_CHANGE             ('s')
221 #define DIVA_SUPER_TRACE_NOTIFY_MDM_STAT_CHANGE         ('M')
222 #define DIVA_SUPER_TRACE_NOTIFY_FAX_STAT_CHANGE         ('F')
223
224 struct _diva_strace_library_interface;
225 typedef void (*diva_trace_channel_state_change_proc_t)(void *user_context,
226                                                        struct _diva_strace_library_interface *hLib,
227                                                        int Adapter,
228                                                        diva_trace_line_state_t *channel, int notify_subject);
229 typedef void (*diva_trace_channel_trace_proc_t)(void *user_context,
230                                                 struct _diva_strace_library_interface *hLib,
231                                                 int Adapter, void *xlog_buffer, int length);
232 typedef void (*diva_trace_error_proc_t)(void *user_context,
233                                         struct _diva_strace_library_interface *hLib,
234                                         int Adapter,
235                                         int error, const char *file, int line);
236
237 /*
238   This structure creates interface from user to library
239 */
240 typedef struct _diva_trace_library_user_interface {
241         void *user_context;
242         diva_trace_channel_state_change_proc_t notify_proc;
243         diva_trace_channel_trace_proc_t trace_proc;
244         diva_trace_error_proc_t error_notify_proc;
245 } diva_trace_library_user_interface_t;
246
247 /*
248   Interface from Library to User
249 */
250 typedef int (*DivaSTraceLibraryStart_proc_t)(void *hLib);
251 typedef int (*DivaSTraceLibraryFinit_proc_t)(void *hLib);
252 typedef int (*DivaSTraceMessageInput_proc_t)(void *hLib);
253 typedef void* (*DivaSTraceGetHandle_proc_t)(void *hLib);
254
255 /*
256   Turn Audio Tap trace on/off
257   Channel should be in the range 1 ... Number of Channels
258 */
259 typedef int (*DivaSTraceSetAudioTap_proc_t)(void *hLib, int Channel, int on);
260
261 /*
262   Turn B-channel trace on/off
263   Channel should be in the range 1 ... Number of Channels
264 */
265 typedef int (*DivaSTraceSetBChannel_proc_t)(void *hLib, int Channel, int on);
266
267 /*
268   Turn  D-channel (Layer1/Layer2/Layer3) trace on/off
269   Layer1 - All D-channel frames received/sent over the interface
270   inclusive Layer 2 headers, Layer 2 frames and TEI management frames
271   Layer2 - Events from LAPD protocol instance with SAPI of signalling protocol
272   Layer3 - All D-channel frames addressed to assigned to the card TEI and
273   SAPI of signalling protocol, and signalling protocol events.
274 */
275 typedef int (*DivaSTraceSetDChannel_proc_t)(void *hLib, int on);
276
277 /*
278   Get overall card statistics
279 */
280 typedef int (*DivaSTraceGetOutgoingCallStatistics_proc_t)(void *hLib);
281 typedef int (*DivaSTraceGetIncomingCallStatistics_proc_t)(void *hLib);
282 typedef int (*DivaSTraceGetModemStatistics_proc_t)(void *hLib);
283 typedef int (*DivaSTraceGetFaxStatistics_proc_t)(void *hLib);
284 typedef int (*DivaSTraceGetBLayer1Statistics_proc_t)(void *hLib);
285 typedef int (*DivaSTraceGetBLayer2Statistics_proc_t)(void *hLib);
286 typedef int (*DivaSTraceGetDLayer1Statistics_proc_t)(void *hLib);
287 typedef int (*DivaSTraceGetDLayer2Statistics_proc_t)(void *hLib);
288
289 /*
290   Call control
291 */
292 typedef int (*DivaSTraceClearCall_proc_t)(void *hLib, int Channel);
293
294 typedef struct _diva_strace_library_interface {
295         void *hLib;
296         DivaSTraceLibraryStart_proc_t DivaSTraceLibraryStart;
297         DivaSTraceLibraryStart_proc_t DivaSTraceLibraryStop;
298         DivaSTraceLibraryFinit_proc_t DivaSTraceLibraryFinit;
299         DivaSTraceMessageInput_proc_t DivaSTraceMessageInput;
300         DivaSTraceGetHandle_proc_t DivaSTraceGetHandle;
301         DivaSTraceSetAudioTap_proc_t DivaSTraceSetAudioTap;
302         DivaSTraceSetBChannel_proc_t DivaSTraceSetBChannel;
303         DivaSTraceSetDChannel_proc_t DivaSTraceSetDChannel;
304         DivaSTraceSetDChannel_proc_t DivaSTraceSetInfo;
305         DivaSTraceGetOutgoingCallStatistics_proc_t \
306         DivaSTraceGetOutgoingCallStatistics;
307         DivaSTraceGetIncomingCallStatistics_proc_t \
308         DivaSTraceGetIncomingCallStatistics;
309         DivaSTraceGetModemStatistics_proc_t \
310         DivaSTraceGetModemStatistics;
311         DivaSTraceGetFaxStatistics_proc_t \
312         DivaSTraceGetFaxStatistics;
313         DivaSTraceGetBLayer1Statistics_proc_t \
314         DivaSTraceGetBLayer1Statistics;
315         DivaSTraceGetBLayer2Statistics_proc_t \
316         DivaSTraceGetBLayer2Statistics;
317         DivaSTraceGetDLayer1Statistics_proc_t \
318         DivaSTraceGetDLayer1Statistics;
319         DivaSTraceGetDLayer2Statistics_proc_t \
320         DivaSTraceGetDLayer2Statistics;
321         DivaSTraceClearCall_proc_t DivaSTraceClearCall;
322 } diva_strace_library_interface_t;
323
324 /*
325   Create and return Library interface
326 */
327 diva_strace_library_interface_t *DivaSTraceLibraryCreateInstance(int Adapter,
328                                                                  const diva_trace_library_user_interface_t *user_proc,
329                                                                  byte *pmem);
330 dword DivaSTraceGetMemotyRequirement(int channels);
331
332 #define DIVA_MAX_ADAPTERS  64
333 #define DIVA_MAX_LINES     32
334
335 #endif