- /*
- * External IDI interface
- *
- * Copyright (C) Eicon Technology Corporation, 2000.
- *
- * Eicon File Revision : 1.0
- *
- * This software may be used and distributed according to the terms
- * of the GNU General Public License, incorporated herein by reference.
- *
- */
- #if !defined(IDI_H)
- #define IDI_H
- #include "sys.h"
- /* typedefs for our data structures */
- typedef struct get_name_s GET_NAME;
- typedef struct entity_s ENTITY;
- typedef struct buffers_s BUFFERS;
- /* IDI request/callback function pointer */
- typedef void (* IDI_CALL)(ENTITY *);
- typedef struct {
- word length; /* length of data/parameter field */
- byte P[270]; /* data/parameter field */
- } DBUFFER;
- #define REQ_NAME 0x0100
- #define BOARD_NAME_LENGTH 9
- struct get_name_s {
- word command; /* command = 0x0100 */
- byte name[BOARD_NAME_LENGTH];
- };
- #define REQ_REMOVE 0x0000 /* pointer to word which is 0 */
- #define REQ_SERIAL 0x0200
- struct get_serial_s {
- word command; /* command = 0x0200 */
- dword serial; /* serial number */
- };
- #define REQ_POSTCALL 0x0300
- struct postcall_s {
- word command; /* command = 0x0300 */
- word dummy; /* not used */
- IDI_CALL callback; /* routine address to call back */
- ENTITY *contxt; /* ptr to entity to use */
- };
- #define REQ_XLOG 0x0400 /* structure is card dependent/defined locally */
- 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;
- /* dword serial; */
- IDI_CALL request;
- } DESCRIPTOR;
- extern void DIVA_DIDD_Read(DESCRIPTOR *, int);
- /* 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_ADAPTER_MAESTRAQ 5
- #define IDI_ADAPTER_MAESTRAP 6
- #define IDI_VADAPTER 0x40
- #define IDI_DRIVER 0x80
- #define IDI_DIMAINT 0xff
- /* feature bit mask values */
- #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) */
- #endif /* IDI_H */