Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 May 1999 10:59:39 -0400 (EDT)
From:      Chuck Robey <chuckr@picnic.mat.net>
To:        Max Gotlib <max@cca.usart.ru>
Cc:        hackers@FreeBSD.ORG
Subject:   Re: Serial ports programming
Message-ID:  <Pine.BSF.4.10.9905271054580.375-100000@picnic.mat.net>
In-Reply-To: <Pine.LNX.3.95.990527114907.31382B-100000@linux.cca.usart.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 27 May 1999, Max Gotlib wrote:

> Hi!
> 
> Some days ago I've faced with the following problem:
> I need some kind of action (while coding user space
> program actively handling the serial port) to get
> sure all the bytes I've wrote to it are _transmitted_.
> I know about "ioctl(fd, TIOCDRAIN)", but this ioctl
> is accomplished with tty buffers draining to (probably)
> FIFO buffer of the serial port. Is there any (portable
> preferably) way to get an acknolege or to block until
> FIFO buffer is cleared? The situation is that I can't
> simply write additional 64 bytes (I did not see any
> serial ports with FIFO larger than 64 bytes) and
> drain the tty buffers - I have to catch the exact
> moment ...

The rate that characters drain from a UART is determined by the
currently active bit rate AND the absence of any change in the DTR and
CTS lines.  You can sleep the time involved in transmitting the
characters.  You can set up to be notified of any changes in the state
of the DTR and CTS lines, from the driver, and do that portably too
(signals).  As long as you don't get a signal to indicate the change,
and you wait the time period it takes to drain the fifo, then you can
rely on the fact that the UART is drained.

This is no indication that the characters actually got to the other end,
of course, but they'll have left your UART.

> 
> Thanks in advance,
> Max.
> 
> 
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-hackers" in the body of the message
> 

----------------------------+-----------------------------------------------
Chuck Robey                 | Interests include any kind of voice or data 
chuckr@picnic.mat.net       | communications topic, C programming, and Unix.
213 Lakeside Drive Apt T-1  |
Greenbelt, MD 20770         | I run picnic (FreeBSD-current)
(301) 220-2114              | and jaunt (Solaris7).
----------------------------+-----------------------------------------------






To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.10.9905271054580.375-100000>