idi.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:4k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * External IDI interface
  3.  *
  4.  * Copyright (C) Eicon Technology Corporation, 2000.
  5.  *
  6.  * Eicon File Revision :    1.0  
  7.  *
  8.  * This software may be used and distributed according to the terms
  9.  * of the GNU General Public License, incorporated herein by reference.
  10.  *
  11.  */
  12. #if !defined(IDI_H)
  13. #define IDI_H
  14. #include "sys.h"
  15. /* typedefs for our data structures */
  16. typedef struct get_name_s GET_NAME;
  17. typedef struct entity_s ENTITY;
  18. typedef struct buffers_s BUFFERS;
  19. /* IDI request/callback function pointer */
  20. typedef void (* IDI_CALL)(ENTITY *);
  21. typedef struct {
  22.   word length;          /* length of data/parameter field           */
  23.   byte P[270];          /* data/parameter field                     */
  24. } DBUFFER;
  25. #define REQ_NAME 0x0100
  26. #define BOARD_NAME_LENGTH 9
  27. struct get_name_s {
  28.   word command;         /* command = 0x0100 */
  29.   byte name[BOARD_NAME_LENGTH];
  30. };
  31. #define REQ_REMOVE    0x0000    /* pointer to word which is 0 */
  32. #define REQ_SERIAL    0x0200  
  33. struct get_serial_s {
  34.   word      command;            /* command = 0x0200 */
  35.   dword     serial;             /* serial number */
  36. };
  37. #define REQ_POSTCALL  0x0300  
  38. struct postcall_s {
  39.   word        command;         /* command = 0x0300 */
  40.   word        dummy;           /* not used */
  41.   IDI_CALL    callback;        /* routine address to call back */
  42.   ENTITY      *contxt;         /* ptr to entity to use */
  43. };
  44. #define REQ_XLOG      0x0400   /* structure is card dependent/defined locally */
  45. struct buffers_s {
  46.   word PLength;
  47.   byte *P;
  48. };
  49. struct entity_s {
  50.   byte                  Req;            /* pending request          */
  51.   byte                  Rc;             /* return code received     */
  52.   byte                  Ind;            /* indication received      */
  53.   byte                  ReqCh;          /* channel of current Req   */
  54.   byte                  RcCh;           /* channel of current Rc    */
  55.   byte                  IndCh;          /* channel of current Ind   */
  56.   byte                  Id;             /* ID used by this entity   */
  57.   byte                  GlobalId;       /* reserved field           */
  58.   byte                  XNum;           /* number of X-buffers      */
  59.   byte                  RNum;           /* number of R-buffers      */
  60.   BUFFERS               *X;         /* pointer to X-buffer list */
  61.   BUFFERS               *R;         /* pointer to R-buffer list */
  62.   word                  RLength;        /* length of current R-data */
  63.   DBUFFER               *RBuffer;       /* buffer of current R-data */
  64.   byte                  RNR;            /* receive not ready flag   */
  65.   byte                  complete;       /* receive complete status  */
  66.   IDI_CALL              callback;
  67.   word                  user[2];
  68.         /* fields used by the driver internally                     */
  69.   byte                  No;             /* entity number            */
  70.   byte                  reserved2;      /* reserved field           */
  71.   byte                  More;           /* R/X More flags           */
  72.   byte                  MInd;           /* MDATA coding for this ID */
  73.   byte                  XCurrent;       /* current transmit buffer  */
  74.   byte                  RCurrent;       /* current receive buffer   */
  75.   word                  XOffset;        /* offset in x-buffer       */
  76.   word                  ROffset;        /* offset in r-buffer       */
  77. };
  78. typedef struct {
  79.   byte                  type;
  80.   byte                  channels;
  81.   word                  features;
  82.   /* dword serial; */
  83.   IDI_CALL              request;
  84. } DESCRIPTOR;
  85. extern void    DIVA_DIDD_Read(DESCRIPTOR *, int);
  86.         /* descriptor type field coding */
  87. #define IDI_ADAPTER_S           1
  88. #define IDI_ADAPTER_PR          2
  89. #define IDI_ADAPTER_DIVA        3
  90. #define IDI_ADAPTER_MAESTRA     4
  91. #define IDI_ADAPTER_MAESTRAQ    5
  92. #define IDI_ADAPTER_MAESTRAP    6
  93. #define IDI_VADAPTER            0x40
  94. #define IDI_DRIVER              0x80
  95. #define IDI_DIMAINT             0xff
  96. /* feature bit mask values */
  97. #define DI_VOICE        0x0 /* obsolete define */
  98. #define DI_FAX3         0x1
  99. #define DI_MODEM        0x2
  100. #define DI_POST         0x4
  101. #define DI_V110         0x8
  102. #define DI_V120         0x10
  103. #define DI_POTS         0x20
  104. #define DI_CODEC        0x40
  105. #define DI_MANAGE       0x80
  106. #define DI_V_42         0x0100
  107. #define DI_EXTD_FAX     0x0200 /* Extended FAX (ECM, 2D, T.6, Polling) */
  108. #endif /* IDI_H */