summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2015-09-16 15:52:02 +0300
committerDenis Shienkov <denis.shienkov@gmail.com>2015-09-16 17:16:25 +0000
commit55f39fe09aaf6208fd27c3c6060d4ab0171f77b1 (patch)
tree1ac623cf164e3c9f0697299c6bcf245c254c5f31
parent7fbc7cefcada03aa455bda305734663cf2b6a117 (diff)
downloadqtserialport-55f39fe09aaf6208fd27c3c6060d4ab0171f77b1.tar.gz
Allow to enumerate the tty0tty devices on Linux
Now QSPI return a list of virtual serial ports which are created by the tty0tty driver: http://sourceforge.net/p/tty0tty/wiki/Home/ Change-Id: I7389b5ac656d54056baffd0922596feff9fe3788 Reviewed-by: Sergey Belyashov <Sergey.Belyashov@gmail.com> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
-rw-r--r--src/serialport/qserialportinfo_unix.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/serialport/qserialportinfo_unix.cpp b/src/serialport/qserialportinfo_unix.cpp
index f3f5a27..f52516f 100644
--- a/src/serialport/qserialportinfo_unix.cpp
+++ b/src/serialport/qserialportinfo_unix.cpp
@@ -75,7 +75,8 @@ static QStringList filteredDeviceFilePaths()
<< QStringLiteral("ttymxc*") // Motorola IMX serial ports (i.e. Freescale i.MX).
<< QStringLiteral("ttyAMA*") // AMBA serial device for embedded platform on ARM (i.e. Raspberry Pi).
<< QStringLiteral("rfcomm*") // Bluetooth serial device.
- << QStringLiteral("ircomm*"); // IrDA serial device.
+ << QStringLiteral("ircomm*") // IrDA serial device.
+ << QStringLiteral("tnt*"); // Virtual tty0tty serial device.
#elif defined(Q_OS_FREEBSD)
<< QStringLiteral("cu*");
#elif defined(Q_OS_QNX)
@@ -436,6 +437,15 @@ static bool isRfcommDevice(const QString &portName)
return true;
}
+// provided by the tty0tty driver
+static bool isVirtualNullModemDevice(const QString &portName)
+{
+ if (!portName.startsWith(QLatin1String("tnt")))
+ return false;
+
+ return true;
+}
+
static QString ueventProperty(const QDir &targetDir, const QByteArray &pattern)
{
QFile f(QFileInfo(targetDir, QStringLiteral("uevent")).absoluteFilePath());
@@ -530,8 +540,10 @@ QList<QSerialPortInfo> availablePortsBySysfs(bool &ok)
const QString driverName = deviceDriver(targetDir);
if (driverName.isEmpty()) {
- if (!isRfcommDevice(priv.portName))
+ if (!isRfcommDevice(priv.portName)
+ && !isVirtualNullModemDevice(priv.portName)) {
continue;
+ }
}
priv.device = QSerialPortInfoPrivate::portNameToSystemLocation(priv.portName);
@@ -700,8 +712,10 @@ QList<QSerialPortInfo> availablePortsByUdev(bool &ok)
priv.vendorIdentifier = deviceVendorIdentifier(dev.data(), priv.hasVendorIdentifier);
priv.productIdentifier = deviceProductIdentifier(dev.data(), priv.hasProductIdentifier);
} else {
- if (!isRfcommDevice(priv.portName))
+ if (!isRfcommDevice(priv.portName)
+ && !isVirtualNullModemDevice(priv.portName)) {
continue;
+ }
}
serialPortInfoList.append(priv);