diff options
-rw-r--r-- | src/serialport/qserialportinfo_mac.cpp | 35 | ||||
-rw-r--r-- | src/serialport/qserialportinfo_unix.cpp | 8 | ||||
-rw-r--r-- | src/serialport/serialport-lib.pri | 11 | ||||
-rw-r--r-- | tests/manual/qserialportinfo/tst_qserialportinfo.cpp | 21 |
4 files changed, 62 insertions, 13 deletions
diff --git a/src/serialport/qserialportinfo_mac.cpp b/src/serialport/qserialportinfo_mac.cpp index 2c2564e..d540b15 100644 --- a/src/serialport/qserialportinfo_mac.cpp +++ b/src/serialport/qserialportinfo_mac.cpp @@ -43,6 +43,7 @@ #include "qserialportinfo.h" #include "qserialportinfo_p.h" +#include "qserialport_unix_p.h" #include <sys/param.h> @@ -290,4 +291,38 @@ QList<QSerialPortInfo> QSerialPortInfo::availablePorts() return serialPortInfoList; } +QList<qint32> QSerialPortInfo::standardBaudRates() +{ + return QSerialPortPrivate::standardBaudRates(); +} + +bool QSerialPortInfo::isBusy() const +{ + QString lockFilePath = serialPortLockFilePath(portName()); + if (lockFilePath.isEmpty()) + return false; + + QFile reader(lockFilePath); + if (!reader.open(QIODevice::ReadOnly)) + return false; + + QByteArray pidLine = reader.readLine(); + pidLine.chop(1); + if (pidLine.isEmpty()) + return false; + + qint64 pid = pidLine.toLongLong(); + + if (pid && (::kill(pid, 0) == -1) && (errno == ESRCH)) + return false; // PID doesn't exist anymore + + return true; +} + +bool QSerialPortInfo::isValid() const +{ + QFile f(systemLocation()); + return f.exists(); +} + QT_END_NAMESPACE diff --git a/src/serialport/qserialportinfo_unix.cpp b/src/serialport/qserialportinfo_unix.cpp index ce5f3a9..0ed8703 100644 --- a/src/serialport/qserialportinfo_unix.cpp +++ b/src/serialport/qserialportinfo_unix.cpp @@ -55,16 +55,10 @@ #include <sys/types.h> // kill #include <signal.h> // kill -#ifndef Q_OS_MAC - #include "qtudev_p.h" -#endif - QT_BEGIN_NAMESPACE -#ifndef Q_OS_MAC - static QStringList filteredDeviceFilePaths() { static const QStringList deviceFileNameFilterList = QStringList() @@ -379,8 +373,6 @@ QList<QSerialPortInfo> QSerialPortInfo::availablePorts() return serialPortInfoList; } -#endif - QList<qint32> QSerialPortInfo::standardBaudRates() { return QSerialPortPrivate::standardBaudRates(); diff --git a/src/serialport/serialport-lib.pri b/src/serialport/serialport-lib.pri index 166a6fa..9c9b076 100644 --- a/src/serialport/serialport-lib.pri +++ b/src/serialport/serialport-lib.pri @@ -78,11 +78,14 @@ unix:!symbian { $$PWD/qserialport_unix_p.h SOURCES += \ - $$PWD/qserialport_unix.cpp \ - $$PWD/qserialportinfo_unix.cpp + $$PWD/qserialport_unix.cpp - macx { - SOURCES += $$PWD/qserialportinfo_mac.cpp + !mac { + SOURCES += \ + $$PWD/qserialportinfo_unix.cpp + } else { + SOURCES += \ + $$PWD/qserialportinfo_mac.cpp LIBS_PRIVATE += -framework IOKit -framework CoreFoundation } diff --git a/tests/manual/qserialportinfo/tst_qserialportinfo.cpp b/tests/manual/qserialportinfo/tst_qserialportinfo.cpp index c73aa00..1908dc0 100644 --- a/tests/manual/qserialportinfo/tst_qserialportinfo.cpp +++ b/tests/manual/qserialportinfo/tst_qserialportinfo.cpp @@ -54,6 +54,7 @@ class tst_QSerialPortInfo : public QObject private slots: void serialPortInfoList(); + void standardBaudRateList(); void constructors(); void assignment(); }; @@ -64,9 +65,27 @@ void tst_QSerialPortInfo::serialPortInfoList() QCOMPARE(list.isEmpty(), false); } +void tst_QSerialPortInfo::standardBaudRateList() +{ + QList<qint32> list(QSerialPortInfo::standardBaudRates()); + QCOMPARE(list.isEmpty(), false); +} + void tst_QSerialPortInfo::constructors() { - // FIXME + QSerialPortInfo serialPortInfo; + QCOMPARE(serialPortInfo.portName().isEmpty(), true); + QCOMPARE(serialPortInfo.systemLocation().isEmpty(), true); + QCOMPARE(serialPortInfo.description().isEmpty(), true); + QCOMPARE(serialPortInfo.manufacturer().isEmpty(), true); + QCOMPARE(serialPortInfo.serialNumber().isEmpty(), true); + QCOMPARE(serialPortInfo.vendorIdentifier(), quint16(0)); + QCOMPARE(serialPortInfo.productIdentifier(), quint16(0)); + QCOMPARE(serialPortInfo.hasVendorIdentifier(), false); + QCOMPARE(serialPortInfo.hasProductIdentifier(), false); + QCOMPARE(serialPortInfo.isNull(), false); + QCOMPARE(serialPortInfo.isBusy(), false); + QCOMPARE(serialPortInfo.isValid(), false); } void tst_QSerialPortInfo::assignment() |