1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
/*
*
Copyright (c) Eicon Networks, 2002.
*
This source file is supplied for the use with
Eicon Networks range of DIVA Server Adapters.
*
Eicon File Revision : 2.1
*
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 _DI_DEFS_
#define _DI_DEFS_
/* typedefs for our data structures */
typedef struct get_name_s GET_NAME;
/* The entity_s structure is used to pass all
parameters between application and IDI */
typedef struct entity_s ENTITY;
typedef struct buffers_s BUFFERS;
typedef struct postcall_s POSTCALL;
typedef struct get_para_s GET_PARA;
#define BOARD_NAME_LENGTH 9
#define IDI_CALL_LINK_T
#define IDI_CALL_ENTITY_T
/* typedef void ( * IDI_CALL)(ENTITY *); */
/* --------------------------------------------------------
IDI_CALL
-------------------------------------------------------- */
typedef void (IDI_CALL_LINK_T *IDI_CALL)(ENTITY IDI_CALL_ENTITY_T *);
typedef struct {
word length; /* length of data/parameter field */
byte P[270]; /* data/parameter field */
} DBUFFER;
struct get_name_s {
word command; /* command = 0x0100 */
byte name[BOARD_NAME_LENGTH];
};
struct postcall_s {
word command; /* command = 0x0300 */
word dummy; /* not used */
void (*callback)(void *); /* call back */
void *context; /* context pointer */
};
#define REQ_PARA 0x0600 /* request command line parameters */
#define REQ_PARA_LEN 1 /* number of data bytes */
#define L1_STARTUP_DOWN_POS 0 /* '-y' command line parameter in......*/
#define L1_STARTUP_DOWN_MSK 0x01 /* first byte position (index 0) with value 0x01 */
struct get_para_s {
word command; /* command = 0x0600 */
byte len; /* max length of para field in bytes */
byte para[REQ_PARA_LEN]; /* parameter field */
};
struct buffers_s {
word PLength;
byte *P;
};
struct entity_s {
byte Req; /* pending request */
byte Rc; /* return code received */
byte Ind; /* indication received */
byte ReqCh; /* channel of current Req */
byte RcCh; /* channel of current Rc */
byte IndCh; /* channel of current Ind */
byte Id; /* ID used by this entity */
byte GlobalId; /* reserved field */
byte XNum; /* number of X-buffers */
byte RNum; /* number of R-buffers */
BUFFERS *X; /* pointer to X-buffer list */
BUFFERS *R; /* pointer to R-buffer list */
word RLength; /* length of current R-data */
DBUFFER *RBuffer; /* buffer of current R-data */
byte RNR; /* receive not ready flag */
byte complete; /* receive complete status */
IDI_CALL callback;
word user[2];
/* fields used by the driver internally */
byte No; /* entity number */
byte reserved2; /* reserved field */
byte More; /* R/X More flags */
byte MInd; /* MDATA coding for this ID */
byte XCurrent; /* current transmit buffer */
byte RCurrent; /* current receive buffer */
word XOffset; /* offset in x-buffer */
word ROffset; /* offset in r-buffer */
};
typedef struct {
byte type;
byte channels;
word features;
IDI_CALL request;
} DESCRIPTOR;
/* descriptor type field coding */
#define IDI_ADAPTER_S 1
#define IDI_ADAPTER_PR 2
#define IDI_ADAPTER_DIVA 3
#define IDI_ADAPTER_MAESTRA 4
#define IDI_VADAPTER 0x40
#define IDI_DRIVER 0x80
#define IDI_DADAPTER 0xfd
#define IDI_DIDDPNP 0xfe
#define IDI_DIMAINT 0xff
/* Hardware IDs ISA PNP */
#define HW_ID_DIVA_PRO 3 /* same as IDI_ADAPTER_DIVA */
#define HW_ID_MAESTRA 4 /* same as IDI_ADAPTER_MAESTRA */
#define HW_ID_PICCOLA 5
#define HW_ID_DIVA_PRO20 6
#define HW_ID_DIVA20 7
#define HW_ID_DIVA_PRO20_U 8
#define HW_ID_DIVA20_U 9
#define HW_ID_DIVA30 10
#define HW_ID_DIVA30_U 11
/* Hardware IDs PCI */
#define HW_ID_EICON_PCI 0x1133
#define HW_ID_SIEMENS_PCI 0x8001 /* unused SubVendor ID for Siemens Cornet-N cards */
#define HW_ID_PROTTYPE_CORNETN 0x0014 /* SubDevice ID for Siemens Cornet-N cards */
#define HW_ID_FUJITSU_SIEMENS_PCI 0x110A /* SubVendor ID for Fujitsu Siemens */
#define HW_ID_GS03_PCI 0x0021 /* SubDevice ID for Fujitsu Siemens ISDN S0 card */
#define HW_ID_DIVA_PRO20_PCI 0xe001
#define HW_ID_DIVA20_PCI 0xe002
#define HW_ID_DIVA_PRO20_PCI_U 0xe003
#define HW_ID_DIVA20_PCI_U 0xe004
#define HW_ID_DIVA201_PCI 0xe005
#define HW_ID_DIVA_CT_ST 0xe006
#define HW_ID_DIVA_CT_U 0xe007
#define HW_ID_DIVA_CTL_ST 0xe008
#define HW_ID_DIVA_CTL_U 0xe009
#define HW_ID_DIVA_ISDN_V90_PCI 0xe00a
#define HW_ID_DIVA202_PCI_ST 0xe00b
#define HW_ID_DIVA202_PCI_U 0xe00c
#define HW_ID_DIVA_PRO30_PCI 0xe00d
#define HW_ID_MAESTRA_PCI 0xe010
#define HW_ID_MAESTRAQ_PCI 0xe012
#define HW_ID_DSRV_Q8M_V2_PCI 0xe013
#define HW_ID_MAESTRAP_PCI 0xe014
#define HW_ID_DSRV_P30M_V2_PCI 0xe015
#define HW_ID_DSRV_VOICE_Q8M_PCI 0xe016
#define HW_ID_DSRV_VOICE_Q8M_V2_PCI 0xe017
#define HW_ID_DSRV_B2M_V2_PCI 0xe018
#define HW_ID_DSRV_VOICE_P30M_V2_PCI 0xe019
#define HW_ID_DSRV_B2F_PCI 0xe01a
#define HW_ID_DSRV_VOICE_B2M_V2_PCI 0xe01b
/* Hardware IDs USB */
#define EICON_USB_VENDOR_ID 0x071D
#define HW_ID_DIVA_USB_REV1 0x1000
#define HW_ID_DIVA_USB_REV2 0x1003
#define HW_ID_TELEDAT_SURF_USB_REV2 0x1004
#define HW_ID_TELEDAT_SURF_USB_REV1 0x2000
/* --------------------------------------------------------------------------
Adapter array change notification framework
-------------------------------------------------------------------------- */
typedef void (IDI_CALL_LINK_T *didd_adapter_change_callback_t)(void IDI_CALL_ENTITY_T *context, DESCRIPTOR *adapter, int removal);
/* -------------------------------------------------------------------------- */
#define DI_VOICE 0x0 /* obsolete define */
#define DI_FAX3 0x1
#define DI_MODEM 0x2
#define DI_POST 0x4
#define DI_V110 0x8
#define DI_V120 0x10
#define DI_POTS 0x20
#define DI_CODEC 0x40
#define DI_MANAGE 0x80
#define DI_V_42 0x0100
#define DI_EXTD_FAX 0x0200 /* Extended FAX (ECM, 2D, T.6, Polling) */
#define DI_AT_PARSER 0x0400 /* Build-in AT Parser in the L2 */
#define DI_VOICE_OVER_IP 0x0800 /* Voice over IP support */
typedef void (IDI_CALL_LINK_T *_IDI_CALL)(void *, ENTITY *);
#endif
|