home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / cbm / os-include.lha / os-include / devices / serial.h < prev    next >
C/C++ Source or Header  |  1993-10-15  |  7KB  |  181 lines

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