RTS/CTS

lawson_whitney at juno.com lawson_whitney at juno.com
Mon Nov 5 18:34:03 CST 2001


Good day!

A couple of wine-users have said Wine doesn't work RTS/CTS right any
more, so I did a +comm,+file trace of juno, and was rewarded with this:

trace:comm:SetCommState handle 224, ptr 0x403f0578
trace:comm:SetCommState bytesize 8 baudrate 115200 fParity 0 Parity 0 stopbits 1
trace:comm:SetCommState ~IXON ~IXOFF
trace:comm:SetCommState CRTSCTS
trace:comm:SetCommState ~CRTSCTS

Does something look wrong about that, or am I just seeing it crosseyed?

In GetCommState we have this:


	if (port.c_cflag & CRTSCTS) {
		lpdcb->fDtrControl = DTR_CONTROL_ENABLE;
		lpdcb->fRtsControl = RTS_CONTROL_ENABLE;
		lpdcb->fOutxCtsFlow = 1;
		lpdcb->fOutxDsrFlow = 1;
	} else

And in SetCommState this:

	if (	lpdcb->fOutxCtsFlow 			||
		lpdcb->fRtsControl == RTS_CONTROL_ENABLE
	)
	  {
	    port.c_cflag |= CRTSCTS;
	    TRACE("CRTSCTS\n");
	  }
	
	if (lpdcb->fDtrControl == DTR_CONTROL_ENABLE)
	  {
	    port.c_cflag &= ~CRTSCTS;
	    TRACE("~CRTSCTS\n");
	  }

So I guess if you want to turn off CRTSCTS,

    GetCommState(handle, lpdcb);
    SetCommState(handle, lpdcb);

would about do it.  I don't know what fDtrControl is 'spoze to do, but
shutting off flow control entirely seems a bit extreme.  Juno apparently
asks for it by name, CRTSCTS was not on when it did GetCommState, but it
asked for flow control, too.

Lawson

panic: detected rogue system administrator!!
---cut here





More information about the wine-devel mailing list