diff options
Diffstat (limited to 'src/serialport/qserialportinfo_unix.cpp')
-rw-r--r-- | src/serialport/qserialportinfo_unix.cpp | 20 |
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); |