home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / DC-POS24.LZX / pOS / IncPOS.lzx / Device / Serial.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-03-18  |  5.3 KB  |  148 lines

  1. #ifndef __INC_POS_DEVICE_SERIAL_H
  2. #define __INC_POS_DEVICE_SERIAL_H
  3. /*******************************************************************
  4.  Includes Release 24
  5.  (C) Copyright 1995-1997 proDAD
  6.      All Rights Reserved
  7.  
  8.  $AUT Holger Burkarth
  9.  $DAT >>Serial.h<<   19 Nov 1996    11:23:44 - (C) ProDAD
  10. *******************************************************************/
  11. #ifndef __INC_POS_PEXEC_DEVICE_H
  12. #include <pExec/Device.h>
  13. #endif
  14. #ifndef __INC_POS_DEVICE_IOTERM_H
  15. #include <Device/IOTerm.h>
  16. #endif
  17.  
  18.  
  19. /*----------------------------------
  20. -----------------------------------*/
  21. struct pOS_SerialIO
  22. {
  23. /* struct pOS_IOStdReq */
  24.  
  25.   struct pOS_Message  sio_Message;
  26.   struct pOS_Device  *sio_Device;    /* device node pointer  */
  27.   struct pOS_Unit    *sio_Unit;      /* unit (driver private)*/
  28.   UWORD               sio_Command;   /* (enum pOS_IOReqCommands) */
  29.   UBYTE               sio_Flags;     /* (enum pOS_IOReqFlags) */
  30.   SBYTE               sio_Error;     /* (enum pOS_IOReqErrors) */
  31.   ULONG               sio_Actual;    /* actual number of bytes transferred */
  32.   ULONG               sio_Length;    /* requested number bytes transferred */
  33.   APTR                sio_Data;      /* points to data area */
  34.   ULONG               sio_Offset;    /* unused */
  35.  
  36.   ULONG               sio_CtlChar;   /* control char's (order = xON,xOFF,INQ,ACK) 0x11130000 */
  37.   ULONG               sio_RBufLen;   /* length in bytes of serial port's read buffer */
  38.   ULONG               sio_ExtFlags;  /* (enum pOS_SerialExtFlags) */
  39.   ULONG               sio_Baud;      /* baud rate requested (true baud) */
  40.   ULONG               sio_BrkTime;   /* duration of break signal in MICROseconds */
  41.   struct pOS_IOTArray sio_TArray;    /* termination character array */
  42.   UBYTE               sio_ReadLen;   /* bits per read character (# of bits) */
  43.   UBYTE               sio_WriteLen;  /* bits per write character (# of bits) */
  44.   UBYTE               sio_StopBits;  /* stopbits for read (# of bits) */
  45.   UBYTE               sio_SerFlags;  /* (enum pOS_SerialFlags) */
  46.   UWORD               sio_Status;    /* (enum pOS_SerialStatus) */
  47. };
  48.  
  49.  
  50. enum pOS_SerialFlags
  51. {
  52.   SERB_XDisabled = 7,       /* xOn-xOff feature disabled bit */
  53.   SERF_XDisabled = (1<<7),  /* xOn-xOff feature disabled mask */
  54.   SERB_EOFMode   = 6,       /* EOF mode enabled bit */
  55.   SERF_EOFMode   = (1<<6),  /* EOF mode enabled mask */
  56.   SERB_Shared    = 5,       /* non-exclusive access bit */
  57.   SERF_Shared    = (1<<5),  /* non-exclusive access mask */
  58.   SERB_RADBoogie = 4,       /* high-speed mode active bit */
  59.   SERF_RADBoogie = (1<<4),  /* high-speed mode active mask */
  60.   SERB_QueuedBrk = 3,       /* queue this Break ioRqst */
  61.   SERF_QueuedBrk = (1<<3),  /* queue this Break ioRqst */
  62.   SERB_7Wire     = 2,       /* RS232 7-wire protocol */
  63.   SERF_7Wire     = (1<<2),  /* RS232 7-wire protocol */
  64.   SERB_PartyOdd  = 1,       /* parity feature enabled bit */
  65.   SERF_PartyOdd  = (1<<1),  /* parity feature enabled mask */
  66.   SERB_PartyOn   = 0,       /* parity-enabled bit */
  67.   SERF_PartyOn   = (1<<0)   /* parity-enabled mask */
  68. };
  69.  
  70.  
  71.  
  72. /* status of serial port, as follows:
  73. *        BIT  ACTIVE  FUNCTION
  74. *         0    ---    reserved
  75. *         1    ---    reserved
  76. *         2    ---    reserved
  77. *         3    low    Data Set Ready
  78. *         4    low    Clear To Send
  79. *         5    low    Carrier Detect
  80. *         6    low    Ready To Send
  81. *         7    low    Data Terminal Ready
  82. *         8    high   read overrun
  83. *         9    high   break sent
  84. *        10    high   break received
  85. *        11    high   transmit x-OFFed
  86. *        12    high   receive x-OFFed
  87. *     13-15    ---    reserved
  88. */
  89.  
  90. enum pOS_SerialStatus
  91. {
  92.   SERSTAB_XOffRead   = 12,       /* receive currently xOFF'ed bit */
  93.   SERSTAF_XOffRead   = (1<<12),  /* receive currently xOFF'ed mask */
  94.   SERSTAB_XOffWrite  = 11,       /* transmit currently xOFF'ed bit */
  95.   SERSTAF_XOffWrite  = (1<<11),  /* transmit currently xOFF'ed mask */
  96.   SERSTAB_ReadBreak  = 10,       /* break was latest input bit */
  97.   SERSTAF_ReadBreak  = (1<<10),  /* break was latest input mask */
  98.   SERSTAB_WroteBreak = 9,        /* break was latest output bit */
  99.   SERSTAF_WroteBreak = (1<<9),   /* break was latest output mask */
  100.   SERSTAB_Overrun    = 8,        /* status word RBF overrun bit */
  101.   SERSTAF_Overrun    = (1<<8),   /* status word RBF overrun mask */
  102.   SERSTAB_nDTR       = 7,
  103.   SERSTAF_nDTR       = (1<<7),
  104.   SERSTAB_nRTS       = 6,
  105.   SERSTAF_nRTS       = (1<<6),
  106.   SERSTAB_nCD        = 5,
  107.   SERSTAF_nCD        = (1<<5),
  108.   SERSTAB_nCTS       = 4,
  109.   SERSTAF_nCTS       = (1<<4),
  110.   SERSTAB_nDSR       = 3,
  111.   SERSTAF_nDST       = (1<<3)
  112. };
  113.  
  114.  
  115. enum pOS_SerialExtFlags
  116. {
  117.   SEXTB_MSPOn = 1,       /* Use mark-space parity, instead of odd-even. */
  118.   SEXTF_MSPOn = (1<<1),  /* mark-space parity mask */
  119.   SEXTB_Mark  = 0,       /* if mark-space, use mark */
  120.   SEXTF_Mark  = (1<<0),  /* if mark-space, use mark mask */
  121. };
  122.  
  123.  
  124.  
  125. enum pOS_SerialIOReqCommands
  126. {
  127.   SERCMD_Query = CMD_NONSTD,
  128.   SERCMD_Break,
  129.   SERCMD_SetParams,
  130. };
  131.  
  132.  
  133. enum pOS_SerialIOReqErrors
  134. {
  135.   SERIOERR_DevBusy       =1,
  136.   SERIOERR_BaudMismatch,      /* baud rate not supported by hardware */
  137.   SERIOERR_BufErr        =4,  /* Failed to allocate new read buffer */
  138.   SERIOERR_InvParam,
  139.   SERIOERR_LineErr,
  140.   SERIOERR_ParityErr     =9,
  141.   SERIOERR_TimerErr      =11,
  142.   SERIOERR_BufOverflow,
  143.   SERIOERR_NoDSR,
  144.   SERIOERR_DetectedBreak =15
  145. };
  146.  
  147. #endif
  148.