windows-nt/Source/XPSP1/NT/base/mvdm/wow16/drivers/comm/comdev.h

244 lines
14 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*************************************************************************
**
** Miscelaneous definitions.
*/
typedef unsigned short ushort;
typedef unsigned char uchar;
#define NULL 0
#define FALSE 0
#define TRUE 1
#define LPTx 0x80 /* Mask to indicate cid is for LPT device */ /*081985*/
#define LPTxMask 0x7F /* Mask to get cid for LPT device */ /*081985*/
#define PIOMAX 3 /* Max number of LPTx devices in high level */ /*081985*/
#define CDEVMAX 10 /* Max number of COMx devices in high level */
#define DEVMAX 13 /* Max number of devices in high level */ /*081985*/
/*************************************************************************
**
** device control block.
** This block of information defines the functional parameters of the
** communications software and hardware.
**
** Fields in the DCB are defined as follows:
**
** Id - Comm device ID, set by the device driver.
** BaudRate - Baud rate at which operating.
** ByteSize - Number of bits per transmitted/received byte. (4-8)
** Received data is also masked off to this size.
** Parity - Transmitt/Receive Parity. (0,1,2,3,4) = (None, Odd,
** Even, Mark, Space)
** StopBits - Number of stop bits. (0,1,2) = (1, 1.5, 2)
** RlsTimeout - Amount of time, in milleseconds, to wait for RLSD to
** become high. RLSD, Receive Line Signal Detect is also
** known as CD, Carrier Detect. RLSD flow control can be
** achieved by specifying infinite timeout.
** CtsTimeout - Amount of time, in milleseconds, to wait for CTS,
** Clear To Send, to become high. CTS flow control can
** be achieved by specifying infinite timeout.
** DsrTimeout - Amount of time, in milleseconds, to wait for DSR,
** Data Set Ready, to become high. DSR flow control can
** be acheived by specifying infinite timeout.
** fBinary - Binary Mode flag. In non-binary mode, EofChar is
** recognized and remembered as end of data.
** fRtsDisable - Disable RTS flag. If set, Request To Send is NOT
** used, and remains low. Normally, RTS is asserted when
** the device is openned, and dropped when closed.
** fParity - Enable Parity Checking. Parity errors are not
** reported when 0.
** fOutxCtsFlow - enable output xon/xoff(hardware) using cts
** fOutxDsrFlow - enable output xon/xoff(hardware) using dsr
** fOutX - Indicates that X-ON/X-OFF flow control is to be used
** during transmission. The transmitter will halt if
** an X-OFF character is received, and will start again
** when an X-ON character is received.
** fInX - Indicates that X-ON/X-OFF flow control is to be used
** during reception. An X-OFF character will be
** transmitted when the receive queue comes within 10
** characters of being full, after which an X-ON will be
** transmitted when the queue comes with 10 characters
** of being empty.
** fPeChar - Indicates that characters received with parity errors
** are to be replaced with the character specified in
** PeChar, below.
** fNull - Indicates that received NULL characters are to be
** discarded.
** fChEvt - Indicates that the reception of EvtChar is to be
** flagged as an event by cevt.
** fDtrFlow - Indicates that the DTR signal is to be used for
** receive flow control. (cextfcn can be used to set and
** clear DTR, overriding this definition).
** fRtsFlow - Indicates that the RTS signal is to be used for
** receive flow control. (cextfcn can be used to set and
** clear RTS, overriding this definition).
** XonChar - X-ON character for both transmit and receive
** XoffChar - X-OFF character for both transmit and receive
** XonLim - When the number of characters in the receive queue
** drops below this value, then an X-ON character is
** sent, if enabled, and DTR is set, if enabled.
** XoffLim - When the number of characters in the receive queue
** exceeds this value, then an X-OFF character is sent,
** if enabled, and DTR is dropped, if enabled.
** PeChar - Parity Error replacement character.
** EvtChar - Character which triggers an event flag.
** EofChar - Character which specifies end of input.
** TxDelay - Specifies the minimum amount of time that must pass
** between transmission of characters.
**
** Timeouts are in milleseconds. 0 means ignore the signal. 0xffff means
** infinite timeout.
**
*************************************************************************/
typedef struct {
char Id; /* Internal Device ID */
ushort BaudRate; /* Baudrate at which runing */
char ByteSize; /* Number of bits/byte, 4-8 */
char Parity; /* 0,1,2,3,4 = None,Odd,Even,Mark,Sp*/
char StopBits; /* 0,1,2 = 1, 1.5, 2 */
ushort RlsTimeout; /* Timeout for RLSD to be set */
ushort CtsTimeout; /* Timeout for CTS to be set */
ushort DsrTimeout; /* Timeout for DSR to be set */
uchar fBinary: 1; /* CTRL-Z as EOF flag */
uchar fRtsDisable:1; /* Suppress RTS */
uchar fParity: 1; /* Enable parity check */
uchar fOutxCtsFlow: 1; /* Enable output xon/xoff with cts */
uchar fOutxDsrFlow: 1; /* Enable output xon/xoff with dsr */
uchar fDummy: 3;
uchar fOutX: 1; /* Enable output X-ON/X-OFF */
uchar fInX: 1; /* Enable input X-ON/X-OFF */
uchar fPeChar: 1; /* Enable Parity Err Replacement */
uchar fNull: 1; /* Enable Null stripping */
uchar fChEvt: 1; /* Enable Rx character event. */
uchar fDtrflow: 1; /* Enable DTR flow control */
uchar fRtsflow: 1; /* Enable RTS flow control */
uchar fDummy2: 1;
char XonChar; /* Tx and Rx X-ON character */
char XoffChar; /* Tx and Rx X-OFF character */
ushort XonLim; /* Transmit X-ON threshold */
ushort XoffLim; /* Transmit X-OFF threshold */
char PeChar; /* Parity error replacement char */
char EofChar; /* End of Input character */
char EvtChar; /* Recieved Event character */
ushort TxDelay; /* Amount of time between chars */
} DCB;
/*************************************************************************
**
** COMSTAT
** Status record returned by GetCommError
**
*************************************************************************/
typedef struct {
uchar fCtsHold: 1; /* Transmit is on CTS hold */
uchar fDsrHold: 1; /* Transmit is on DSR hold */
uchar fRlsdHold: 1; /* Transmit is on RLSD hold */
uchar fXoffHold: 1; /* Transmit is on X-Off hold */
uchar fXoffSent: 1; /* Recieve in X-Off or DTR hold */
uchar fEof: 1; /* End of file character found */
uchar fTxim: 1; /* Character being transmitted */
uchar fPerr:1; /* Printer error */ /*081985*/
ushort cbInQue; /* count of characters in Rx Que*/
ushort cbOutQue; /* count of characters in Tx Que*/
} COMSTAT;
/*************************************************************************
**
** DCB field definitions.
**
*************************************************************************/
#define NOPARITY 0
#define ODDPARITY 1
#define EVENPARITY 2
#define MARKPARITY 3
#define SPACEPARITY 4
#define ONESTOPBIT 0
#define ONE5STOPBITS 1
#define TWOSTOPBITS 2
#define IGNORE 0 /* Ignore signal */
#define INFINITE 0xffff /* Infinite timeout */
/*************************************************************************
**
** Comm Device Driver Error Bits.
**
*************************************************************************/
#define CE_RXOVER 0x0001 /* Receive Queue overflow */
#define CE_OVERRUN 0x0002 /* Receive Overrun Error */
#define CE_RXPARITY 0x0004 /* Receive Parity Error */
#define CE_FRAME 0x0008 /* Receive Framing error */
#define CE_CTSTO 0x0020 /* CTS Timeout */
#define CE_DSRTO 0x0040 /* DSR Timeout */
#define CE_RLSDTO 0x0080 /* RLSD Timeout */
#define CE_PTO 0x0100 /* LPTx Timeout */ /*081985*/
#define CE_IOE 0x0200 /* LPTx I/O Error */ /*081985*/
#define CE_DNS 0x0400 /* LPTx Device not selected */ /*081985*/
#define CE_OOP 0x0800 /* LPTx Out-Of-Paper */ /*081985*/
#define CE_MODE 0x8000 /* Requested mode unsupported */
/*************************************************************************
**
** Initialization Error Codes
**
*************************************************************************/
#define IE_BADID -1 /* Invalid or unsupported id */
#define IE_OPEN -2 /* Device Already Open */
#define IE_NOPEN -3 /* Device Not Open */
#define IE_MEMORY -4 /* Unable to allocate queues */
#define IE_DEFAULT -5 /* Error in default parameters */
#define IE_HARDWARE -10 /* Hardware Not Present */
#define IE_BYTESIZE -11 /* Illegal Byte Size */
#define IE_BAUDRATE -12 /* Unsupported BaudRate */
/*************************************************************************
**
** Event mask definitions. Used by SetCommEventMask and GetCommEventMask
**
** RXCHAR - Set when any character is received and placed in the input
** queue.
** RXFLAG - Set when a particular character, as defined in the dcb, is
** received and placed in the input queue.
** TXEMPTY - Set when the last character in the transmit queue is
** transmitted.
** CTS - Set when the CTS signal changes state.
** DSR - Set when the DSR signal changes state.
** RLSD - Set when the RLSD signal changes state.
** BREAK - Set when a break is detected on input.
** ERR - Set when a line status error occurs.
**
*************************************************************************/
#define EV_RXCHAR 0x0001 /* Any Character received */
#define EV_RXFLAG 0x0002 /* Received certain character */
#define EV_TXEMPTY 0x0004 /* Transmitt Queue Empty */
#define EV_CTS 0x0008 /* CTS changed state */
#define EV_DSR 0x0010 /* DSR changed state */
#define EV_RLSD 0x0020 /* RLSD changed state */
#define EV_BREAK 0x0040 /* BREAK received */
#define EV_ERR 0x0080 /* Line Status Error Occurred */
#define EV_RING 0x0100 /* Ring signal detected */
#define EV_PERR 0x0200 /* LPTx error occured */ /*081985*/
/*************************************************************************
**
** Extended Functions
**
** SETXOFF - Causes transmit to behave as if an X-OFF character had
** been received. Valid only if transmit X-ON/X-OFF specified
** in the dcb.
** SETXON - Causes transmit to behave as if an X-ON character had
** been received. Valid only if transmit X-ON/X-OFF specified
** in the dcb.
*************************************************************************/
#define SETXOFF 1 /* Set X-Off for output control */
#define SETXON 2 /* Set X-ON for output control */
#define SETRTS 3 /* Set RTS high */
#define CLRRTS 4 /* Set RTS low */
#define SETDTR 5 /* Set DTR high */
#define CLRDTR 6 /* Set DTR low */
#define RESETDEV 7 /* Reset device if possible */ /*081985*/