| /* | |
| * | |
| 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 |