home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cdisk.zip / SERIAL / SERIAL.H < prev    next >
Text File  |  1992-12-29  |  7KB  |  157 lines

  1. /* serial.h
  2.    include file for sample driver
  3. */
  4.  
  5. #define  SAMPLE_CAT  0x90           /* category for DosDevIOCtl          */
  6. #define  CR 0x0d
  7. #define  MIN_TIMEOUT 15000L           /* ~5 second timeout                 */
  8. #define  UART_PORT_ADDRESS 0x220
  9.  
  10. /* driver utilized structures */
  11.  
  12. typedef struct _DCBINFO {           /* DCB storage for this driver       */
  13.     USHORT usWriteTimeout;          /* timeouts for Block calls          */
  14.     USHORT usReadTimeout;           /* real Block call timeout           */
  15.     UCHAR  fbCtlHndShake;           /* OS/2 std data follows             */
  16.     UCHAR  fbFlowReplace;
  17.     UCHAR  fbTimeout;
  18.     UCHAR  bErrorReplacementChar;
  19.     UCHAR  bBreakReplacementChar;
  20.     UCHAR  bXONChar;
  21.     UCHAR  bXOFFChar;
  22. DCBINFO;
  23.  
  24. typedef struct _MODEMSTATUS {
  25.     UCHAR fbModemOn;
  26.     UCHAR fbModemOff;
  27. MODEMSTATUS;
  28.  
  29. /* standard OS/2 structure */
  30.  
  31. typedef struct _LINECONTROL {
  32.     UCHAR bDataBits;
  33.     UCHAR bParity;
  34.     UCHAR bStopBits;
  35.     UCHAR fbTransBreak;
  36. } LINECONTROL;
  37.  
  38. /* queue info returned by driver */
  39.  
  40. typedef struct _QUEUE {
  41.     USHORT cch;
  42.     USHORT cb;
  43. QUEUE;
  44.  
  45. /* this structure holds the register values for the 82510 uart */
  46.  
  47. typedef struct _UARTREGS {
  48.  
  49. /* bank 0, 8250/16450 compatibility bank */
  50.  
  51.     UCHAR Txd_0;                    /* transmit/read data FIFO             */
  52.     UCHAR Ger;                      /* general enable register             */
  53.     UCHAR Bal;                      /* baud rate generator A low           */
  54.     UCHAR Bah;                      /* baud rate generator A high          */
  55.     UCHAR Bank_0;                   /* select bank 0                       */
  56.     UCHAR Lcr;                      /* line control register               */
  57.     UCHAR Mcr_0;                    /* modem control register              */
  58.     UCHAR Lsr;                      /* line status register                */
  59.     UCHAR Msr;                      /* modem status register               */
  60.     UCHAR Acr0;                     /* character match value 0             */
  61.  
  62. /* bank 1, general work bank  */
  63.  
  64.     UCHAR Txd_1;                    /* transmit/read data FIFO             */
  65.     UCHAR Txf;                      /* 9th bit transmit register           */
  66.     UCHAR Bank_1;                   /* select bank 1                       */
  67.     UCHAR Tmcr;                     /* start timer A/B command register    */
  68.     UCHAR Mcr_1;                    /* modem control register for bank 1   */
  69.     UCHAR Rcm;                      /* receiver command register           */
  70.     UCHAR Tcm;                      /* transmit command register           */
  71.     UCHAR Icm;                      /* internal command register           */
  72.  
  73. /* bank 2, general configuration bank */
  74.  
  75.     UCHAR Fmd;                      /* FIFO threshold register             */
  76.     UCHAR Bank_2;                   /* select bank 2                       */
  77.     UCHAR Tmd;                      /* transmit mode register              */
  78.     UCHAR Imd;                      /* internal mode register              */
  79.     UCHAR Acr1;                     /* character match value 1             */
  80.     UCHAR Rie;                      /* receiver interrupt enable register  */
  81.     UCHAR Rmd;                      /* receive mode register               */
  82.  
  83. /* bank 3, modem configuration bank */
  84.  
  85.     UCHAR Clcf;                     /* clocks configure register           */
  86.     UCHAR Bacf;                     /* baud rate generator A config. reg.  */
  87.     UCHAR Bbl;                      /* baud rate generator B low value     */
  88.     UCHAR Bbh;                      /* baud rate generator B high value    */
  89.     UCHAR Bank_3;                   /* selct bank 3                        */
  90.     UCHAR Bbcf;                     /* baud rate generator B config. reg.  */
  91.     UCHAR Pmd;                      /* I/O mode pin register               */
  92.     UCHAR Mie;                      /* modem interrupt enable register     */
  93.     UCHAR Tmie;                     /* timer interrupt enable register     */
  94.  
  95. } UARTREGS;
  96. /* this structure holds the start and end message times for an adam message*/ 
  97.  
  98. typedef struct _DATETIME {         /* date, adam driver/server specific   */
  99.     UCHAR   hours;
  100.     UCHAR   minutes;
  101.     UCHAR   seconds;
  102.     UCHAR   hundredths;
  103.     UCHAR   day;
  104.     UCHAR   month;
  105.     USHORT  year;
  106.     short   timezone;
  107.     UCHAR   weekday;
  108.  
  109. } DATETIME;
  110. typedef DATETIME far *PDATETIME;
  111.  
  112. /* this structure holds all the driver and uart specific data for each
  113. of the four or eight 82510 uarts.
  114. */   
  115.  
  116. typedef struct _UART {
  117.    UARTREGS     uart_regs;          /* 82510 register structures           */
  118.    LINECONTROL  line_control;       /* OS/2 line control struct            */
  119.    MODEMSTATUS  modem_status;       /* OS/2 modem status struct            */
  120.    DCBINFO      dcb_info;           /* our special DCBINFO struct          */
  121.    UCHAR        opencount;          /* number of opens on a device         */
  122.    unsigned int savepid;            /* saved PID of app that opened device */
  123.    PREQPACKET   ReadQHead;          /* head pointer for linked req. queue  */
  124.    PREQPACKET   WriteQHead;         /* head pointer for linked req. queue  */
  125.    PREQPACKET   ThisReadRP;         /* pointer to current read req. pkt.   */
  126.    PREQPACKET   ThisWriteRP;        /* pointer to current write req. pkt.  */
  127.    ULONG        ReadID;             /* used for thread ID for read Block   */
  128.    ULONG        WriteID;            /* used for thread ID for write Block  */
  129.    USHORT       baud_rate;          /* current baud rate for port          */
  130.    USHORT       first_flag;         /* for timeout logic                   */
  131.    ULONG        tickcount;          /* used for driver Block call timeout  */
  132.    UCHAR        inchar;             /* current char read from uart FIFO    */
  133.    UCHAR        outchar;            /* current output character            */
  134.    UCHAR        savechar;           /* last char transmitted for bus cont. */
  135.    UCHAR        tempchar;           /* temp character storage              */
  136.    ULONG        timeout;            /* current driver timeout value        */
  137.    int          temp;               /* misc temp storage                   */
  138.    int          temp_port;          /* used to hold port temporarily       */
  139.    int          com_error_word;     /* OS/2-like, holds last comm error    */
  140.    int          com_event_word;     /* what happened last                  */
  141.    char         com_status_word;    /* what's happening now                */
  142.    USHORT       transmit_data_status; /* xmit status                       */
  143.    char         modem_input_signals; /* status of modem signals            */
  144.    char         modem_output_signals;/* set modem signals                  */
  145.    int          port;                /* current port                       */
  146.    QUEUE        receive_queue;       /* receive queue data returned to app */
  147.    QUEUE        transmit_queue;      /* xmit queue data returned to app    */
  148.    CHARQUEUE    rxadam_queue;        /* OS/2 circular receive queue        */
  149.    CHARQUEUE    txadam_queue;        /* OS/2 circular transmit queue       */
  150.  
  151.   } UART;
  152.  
  153.  
  154.