This is the mail archive of the
ecos-discuss@sourceware.org
mailing list for the eCos project.
Canonical tty (termios) and nonblocking
- From: Rutger Hofman <rutger at cs dot vu dot nl>
- To: ecos-discuss at ecos dot sourceware dot org
- Date: Thu, 19 Jul 2007 00:33:43 +0200
- Subject: [ECOS] Canonical tty (termios) and nonblocking
Good evening list,
I run into the following problem. I have a device that is attached to a
serial port (a BlueTooth thingy).
This port is opened in my application as a file, /dev/ser0 or /dev/tty0
or /dev/termios0 or /dev/... I want to control the line speed for the
serial connection from the application, so I want to use tcsetattr or
cfseti/ospeed. This interface only exists for termios devices
("/dev/termios0"), as defined in
packages/io/serial/current/src/common/termiostty.c
Now, this BlueTooth thingy talks to some other device, not a human. So
the terminal should NOT be in canonical mode: no special handling of
ERASE and KILL (though these can be disabled separately), and of course
no buffering -- which /cannot/ be disabled separately. However, if I
look at the code (above file, line 656-675 in CVS from a week ago), if
the device is not canonical, receive is implemented as *nonblocking*.
This is emphatically not what I want, and I think blockingness should be
specified in another way, by using O_NONBLOCK or O_NDELAY as parameters
for open(2).
Any ideas where my reasoning went astray, or how this can be fixed?
Greetings,
Rutger
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss