From e54305ffde1f5e8d02687ce9ddae55f8128de32d Mon Sep 17 00:00:00 2001 From: Denis Shienkov Date: Thu, 27 Nov 2014 22:21:22 +0000 Subject: 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 --- src/serialport/qserialport_unix.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) 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 @@ -928,6 +928,26 @@ QSerialPort::SerialPortError QSerialPortPrivate::decodeSystemError() const case ENXIO: 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; -- cgit v1.2.1