Support for nonstandard baud rate in SetCommState.
This commit is contained in:
parent
be49563060
commit
533e7eeaf4
|
@ -885,6 +885,7 @@ AC_CHECK_HEADERS(\
|
||||||
linux/cdrom.h \
|
linux/cdrom.h \
|
||||||
linux/input.h \
|
linux/input.h \
|
||||||
linux/joystick.h \
|
linux/joystick.h \
|
||||||
|
linux/serial.h \
|
||||||
linux/ucdrom.h \
|
linux/ucdrom.h \
|
||||||
net/if.h \
|
net/if.h \
|
||||||
netdb.h \
|
netdb.h \
|
||||||
|
|
|
@ -68,6 +68,10 @@
|
||||||
|
|
||||||
#include "debugtools.h"
|
#include "debugtools.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_LINUX_SERIAL_H
|
||||||
|
#include <linux/serial.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
DEFAULT_DEBUG_CHANNEL(comm);
|
DEFAULT_DEBUG_CHANNEL(comm);
|
||||||
|
|
||||||
#if !defined(TIOCINQ) && defined(FIONREAD)
|
#if !defined(TIOCINQ) && defined(FIONREAD)
|
||||||
|
@ -911,6 +915,29 @@ BOOL WINAPI SetCommState(
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
|
#if defined (HAVE_LINUX_SERIAL_H) && defined (TIOCSSERIAL)
|
||||||
|
{ struct serial_struct nuts;
|
||||||
|
int arby;
|
||||||
|
ioctl(fd, TIOCGSERIAL, &nuts);
|
||||||
|
nuts.custom_divisor = nuts.baud_base / lpdcb->BaudRate;
|
||||||
|
if (!(nuts.custom_divisor)) nuts.custom_divisor = 1;
|
||||||
|
arby = nuts.baud_base / nuts.custom_divisor;
|
||||||
|
nuts.flags &= ~ASYNC_SPD_MASK;
|
||||||
|
nuts.flags |= ASYNC_SPD_CUST;
|
||||||
|
WARN("You (or a program acting at your behest) have specified\n"
|
||||||
|
"a non-standard baud rate %ld. Wine will set the rate to %d,\n"
|
||||||
|
"which is as close as we can get by our present understanding of your\n"
|
||||||
|
"hardware. I hope you know what you are doing. Any disruption Wine\n"
|
||||||
|
"has caused to your linux system can be undone with setserial \n"
|
||||||
|
"(see man setserial). If you have incapacitated a Hayes type modem,\n"
|
||||||
|
"reset it and it will probably recover.\n", lpdcb->BaudRate, arby);
|
||||||
|
ioctl(fd, TIOCSSERIAL, &nuts);
|
||||||
|
port.c_cflag |= B38400;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif /* Don't have linux/serial.h or lack TIOCSSERIAL */
|
||||||
|
|
||||||
|
|
||||||
COMM_SetCommError(handle,IE_BAUDRATE);
|
COMM_SetCommError(handle,IE_BAUDRATE);
|
||||||
close( fd );
|
close( fd );
|
||||||
ERR("baudrate %ld\n",lpdcb->BaudRate);
|
ERR("baudrate %ld\n",lpdcb->BaudRate);
|
||||||
|
|
|
@ -238,6 +238,9 @@
|
||||||
/* Define if you have the <linux/joystick.h> header file. */
|
/* Define if you have the <linux/joystick.h> header file. */
|
||||||
#undef HAVE_LINUX_JOYSTICK_H
|
#undef HAVE_LINUX_JOYSTICK_H
|
||||||
|
|
||||||
|
/* Define if you have the <linux/serial.h> header file. */
|
||||||
|
#undef HAVE_LINUX_SERIAL_H
|
||||||
|
|
||||||
/* Define if you have the <linux/ucdrom.h> header file. */
|
/* Define if you have the <linux/ucdrom.h> header file. */
|
||||||
#undef HAVE_LINUX_UCDROM_H
|
#undef HAVE_LINUX_UCDROM_H
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue