home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD v1.2 / amidev_cd_12.iso / inc&ad2.0 / includes / devices / serial.h < prev    next >
C/C++ Source or Header  |  1992-09-01  |  7KB  |  183 lines

  1. #ifndef DEVICES_SERIAL_H
  2. #define DEVICES_SERIAL_H
  3. /*
  4. **    $Filename: devices/serial.h $
  5. **    $Release: 2.04 Includes, V37.4 $
  6. **    $Revision: 33.6 $
  7. **    $Date: 90/11/06 $
  8. **
  9. **    external declarations for the serial device
  10. **
  11. **    (C) Copyright 1985-1991 Commodore-Amiga, Inc.
  12. **        All Rights Reserved
  13. */
  14.  
  15. #ifndef   EXEC_IO_H
  16. #include "exec/io.h"
  17. #endif /* EXEC_IO_H */
  18.  
  19.            /* array of termination char's */
  20.            /* to use,see serial.doc setparams */
  21.  
  22.  struct  IOTArray {
  23.     ULONG TermArray0;
  24.     ULONG TermArray1;
  25. };
  26.  
  27.  
  28. #define SER_DEFAULT_CTLCHAR 0x11130000    /* default chars for xON,xOFF */
  29. /* You may change these via SETPARAMS.    At this time, parity is not
  30.    calculated for xON/xOFF characters.    You must supply them with the
  31.    desired parity. */
  32.  
  33. /******************************************************************/
  34. /* CAUTION !!  IF YOU ACCESS the serial.device, you MUST (!!!!) use an
  35.    IOExtSer-sized structure or you may overlay innocent memory !! */
  36. /******************************************************************/
  37.  
  38.  struct  IOExtSer {
  39.     struct     IOStdReq IOSer;
  40.  
  41. /*     STRUCT    MsgNode
  42. *   0    APTR     Succ
  43. *   4    APTR     Pred
  44. *   8    UBYTE     Type
  45. *   9    UBYTE     Pri
  46. *   A    APTR     Name
  47. *   E    APTR     ReplyPort
  48. *  12    UWORD     MNLength
  49. *     STRUCT   IOExt
  50. *  14    APTR     io_Device
  51. *  18    APTR     io_Unit
  52. *  1C    UWORD     io_Command
  53. *  1E    UBYTE     io_Flags
  54. *  1F    UBYTE     io_Error
  55. *     STRUCT   IOStdExt
  56. *  20    ULONG     io_Actual
  57. *  24    ULONG     io_Length
  58. *  28    APTR     io_Data
  59. *  2C    ULONG     io_Offset
  60. *
  61. *  30 */
  62.    ULONG   io_CtlChar;      /* control char's (order = xON,xOFF,INQ,ACK) */
  63.    ULONG   io_RBufLen;      /* length in bytes of serial port's read buffer */
  64.    ULONG   io_ExtFlags;   /* additional serial flags (see bitdefs below) */
  65.    ULONG   io_Baud;      /* baud rate requested (true baud) */
  66.    ULONG   io_BrkTime;      /* duration of break signal in MICROseconds */
  67.    struct  IOTArray io_TermArray; /* termination character array */
  68.    UBYTE   io_ReadLen;      /* bits per read character (# of bits) */
  69.    UBYTE   io_WriteLen;   /* bits per write character (# of bits) */
  70.    UBYTE   io_StopBits;   /* stopbits for read (# of bits) */
  71.    UBYTE   io_SerFlags;   /* see SerFlags bit definitions below  */
  72.    UWORD   io_Status;
  73. };
  74.    /* status of serial port, as follows:
  75. *           BIT    ACTIVE    FUNCTION
  76. *            0     ---    reserved
  77. *            1     ---    reserved
  78. *            2     high    Connected to parallel "select" on the A1000.
  79. *                Connected to both the parallel "select" and
  80. *                serial "ring indicator" pins on the A500
  81. *                & A2000.  Take care when making cables.
  82. *            3     low    Data Set Ready
  83. *            4     low    Clear To Send
  84. *            5     low    Carrier Detect
  85. *            6     low    Ready To Send
  86. *            7     low    Data Terminal Ready
  87. *            8     high    read overrun
  88. *            9     high    break sent
  89. *           10     high    break received
  90. *           11     high    transmit x-OFFed
  91. *           12     high    receive x-OFFed
  92. *        13-15        reserved
  93. */
  94.  
  95. #define   SDCMD_QUERY        CMD_NONSTD    /* $09 */
  96. #define   SDCMD_BREAK           (CMD_NONSTD+1)    /* $0A */
  97. #define   SDCMD_SETPARAMS      (CMD_NONSTD+2)    /* $0B */
  98.  
  99.  
  100. #define SERB_XDISABLED    7    /* io_SerFlags xOn-xOff feature disabled bit */
  101. #define SERF_XDISABLED    (1<<7)    /*    "     xOn-xOff feature disabled mask */
  102. #define    SERB_EOFMODE    6    /*    "     EOF mode enabled bit */
  103. #define    SERF_EOFMODE    (1<<6)    /*    "     EOF mode enabled mask */
  104. #define    SERB_SHARED    5    /*    "     non-exclusive access bit */
  105. #define    SERF_SHARED    (1<<5)    /*    "     non-exclusive access mask */
  106. #define SERB_RAD_BOOGIE 4    /*    "     high-speed mode active bit */
  107. #define SERF_RAD_BOOGIE (1<<4)    /*    "     high-speed mode active mask */
  108. #define    SERB_QUEUEDBRK    3    /*    "     queue this Break ioRqst */
  109. #define    SERF_QUEUEDBRK    (1<<3)    /*    "     queue this Break ioRqst */
  110. #define    SERB_7WIRE    2    /*    "     RS232 7-wire protocol */
  111. #define    SERF_7WIRE    (1<<2)    /*    "     RS232 7-wire protocol */
  112. #define    SERB_PARTY_ODD    1    /*    "     parity feature enabled bit */
  113. #define    SERF_PARTY_ODD    (1<<1)    /*    "     parity feature enabled mask */
  114. #define    SERB_PARTY_ON    0    /*    "     parity-enabled bit */
  115. #define    SERF_PARTY_ON    (1<<0)    /*    "     parity-enabled mask */
  116.  
  117. /* These now refect the actual bit positions in the io_Status UWORD */
  118. #define    IO_STATB_XOFFREAD 12       /* io_Status receive currently xOFF'ed bit */
  119. #define    IO_STATF_XOFFREAD (1<<12)  /*     "     receive currently xOFF'ed mask */
  120. #define    IO_STATB_XOFFWRITE 11       /*     "     transmit currently xOFF'ed bit */
  121. #define    IO_STATF_XOFFWRITE (1<<11) /*     "     transmit currently xOFF'ed mask */
  122. #define    IO_STATB_READBREAK 10       /*     "     break was latest input bit */
  123. #define    IO_STATF_READBREAK (1<<10) /*     "     break was latest input mask */
  124. #define    IO_STATB_WROTEBREAK 9       /*     "     break was latest output bit */
  125. #define    IO_STATF_WROTEBREAK (1<<9) /*     "     break was latest output mask */
  126. #define    IO_STATB_OVERRUN 8       /*     "     status word RBF overrun bit */
  127. #define    IO_STATF_OVERRUN (1<<8)       /*     "     status word RBF overrun mask */
  128.  
  129.  
  130. #define    SEXTB_MSPON    1    /* io_ExtFlags. Use mark-space parity, */
  131.                 /*        instead of odd-even. */
  132. #define    SEXTF_MSPON    (1<<1)    /*    "     mark-space parity mask */
  133. #define    SEXTB_MARK    0    /*    "     if mark-space, use mark */
  134. #define    SEXTF_MARK    (1<<0)    /*    "     if mark-space, use mark mask */
  135.  
  136.  
  137. #define SerErr_DevBusy           1
  138. #define SerErr_BaudMismatch    2 /* baud rate not supported by hardware */
  139. #define SerErr_BufErr           4 /* Failed to allocate new read buffer */
  140. #define SerErr_InvParam        5
  141. #define SerErr_LineErr           6
  142. #define SerErr_ParityErr       9
  143. #define SerErr_TimerErr       11 /*(See the serial/OpenDevice autodoc)*/
  144. #define SerErr_BufOverflow    12
  145. #define SerErr_NoDSR          13
  146. #define SerErr_DetectedBreak  15
  147.  
  148.  
  149. #ifdef DEVICES_SERIAL_H_OBSOLETE
  150. #define SerErr_InvBaud           3    /* unused */
  151. #define SerErr_NotOpen           7    /* unused */
  152. #define SerErr_PortReset       8    /* unused */
  153. #define SerErr_InitErr          10    /* unused */
  154. #define SerErr_NoCTS          14    /* unused */
  155.  
  156. /* These defines refer to the HIGH ORDER byte of io_Status.  They have
  157.    been replaced by the new, corrected ones above */
  158. #define    IOSTB_XOFFREAD    4    /* iost_hob receive currently xOFF'ed bit */
  159. #define    IOSTF_XOFFREAD    (1<<4)    /*    "     receive currently xOFF'ed mask */
  160. #define    IOSTB_XOFFWRITE 3    /*    "     transmit currently xOFF'ed bit */
  161. #define    IOSTF_XOFFWRITE (1<<3)    /*    "     transmit currently xOFF'ed mask */
  162. #define    IOSTB_READBREAK 2    /*    "     break was latest input bit */
  163. #define    IOSTF_READBREAK (1<<2)    /*    "     break was latest input mask */
  164. #define    IOSTB_WROTEBREAK 1    /*    "     break was latest output bit */
  165. #define    IOSTF_WROTEBREAK (1<<1) /*    "     break was latest output mask */
  166. #define    IOSTB_OVERRUN    0    /*    "     status word RBF overrun bit */
  167. #define    IOSTF_OVERRUN    (1<<0)    /*    "     status word RBF overrun mask */
  168.  
  169. #define    IOSERB_BUFRREAD 7    /* io_Flags from read buffer bit */
  170. #define    IOSERF_BUFRREAD (1<<7)    /*    "     from read buffer mask */
  171. #define    IOSERB_QUEUED    6    /*    "     rqst-queued bit */
  172. #define    IOSERF_QUEUED    (1<<6)    /*    "     rqst-queued mask */
  173. #define    IOSERB_ABORT    5    /*    "     rqst-aborted bit */
  174. #define    IOSERF_ABORT    (1<<5)    /*    "     rqst-aborted mask */
  175. #define    IOSERB_ACTIVE    4    /*    "     rqst-qued-or-current bit */
  176. #define    IOSERF_ACTIVE    (1<<4)    /*    "     rqst-qued-or-current mask */
  177. #endif
  178.  
  179.  
  180. #define SERIALNAME     "serial.device"
  181.  
  182. #endif /* DEVICES_SERIAL_H */
  183.