serial 00/04: some patches for serial ports
Wolfgang Walter
wine at stwm.de
Fri Dec 12 11:52:04 CST 2008
Hello
We have a (binary) application we wanted to use with wine. This application
uses serial ports to access different peripherals (often using
vendor-supplied dlls).
Most devices did not work or did not work es expected.
The following 4 patches fixed most these problems:
1. fix TRACE output: IXON and IXON are swapped
2. serial_flush must use tcdrain() and not tcflush()
3. set_XOff(), set_XOn()
These are called by EscapeCommFunction(SETXOFF) and
EscapeCommFunction(SETXON).
These function should not set the attributes of the terminal (IXOFF or IXON),
they should instead simulate that XON/XOFF has been received.
The POSIX equivalents are tcflow(fd, TCOOFF) and tcflow(fd, TCOON)
4. Serial, Events, asynchron read/write
4.1 WaitCommEvent() does not really work asynchronously
4.2 wait_for_event() should detect when serial fd is not valid any more
4.4. make events work better with serial devices not supporting TIOCGICOUNT
Most drivers of usb2serial adapters do not support TIOCGICOUNT nor do pseudo
terminals.
5. NOT fixed
5.1 RX_RXCHAR should only sent an event if there has been received a new
character:
no simple fix if TIOCGICOUNT is not available.
A possible fix could be: when a EV_RXCHAR is to be been signaled record
number of bytes in the input queue. Function changing the input queue (i.e.
NtReadFile) decrease this counter. Only if the counter is zero a EV_RXCHAR is
sent.
5.2 EV_TXEMPTY should only send event whem write queue gets empty.
no simple fix if TIOCGICOUNT is not available.
A fix similar to the above would be possible.
5.3 Semantic of timeout values for serial ports misses a case
I have a fix for that as the application uses it. But I need to change
dlls/ntdll/file.c
Regards,
--
Wolfgang Walter
Studentenwerk München
Anstalt des öffentlichen Rechts
Leiter EDV
Leopoldstraße 15
80802 München
More information about the wine-patches
mailing list