• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/drivers/isdn/hardware/eicon/
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
32typedef 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	*/
41typedef 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	*/
75typedef 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	*/
96typedef 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
101typedef 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
112typedef 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
122typedef 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
134typedef 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
155typedef 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
164typedef 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	*/
179typedef 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
224struct _diva_strace_library_interface;
225typedef 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);
229typedef 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);
232typedef 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	*/
240typedef 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	*/
250typedef int   (*DivaSTraceLibraryStart_proc_t)(void* hLib);
251typedef int   (*DivaSTraceLibraryFinit_proc_t)(void* hLib);
252typedef int   (*DivaSTraceMessageInput_proc_t)(void* hLib);
253typedef 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	*/
259typedef 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	*/
265typedef 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	*/
275typedef int (*DivaSTraceSetDChannel_proc_t)(void* hLib, int on);
276
277/*
278	Get overall card statistics
279	*/
280typedef int (*DivaSTraceGetOutgoingCallStatistics_proc_t)(void* hLib);
281typedef int (*DivaSTraceGetIncomingCallStatistics_proc_t)(void* hLib);
282typedef int (*DivaSTraceGetModemStatistics_proc_t)(void* hLib);
283typedef int (*DivaSTraceGetFaxStatistics_proc_t)(void* hLib);
284typedef int (*DivaSTraceGetBLayer1Statistics_proc_t)(void* hLib);
285typedef int (*DivaSTraceGetBLayer2Statistics_proc_t)(void* hLib);
286typedef int (*DivaSTraceGetDLayer1Statistics_proc_t)(void* hLib);
287typedef int (*DivaSTraceGetDLayer2Statistics_proc_t)(void* hLib);
288
289/*
290	Call control
291	*/
292typedef int (*DivaSTraceClearCall_proc_t)(void* hLib, int Channel);
293
294typedef 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	*/
327diva_strace_library_interface_t* DivaSTraceLibraryCreateInstance (int Adapter,
328													const diva_trace_library_user_interface_t* user_proc,
329                          byte* pmem);
330dword DivaSTraceGetMemotyRequirement (int channels);
331
332#define DIVA_MAX_ADAPTERS  64
333#define DIVA_MAX_LINES     32
334
335#endif
336