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