summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/serialport/qserialport_unix.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/serialport/qserialport_unix.cpp b/src/serialport/qserialport_unix.cpp
index d555805c..e80c0e89 100644
--- a/src/serialport/qserialport_unix.cpp
+++ b/src/serialport/qserialport_unix.cpp
@@ -504,9 +504,6 @@ QSerialPortPrivate::setCustomBaudRate(qint32 baudRate, QSerialPort::Directions d
if (::ioctl(descriptor, TIOCGSERIAL, &currentSerialInfo) == -1)
return decodeSystemError();
- if (currentSerialInfo.baud_base % baudRate != 0)
- return QSerialPort::UnsupportedOperationError;
-
currentSerialInfo.flags &= ~ASYNC_SPD_MASK;
currentSerialInfo.flags |= (ASYNC_SPD_CUST /* | ASYNC_LOW_LATENCY*/);
currentSerialInfo.custom_divisor = currentSerialInfo.baud_base / baudRate;
@@ -514,6 +511,13 @@ QSerialPortPrivate::setCustomBaudRate(qint32 baudRate, QSerialPort::Directions d
if (currentSerialInfo.custom_divisor == 0)
return QSerialPort::UnsupportedOperationError;
+ if (currentSerialInfo.custom_divisor * baudRate != currentSerialInfo.baud_base) {
+ qWarning("Baud rate of serial port %s is set to %d instead of %d: divisor %f unsupported",
+ qPrintable(systemLocation),
+ currentSerialInfo.baud_base / currentSerialInfo.custom_divisor,
+ baudRate, (float)currentSerialInfo.baud_base / baudRate);
+ }
+
if (::ioctl(descriptor, TIOCSSERIAL, &currentSerialInfo) == -1)
return decodeSystemError();