Re: [patch] DTR/DSR hardware handshake support for 2.0/2.2/2.4

From: Frank da Cruz (
Date: Wed Aug 02 2000 - 10:47:28 EST

> DTR/DSR is a very often used handshake for serial printers, at least
> in the POS field. A lot of supermarket cash registers are in fact PCs
> with special hardware, which for some unclear reason typically knows
> only about DTR/DSR handshaking (even if it is from other vendors:
> SNI or EPSON does not make a difference: only DTR/DSR).
> Sending people to a thousand stores around the country putting special
> cables between printers and computers is simply not acceptable (if you
> know POS service people, you know that about half of the cables would
> be put on the wrong serial ports).
> This patch is very small and you should be able to easily see any side
> effects it might have.
Yes, I'll second this. I get requests for DTR/DSR (and DTR/CD) hardware
flow control in Kermit all the time for this kind of reason. The equipment
involved is not "legacy" (my least favorite word -- in common parlance it
means "not Microsoft") at all, just weird.

There are standard APIs in SVR4 for all sorts of hardware flow control,
specified in <termiox.h> (or <sys/termiox.h>):

struct termiox * arg;

The termiox struct contains a member:

unsigned short x_hflag; /* hardware flow control modes */

Which can be set to various combinations of:

#define RTSXOFF 0000001 /* Enable RTS hwfc on input */
#define CTSXON 0000002 /* Enable CTS hwfc on output */
#define DTRXOFF 0000004 /* Enable DTR hwfc on input */
#define CDXON 0000010 /* Enable CD hwfc on output */
#define ISXOFF 0000020 /* Enable RTS hwfc on input */

to achieve unidirectional or bidirectional hardware flow control. The last
one is used only for synchronous operation (via clock pulse signals).

ioctl() commands are:

TCGETX - get termiox params into arg.
TCSETX - set termiox params from arg immediately.
TCSETXW - ditto, but waits til after output queue is finished.
TCSETXF - like TCSETXW but also discards all chars queued for input.

I'll be glad to supply greater detail from the SVID if needed.

- Frank

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
Please read the FAQ at

This archive was generated by hypermail 2b29 : Mon Aug 07 2000 - 21:00:08 EST