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