diff options
author | Denis Shienkov <denis.shienkov@gmail.com> | 2014-11-27 22:21:22 +0000 |
---|---|---|
committer | Denis Shienkov <denis.shienkov@gmail.com> | 2014-11-28 09:45:36 +0100 |
commit | e54305ffde1f5e8d02687ce9ddae55f8128de32d (patch) | |
tree | 2ad946a32907ceb8b9a3290eea24015f53e3a9f6 | |
parent | fbf3a8f5d50b5ae2dc90ac0af840a36530df3395 (diff) | |
download | qtserialport-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.cpp | 20 |
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; |