#ifndef DEVICES_SERIAL_H #define DEVICES_SERIAL_H /* ** $Filename: devices/serial.h $ ** $Release: 2.04 Includes, V37.4 $ ** $Revision: 33.6 $ ** $Date: 90/11/06 $ ** ** external declarations for the serial device ** ** (C) Copyright 1985-1999 Amiga, Inc. ** All Rights Reserved */ #ifndef EXEC_IO_H #include "exec/io.h" #endif /* EXEC_IO_H */ /* array of termination char's */ /* to use,see serial.doc setparams */ struct IOTArray { ULONG TermArray0; ULONG TermArray1; }; #define SER_DEFAULT_CTLCHAR 0x11130000 /* default chars for xON,xOFF */ /* You may change these via SETPARAMS. At this time, parity is not calculated for xON/xOFF characters. You must supply them with the desired parity. */ /******************************************************************/ /* CAUTION !! IF YOU ACCESS the serial.device, you MUST (!!!!) use an IOExtSer-sized structure or you may overlay innocent memory !! */ /******************************************************************/ struct IOExtSer { struct IOStdReq IOSer; /* STRUCT MsgNode * 0 APTR Succ * 4 APTR Pred * 8 UBYTE Type * 9 UBYTE Pri * A APTR Name * E APTR ReplyPort * 12 UWORD MNLength * STRUCT IOExt * 14 APTR io_Device * 18 APTR io_Unit * 1C UWORD io_Command * 1E UBYTE io_Flags * 1F UBYTE io_Error * STRUCT IOStdExt * 20 ULONG io_Actual * 24 ULONG io_Length * 28 APTR io_Data * 2C ULONG io_Offset * * 30 */ ULONG io_CtlChar; /* control char's (order = xON,xOFF,INQ,ACK) */ ULONG io_RBufLen; /* length in bytes of serial port's read buffer */ ULONG io_ExtFlags; /* additional serial flags (see bitdefs below) */ ULONG io_Baud; /* baud rate requested (true baud) */ ULONG io_BrkTime; /* duration of break signal in MICROseconds */ struct IOTArray io_TermArray; /* termination character array */ UBYTE io_ReadLen; /* bits per read character (# of bits) */ UBYTE io_WriteLen; /* bits per write character (# of bits) */ UBYTE io_StopBits; /* stopbits for read (# of bits) */ UBYTE io_SerFlags; /* see SerFlags bit definitions below */ UWORD io_Status; }; /* status of serial port, as follows: * BIT ACTIVE FUNCTION * 0 --- reserved * 1 --- reserved * 2 high Connected to parallel "select" on the A1000. * Connected to both the parallel "select" and * serial "ring indicator" pins on the A500 * & A2000. Take care when making cables. * 3 low Data Set Ready * 4 low Clear To Send * 5 low Carrier Detect * 6 low Ready To Send * 7 low Data Terminal Ready * 8 high read overrun * 9 high break sent * 10 high break received * 11 high transmit x-OFFed * 12 high receive x-OFFed * 13-15 reserved */ #define SDCMD_QUERY CMD_NONSTD /* $09 */ #define SDCMD_BREAK (CMD_NONSTD+1) /* $0A */ #define SDCMD_SETPARAMS (CMD_NONSTD+2) /* $0B */ #define SERB_XDISABLED 7 /* io_SerFlags xOn-xOff feature disabled bit */ #define SERF_XDISABLED (1<<7) /* " xOn-xOff feature disabled mask */ #define SERB_EOFMODE 6 /* " EOF mode enabled bit */ #define SERF_EOFMODE (1<<6) /* " EOF mode enabled mask */ #define SERB_SHARED 5 /* " non-exclusive access bit */ #define SERF_SHARED (1<<5) /* " non-exclusive access mask */ #define SERB_RAD_BOOGIE 4 /* " high-speed mode active bit */ #define SERF_RAD_BOOGIE (1<<4) /* " high-speed mode active mask */ #define SERB_QUEUEDBRK 3 /* " queue this Break ioRqst */ #define SERF_QUEUEDBRK (1<<3) /* " queue this Break ioRqst */ #define SERB_7WIRE 2 /* " RS232 7-wire protocol */ #define SERF_7WIRE (1<<2) /* " RS232 7-wire protocol */ #define SERB_PARTY_ODD 1 /* " parity feature enabled bit */ #define SERF_PARTY_ODD (1<<1) /* " parity feature enabled mask */ #define SERB_PARTY_ON 0 /* " parity-enabled bit */ #define SERF_PARTY_ON (1<<0) /* " parity-enabled mask */ /* These now refect the actual bit positions in the io_Status UWORD */ #define IO_STATB_XOFFREAD 12 /* io_Status receive currently xOFF'ed bit */ #define IO_STATF_XOFFREAD (1<<12) /* " receive currently xOFF'ed mask */ #define IO_STATB_XOFFWRITE 11 /* " transmit currently xOFF'ed bit */ #define IO_STATF_XOFFWRITE (1<<11) /* " transmit currently xOFF'ed mask */ #define IO_STATB_READBREAK 10 /* " break was latest input bit */ #define IO_STATF_READBREAK (1<<10) /* " break was latest input mask */ #define IO_STATB_WROTEBREAK 9 /* " break was latest output bit */ #define IO_STATF_WROTEBREAK (1<<9) /* " break was latest output mask */ #define IO_STATB_OVERRUN 8 /* " status word RBF overrun bit */ #define IO_STATF_OVERRUN (1<<8) /* " status word RBF overrun mask */ #define SEXTB_MSPON 1 /* io_ExtFlags. Use mark-space parity, */ /* instead of odd-even. */ #define SEXTF_MSPON (1<<1) /* " mark-space parity mask */ #define SEXTB_MARK 0 /* " if mark-space, use mark */ #define SEXTF_MARK (1<<0) /* " if mark-space, use mark mask */ #define SerErr_DevBusy 1 #define SerErr_BaudMismatch 2 /* baud rate not supported by hardware */ #define SerErr_BufErr 4 /* Failed to allocate new read buffer */ #define SerErr_InvParam 5 #define SerErr_LineErr 6 #define SerErr_ParityErr 9 #define SerErr_TimerErr 11 /*(See the serial/OpenDevice autodoc)*/ #define SerErr_BufOverflow 12 #define SerErr_NoDSR 13 #define SerErr_DetectedBreak 15 #ifdef DEVICES_SERIAL_H_OBSOLETE #define SerErr_InvBaud 3 /* unused */ #define SerErr_NotOpen 7 /* unused */ #define SerErr_PortReset 8 /* unused */ #define SerErr_InitErr 10 /* unused */ #define SerErr_NoCTS 14 /* unused */ /* These defines refer to the HIGH ORDER byte of io_Status. They have been replaced by the new, corrected ones above */ #define IOSTB_XOFFREAD 4 /* iost_hob receive currently xOFF'ed bit */ #define IOSTF_XOFFREAD (1<<4) /* " receive currently xOFF'ed mask */ #define IOSTB_XOFFWRITE 3 /* " transmit currently xOFF'ed bit */ #define IOSTF_XOFFWRITE (1<<3) /* " transmit currently xOFF'ed mask */ #define IOSTB_READBREAK 2 /* " break was latest input bit */ #define IOSTF_READBREAK (1<<2) /* " break was latest input mask */ #define IOSTB_WROTEBREAK 1 /* " break was latest output bit */ #define IOSTF_WROTEBREAK (1<<1) /* " break was latest output mask */ #define IOSTB_OVERRUN 0 /* " status word RBF overrun bit */ #define IOSTF_OVERRUN (1<<0) /* " status word RBF overrun mask */ #define IOSERB_BUFRREAD 7 /* io_Flags from read buffer bit */ #define IOSERF_BUFRREAD (1<<7) /* " from read buffer mask */ #define IOSERB_QUEUED 6 /* " rqst-queued bit */ #define IOSERF_QUEUED (1<<6) /* " rqst-queued mask */ #define IOSERB_ABORT 5 /* " rqst-aborted bit */ #define IOSERF_ABORT (1<<5) /* " rqst-aborted mask */ #define IOSERB_ACTIVE 4 /* " rqst-qued-or-current bit */ #define IOSERF_ACTIVE (1<<4) /* " rqst-qued-or-current mask */ #endif #define SERIALNAME "serial.device" #endif /* DEVICES_SERIAL_H */