summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2014-11-27 22:21:22 +0000
committerDenis Shienkov <denis.shienkov@gmail.com>2014-11-28 09:45:36 +0100
commite54305ffde1f5e8d02687ce9ddae55f8128de32d (patch)
tree2ad946a32907ceb8b9a3290eea24015f53e3a9f6
parentfbf3a8f5d50b5ae2dc90ac0af840a36530df3395 (diff)
downloadqtserialport-e54305ffde1f5e8d02687ce9ddae55f8128de32d.tar.gz
Handle EINVAL, ENOIOCTLCMD, ENOTTY and EPERM errors
According to TTY_IOCTL(4), the ioctl on tty device can return these errors, which we need to interpret to QSP::SerialPortError. For example, a virtual devices which are created by SOCAT, returns the EINVAL error when the ioctl does query of line states. Change-Id: Iece3b773fdc8fe4b97951ccf7cff9d2670f24694 Reviewed-by: Sergey Belyashov <Sergey.Belyashov@gmail.com>
-rw-r--r--src/serialport/qserialport_unix.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/serialport/qserialport_unix.cpp b/src/serialport/qserialport_unix.cpp
index 599f151..67e8caf 100644
--- a/src/serialport/qserialport_unix.cpp
+++ b/src/serialport/qserialport_unix.cpp
@@ -929,6 +929,26 @@ QSerialPort::SerialPortError QSerialPortPrivate::decodeSystemError() const
error = QSerialPort::ResourceError;
break;
#endif
+#ifdef EINVAL
+ case EINVAL:
+ error = QSerialPort::UnsupportedOperationError;
+ break;
+#endif
+#ifdef ENOIOCTLCMD
+ case ENOIOCTLCMD:
+ error = QSerialPort::UnsupportedOperationError;
+ break;
+#endif
+#ifdef ENOTTY
+ case ENOTTY:
+ error = QSerialPort::ResourceError;
+ break;
+#endif
+#ifdef EPERM
+ case EPERM:
+ error = QSerialPort::PermissionError;
+ break;
+#endif
default:
error = QSerialPort::UnknownError;
break;