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_IDI_IFC_H__
26 #define __DIVA_EICON_TRACE_IDI_IFC_H__
27 
28 void *SuperTraceOpenAdapter(int AdapterNumber);
29 int SuperTraceCloseAdapter(void *AdapterHandle);
30 int SuperTraceWrite(void *AdapterHandle,
31 		    const void *data, int length);
32 int SuperTraceReadRequest(void *AdapterHandle, const char *name, byte *data);
33 int SuperTraceGetNumberOfChannels(void *AdapterHandle);
34 int SuperTraceASSIGN(void *AdapterHandle, byte *data);
35 int SuperTraceREMOVE(void *AdapterHandle);
36 int SuperTraceTraceOnRequest(void *hAdapter, const char *name, byte *data);
37 int SuperTraceWriteVar(void *AdapterHandle,
38 		       byte *data,
39 		       const char *name,
40 		       void *var,
41 		       byte type,
42 		       byte var_length);
43 int SuperTraceExecuteRequest(void *AdapterHandle,
44 			     const char *name,
45 			     byte *data);
46 
47 typedef struct _diva_strace_path2action {
48 	char path[64]; /* Full path to variable            */
49 	void *variable; /* Variable that will receive value */
50 } diva_strace_path2action_t;
51 
52 #define DIVA_MAX_MANAGEMENT_TRANSFER_SIZE 4096
53 
54 typedef struct _diva_strace_context {
55 	diva_strace_library_interface_t	instance;
56 
57 	int Adapter;
58 	void *hAdapter;
59 
60 	int Channels;
61 	int req_busy;
62 
63 	ENTITY e;
64 	IDI_CALL request;
65 	BUFFERS XData;
66 	BUFFERS RData;
67 	byte buffer[DIVA_MAX_MANAGEMENT_TRANSFER_SIZE + 1];
68 	int removal_state;
69 	int general_b_ch_event;
70 	int general_fax_event;
71 	int general_mdm_event;
72 
73 	byte rc_ok;
74 
75 	/*
76 	  Initialization request state machine
77 	*/
78 	int ChannelsTraceActive;
79 	int ModemTraceActive;
80 	int FaxTraceActive;
81 	int IncomingCallsCallsActive;
82 	int IncomingCallsConnectedActive;
83 	int OutgoingCallsCallsActive;
84 	int OutgoingCallsConnectedActive;
85 
86 	int trace_mask_init;
87 	int audio_trace_init;
88 	int bchannel_init;
89 	int trace_length_init;
90 	int	trace_on;
91 	int trace_events_down;
92 	int l1_trace;
93 	int l2_trace;
94 
95 	/*
96 	  Trace\Event Enable
97 	*/
98 	word trace_event_mask;
99 	word current_trace_event_mask;
100 
101 	dword audio_tap_mask;
102 	dword current_audio_tap_mask;
103 	dword current_eye_pattern_mask;
104 	int   audio_tap_pending;
105 	int   eye_pattern_pending;
106 
107 	dword bchannel_trace_mask;
108 	dword current_bchannel_trace_mask;
109 
110 
111 	diva_trace_line_state_t lines[30];
112 
113 	int	parse_entries;
114 	int	cur_parse_entry;
115 	diva_strace_path2action_t *parse_table;
116 
117 	diva_trace_library_user_interface_t user_proc_table;
118 
119 	int line_parse_entry_first[30];
120 	int line_parse_entry_last[30];
121 
122 	int modem_parse_entry_first[30];
123 	int modem_parse_entry_last[30];
124 
125 	int fax_parse_entry_first[30];
126 	int fax_parse_entry_last[30];
127 
128 	int statistic_parse_first;
129 	int statistic_parse_last;
130 
131 	int mdm_statistic_parse_first;
132 	int mdm_statistic_parse_last;
133 
134 	int fax_statistic_parse_first;
135 	int fax_statistic_parse_last;
136 
137 	dword	line_init_event;
138 	dword	modem_init_event;
139 	dword	fax_init_event;
140 
141 	dword	pending_line_status;
142 	dword	pending_modem_status;
143 	dword	pending_fax_status;
144 
145 	dword clear_call_command;
146 
147 	int outgoing_ifc_stats;
148 	int incoming_ifc_stats;
149 	int modem_ifc_stats;
150 	int fax_ifc_stats;
151 	int b1_ifc_stats;
152 	int b2_ifc_stats;
153 	int d1_ifc_stats;
154 	int d2_ifc_stats;
155 
156 	diva_trace_interface_state_t Interface;
157 	diva_ifc_statistics_t				 InterfaceStat;
158 } diva_strace_context_t;
159 
160 typedef struct _diva_man_var_header {
161 	byte   escape;
162 	byte   length;
163 	byte   management_id;
164 	byte   type;
165 	byte   attribute;
166 	byte   status;
167 	byte   value_length;
168 	byte	 path_length;
169 } diva_man_var_header_t;
170 
171 #endif
172