Resource temporarily unavailable
lawson_whitney at juno.com
lawson_whitney at juno.com
Wed Dec 5 17:36:41 CST 2001
On Wed, 5 Dec 2001, Rein Klazes wrote:
> On Wed, 5 Dec 2001 11:32:13 -0500 (EST), in
> Hmm, it is this snippet that does the warning.
>
> if (lpdcb->fDtrControl == DTR_CONTROL_ENABLE)
> {
> WARN("DSR/DTR flow control not supported\n");
> }
>
> But in the preceding COMM_BuildOldCommDCB() call the default case is
> selected:
>
> } else {
> lpdcb->fInX = FALSE;
> lpdcb->fOutX = FALSE;
> lpdcb->fOutxCtsFlow = FALSE;
> lpdcb->fOutxDsrFlow = FALSE;
> lpdcb->fDtrControl = DTR_CONTROL_ENABLE;
>
> I don't have the time right now to fully look at this, but I feel that
> the first DTR_CONTROL_ENABLE should really be DTR_CONTROL_HANDSHAKE.
> The latter specifies flowcontrol (flow is stopped if buffers get
> full), the former just specifies to set the DTR line high.
>
> Something similar a few lines above in the code where:
>
> lpdcb->fRtsControl == RTS_CONTROL_ENABLE
> )
> {
> port.c_cflag |= CRTSCTS;
> TRACE("CRTSCTS\n");
> }
>
> perhaps the RTS_CONTROL_ENABLE should be RTS_CONTROL_HANDSHAKE?
>
> This would explain why in this case crtcts flowcontrol gets enabled on
> a 3 wire serial link.
>
> Rein.
>
I think if winbase.h is right, you are right and the code has been wrong
for a long time. The same error is all over the code. GetCommState
sets RTS_CONTROL_ENABLE if the termios from tcgetattr() has CRTSCTS.
Probably that should be RTS_CONTROL_HANDSHAKE? And where does
RTS_CONTROL_ENABLE come from? I guess it should be on by default?
Lawson
More information about the wine-users
mailing list