olson@modular.UUCP (Jon Olson) (04/08/88)
We have recently developed a multiplexor board which has eight RS232 ports. This board which allows a single RS232 port on a SUN workstation to support seven ports (the eighth port on the multiplexor board connects to the RS232 port on the SUN). A MUX daemon on the SUN provides the interface software between the single RS232 port and seven pseudo-terminal (pty) ports. Although the interface was simple to develop and debug there are a few shortcomings with the `tty' and `pty' drivers which would be useful in this application (and many other applications). 1) I have found that SUNOS 3.4 does not support hardware (CTS/RTS) handshaking on RS232 lines. Although the dedicated microprocessor on the MUX board can handle 19,200 baud input without flow-control, the standard Unix TTY driver (either the old or new discipline) cannot. What I need is for Unix to generate a ~RTS whenever the input buffers are in danger of overflowing. Since the MUX must pass any binary information through the TTY port, ^S/^Q handshaking would require messy encoding of the data stream. 2) The standard TTY driver does not have sufficient buffering to accept large data packets. I have limited the size of packets sent to the SUN to 64 bytes to overcome this limitation. It would be useful to have an `ioctl' which configures a large buffer for a TTY port. 3) I tried the `bk' driver but it doesn't work with the `select' system call. When given a file descriptor of a tty using the `bk' line discipline, `select' always returns immediately even if there is no data to be input. 4) The `pty' driver has a TIOCPKT mode which gives one of the following control flags. TIOCPKT_FLUSHREAD TIOCPKT_FLUSHWRITE TIOCPKT_STOP TIOCPKT_START TIOCPKT_DOSTOP Ultrix (DEC's Unix) has an extra (very useful) control flag which SUN leaves out, TIOCPKT_IOCTL, which indicates that the slave process has executed an ioctl operation. This allows the master to manipulate the device to emulate the ioctl operation that the slave just performed. Any comments on hardware handshaking or high-speed input of data over RS232 lines would be appreciated. -- Jon Olson, Modular Mining Systems USENET: {ihnp4,allegra,cmcl2,hao!noao}!arizona!modular!olson INTERNET: modular!olson@arizona.edu