11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
3475be4d85a274d0961593db41cf85689db1d583cJoe Perches Copyright (c) Eicon Networks, 2000.
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
5475be4d85a274d0961593db41cf85689db1d583cJoe Perches This source file is supplied for the use with
6475be4d85a274d0961593db41cf85689db1d583cJoe Perches Eicon Networks range of DIVA Server Adapters.
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
8475be4d85a274d0961593db41cf85689db1d583cJoe Perches Eicon File Revision :    1.9
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
10475be4d85a274d0961593db41cf85689db1d583cJoe Perches This program is free software; you can redistribute it and/or modify
11475be4d85a274d0961593db41cf85689db1d583cJoe Perches it under the terms of the GNU General Public License as published by
12475be4d85a274d0961593db41cf85689db1d583cJoe Perches the Free Software Foundation; either version 2, or (at your option)
13475be4d85a274d0961593db41cf85689db1d583cJoe Perches any later version.
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
15475be4d85a274d0961593db41cf85689db1d583cJoe Perches This program is distributed in the hope that it will be useful,
16475be4d85a274d0961593db41cf85689db1d583cJoe Perches but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY
17475be4d85a274d0961593db41cf85689db1d583cJoe Perches implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18475be4d85a274d0961593db41cf85689db1d583cJoe Perches See the GNU General Public License for more details.
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
20475be4d85a274d0961593db41cf85689db1d583cJoe Perches You should have received a copy of the GNU General Public License
21475be4d85a274d0961593db41cf85689db1d583cJoe Perches along with this program; if not, write to the Free Software
22475be4d85a274d0961593db41cf85689db1d583cJoe Perches Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef __DIVA_EICON_TRACE_IDI_IFC_H__
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __DIVA_EICON_TRACE_IDI_IFC_H__
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
28475be4d85a274d0961593db41cf85689db1d583cJoe Perchesvoid *SuperTraceOpenAdapter(int AdapterNumber);
29475be4d85a274d0961593db41cf85689db1d583cJoe Perchesint SuperTraceCloseAdapter(void *AdapterHandle);
30475be4d85a274d0961593db41cf85689db1d583cJoe Perchesint SuperTraceWrite(void *AdapterHandle,
31475be4d85a274d0961593db41cf85689db1d583cJoe Perches		    const void *data, int length);
32475be4d85a274d0961593db41cf85689db1d583cJoe Perchesint SuperTraceReadRequest(void *AdapterHandle, const char *name, byte *data);
33475be4d85a274d0961593db41cf85689db1d583cJoe Perchesint SuperTraceGetNumberOfChannels(void *AdapterHandle);
34475be4d85a274d0961593db41cf85689db1d583cJoe Perchesint SuperTraceASSIGN(void *AdapterHandle, byte *data);
35475be4d85a274d0961593db41cf85689db1d583cJoe Perchesint SuperTraceREMOVE(void *AdapterHandle);
36475be4d85a274d0961593db41cf85689db1d583cJoe Perchesint SuperTraceTraceOnRequest(void *hAdapter, const char *name, byte *data);
37475be4d85a274d0961593db41cf85689db1d583cJoe Perchesint SuperTraceWriteVar(void *AdapterHandle,
38475be4d85a274d0961593db41cf85689db1d583cJoe Perches		       byte *data,
39475be4d85a274d0961593db41cf85689db1d583cJoe Perches		       const char *name,
40475be4d85a274d0961593db41cf85689db1d583cJoe Perches		       void *var,
41475be4d85a274d0961593db41cf85689db1d583cJoe Perches		       byte type,
42475be4d85a274d0961593db41cf85689db1d583cJoe Perches		       byte var_length);
43475be4d85a274d0961593db41cf85689db1d583cJoe Perchesint SuperTraceExecuteRequest(void *AdapterHandle,
44475be4d85a274d0961593db41cf85689db1d583cJoe Perches			     const char *name,
45475be4d85a274d0961593db41cf85689db1d583cJoe Perches			     byte *data);
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct _diva_strace_path2action {
48475be4d85a274d0961593db41cf85689db1d583cJoe Perches	char path[64]; /* Full path to variable            */
49475be4d85a274d0961593db41cf85689db1d583cJoe Perches	void *variable; /* Variable that will receive value */
501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} diva_strace_path2action_t;
511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIVA_MAX_MANAGEMENT_TRANSFER_SIZE 4096
531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct _diva_strace_context {
551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	diva_strace_library_interface_t	instance;
561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
57475be4d85a274d0961593db41cf85689db1d583cJoe Perches	int Adapter;
58475be4d85a274d0961593db41cf85689db1d583cJoe Perches	void *hAdapter;
591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int Channels;
61475be4d85a274d0961593db41cf85689db1d583cJoe Perches	int req_busy;
621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
63475be4d85a274d0961593db41cf85689db1d583cJoe Perches	ENTITY e;
64475be4d85a274d0961593db41cf85689db1d583cJoe Perches	IDI_CALL request;
65475be4d85a274d0961593db41cf85689db1d583cJoe Perches	BUFFERS XData;
66475be4d85a274d0961593db41cf85689db1d583cJoe Perches	BUFFERS RData;
671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	byte buffer[DIVA_MAX_MANAGEMENT_TRANSFER_SIZE + 1];
68475be4d85a274d0961593db41cf85689db1d583cJoe Perches	int removal_state;
69475be4d85a274d0961593db41cf85689db1d583cJoe Perches	int general_b_ch_event;
70475be4d85a274d0961593db41cf85689db1d583cJoe Perches	int general_fax_event;
71475be4d85a274d0961593db41cf85689db1d583cJoe Perches	int general_mdm_event;
721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
73475be4d85a274d0961593db41cf85689db1d583cJoe Perches	byte rc_ok;
741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	/*
76475be4d85a274d0961593db41cf85689db1d583cJoe Perches	  Initialization request state machine
77475be4d85a274d0961593db41cf85689db1d583cJoe Perches	*/
781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int ChannelsTraceActive;
791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int ModemTraceActive;
801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int FaxTraceActive;
811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int IncomingCallsCallsActive;
821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int IncomingCallsConnectedActive;
831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int OutgoingCallsCallsActive;
841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int OutgoingCallsConnectedActive;
851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int trace_mask_init;
871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int audio_trace_init;
881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int bchannel_init;
891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int trace_length_init;
901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int	trace_on;
911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int trace_events_down;
921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int l1_trace;
931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int l2_trace;
941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	/*
96475be4d85a274d0961593db41cf85689db1d583cJoe Perches	  Trace\Event Enable
97475be4d85a274d0961593db41cf85689db1d583cJoe Perches	*/
981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	word trace_event_mask;
991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	word current_trace_event_mask;
1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	dword audio_tap_mask;
1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	dword current_audio_tap_mask;
1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	dword current_eye_pattern_mask;
1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int   audio_tap_pending;
1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int   eye_pattern_pending;
1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	dword bchannel_trace_mask;
1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	dword current_bchannel_trace_mask;
1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	diva_trace_line_state_t lines[30];
1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int	parse_entries;
1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int	cur_parse_entry;
115475be4d85a274d0961593db41cf85689db1d583cJoe Perches	diva_strace_path2action_t *parse_table;
1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	diva_trace_library_user_interface_t user_proc_table;
1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int line_parse_entry_first[30];
1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int line_parse_entry_last[30];
1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int modem_parse_entry_first[30];
1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int modem_parse_entry_last[30];
1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int fax_parse_entry_first[30];
1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int fax_parse_entry_last[30];
1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int statistic_parse_first;
1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int statistic_parse_last;
1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int mdm_statistic_parse_first;
1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int mdm_statistic_parse_last;
1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int fax_statistic_parse_first;
1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int fax_statistic_parse_last;
1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	dword	line_init_event;
1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	dword	modem_init_event;
1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	dword	fax_init_event;
1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	dword	pending_line_status;
1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	dword	pending_modem_status;
1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	dword	pending_fax_status;
1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	dword clear_call_command;
1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int outgoing_ifc_stats;
1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int incoming_ifc_stats;
1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int modem_ifc_stats;
1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int fax_ifc_stats;
1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int b1_ifc_stats;
1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int b2_ifc_stats;
1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int d1_ifc_stats;
1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int d2_ifc_stats;
1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	diva_trace_interface_state_t Interface;
1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	diva_ifc_statistics_t				 InterfaceStat;
1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} diva_strace_context_t;
1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct _diva_man_var_header {
1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	byte   escape;
1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	byte   length;
1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	byte   management_id;
1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	byte   type;
1651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	byte   attribute;
1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	byte   status;
1671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	byte   value_length;
1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	byte	 path_length;
1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} diva_man_var_header_t;
1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
172