Subject: Re: Help me understand RTS/CTS
From: Henry Spencer <email@example.com>
Date: Jul 30 1996
In article <firstname.lastname@example.org> email@example.com (Doug Tarico) writes:
>My understanding of EIA-232 is that rts/cts flow control is designed to
>control data flow in one direction, from DTE to DCE. Basically, DTE
>raises RTS when it wants to transmit, waits for CTS from the modem, then
The description is pretty much correct, but this wasn't for flow control
at all. This was for half-duplex modems, which could receive or transmit
*but not both at the same time*. They had to be told when to transmit and
when to listen. When the DTE raised RTS, that meant "switch to transmit
mode"; when the modem raised CTS, that meant "okay, I'm in transmit mode".
There was no flow control, express or implied :-). The reason to have
both a request and a response was that it could take a noticeable amount
of time for the modem to start transmitting and for the other modem(s) to
lock onto its carrier, and only the modem knew just how long this was
likely to be. Arranging that only one modem was transmitting at a time
was the job of higher-level protocols on the DTEs, not the modems; the
modems just obeyed orders.
Half-duplex modems are mostly obsolete, and the few which are still more
or less current technology switch back and forth automatically rather than
having to be told. The RTS and CTS lines have been misused so frequently
as flow-control lines -- a function which originally simply was not
provided at all -- that this is now recognized as an official alternate
use. The alternate meanings for both signals are "okay to send me data".
Since RTS goes from DTE to modem, it regulates incoming data; since CTS
goes from modem to DTE, it regulates outgoing data.
...the truly fundamental discoveries seldom | Henry Spencer
occur where we have decided to look. --B. Forman | firstname.lastname@example.org