summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-01-27 18:54:58 +0100
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2014-01-27 18:54:58 +0100
commit296b5964c05e312a7c83ba44379ba258755e13a3 (patch)
treeda450f86f84e7dcdb8fdb9eaca31c79d09d63cbe
parent35440cec6fdc57e46bc86085c344b17cc51cd0d1 (diff)
parenta7471c9159b254c2d5a21ddd9772fac8fe7d1736 (diff)
downloadqtserialport-296b5964c05e312a7c83ba44379ba258755e13a3.tar.gz
Merge remote-tracking branch 'origin/stable' into dev
Change-Id: Id640f4d6e6d6c6eb794cdc59d7c2008e60634274
-rw-r--r--src/serialport/qserialportinfo_unix.cpp112
1 files changed, 56 insertions, 56 deletions
diff --git a/src/serialport/qserialportinfo_unix.cpp b/src/serialport/qserialportinfo_unix.cpp
index 4433a4e..80b2f7d 100644
--- a/src/serialport/qserialportinfo_unix.cpp
+++ b/src/serialport/qserialportinfo_unix.cpp
@@ -115,81 +115,81 @@ QList<QSerialPortInfo> availablePortsByFiltersOfDevices()
QList<QSerialPortInfo> availablePortsBySysfs()
{
- QList<QSerialPortInfo> serialPortInfoList;
QDir ttySysClassDir(QStringLiteral("/sys/class/tty"));
- const bool sysfsEnabled = ttySysClassDir.exists() && ttySysClassDir.isReadable();
- if (sysfsEnabled) {
- ttySysClassDir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
- foreach (const QFileInfo &fileInfo, ttySysClassDir.entryInfoList()) {
- if (!fileInfo.isSymLink())
- continue;
+ if (!(ttySysClassDir.exists() && ttySysClassDir.isReadable()))
+ return QList<QSerialPortInfo>();
- const QString targetPath = fileInfo.symLinkTarget();
- const int lastIndexOfSlash = targetPath.lastIndexOf(QLatin1Char('/'));
- if (lastIndexOfSlash == -1)
- continue;
+ QList<QSerialPortInfo> serialPortInfoList;
+ ttySysClassDir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
+ foreach (const QFileInfo &fileInfo, ttySysClassDir.entryInfoList()) {
+ if (!fileInfo.isSymLink())
+ continue;
- QSerialPortInfo serialPortInfo;
+ const QString targetPath = fileInfo.symLinkTarget();
+ const int lastIndexOfSlash = targetPath.lastIndexOf(QLatin1Char('/'));
+ if (lastIndexOfSlash == -1)
+ continue;
- if (targetPath.contains(QStringLiteral("pnp"))) {
- // TODO: Obtain more information
- } else if (targetPath.contains(QStringLiteral("platform"))) {
- continue;
- } else if (targetPath.contains(QStringLiteral("usb"))) {
+ QSerialPortInfo serialPortInfo;
- QDir targetDir(targetPath);
- targetDir.setFilter(QDir::Files | QDir::Readable);
- targetDir.setNameFilters(QStringList(QStringLiteral("uevent")));
+ if (targetPath.contains(QStringLiteral("pnp"))) {
+ // TODO: Obtain more information
+ } else if (targetPath.contains(QStringLiteral("platform"))) {
+ continue;
+ } else if (targetPath.contains(QStringLiteral("usb"))) {
- do {
- const QFileInfoList entryInfoList = targetDir.entryInfoList();
- if (entryInfoList.isEmpty())
- continue;
+ QDir targetDir(targetPath);
+ targetDir.setFilter(QDir::Files | QDir::Readable);
+ targetDir.setNameFilters(QStringList(QStringLiteral("uevent")));
- QFile uevent(entryInfoList.first().absoluteFilePath());
- if (!uevent.open(QIODevice::ReadOnly | QIODevice::Text))
- continue;
+ do {
+ const QFileInfoList entryInfoList = targetDir.entryInfoList();
+ if (entryInfoList.isEmpty())
+ continue;
- const QString ueventContent = QString::fromLatin1(uevent.readAll());
+ QFile uevent(entryInfoList.first().absoluteFilePath());
+ if (!uevent.open(QIODevice::ReadOnly | QIODevice::Text))
+ continue;
- if (ueventContent.contains(QStringLiteral("DEVTYPE=usb_device"))
- && ueventContent.contains(QStringLiteral("DRIVER=usb"))) {
+ const QString ueventContent = QString::fromLatin1(uevent.readAll());
- QFile description(QFileInfo(targetDir, QStringLiteral("product")).absoluteFilePath());
- if (description.open(QIODevice::ReadOnly | QIODevice::Text))
- serialPortInfo.d_ptr->description = QString::fromLatin1(description.readAll()).simplified();
+ if (ueventContent.contains(QStringLiteral("DEVTYPE=usb_device"))
+ && ueventContent.contains(QStringLiteral("DRIVER=usb"))) {
- QFile manufacturer(QFileInfo(targetDir, QStringLiteral("manufacturer")).absoluteFilePath());
- if (manufacturer.open(QIODevice::ReadOnly | QIODevice::Text))
- serialPortInfo.d_ptr->manufacturer = QString::fromLatin1(manufacturer.readAll()).simplified();
+ QFile description(QFileInfo(targetDir, QStringLiteral("product")).absoluteFilePath());
+ if (description.open(QIODevice::ReadOnly | QIODevice::Text))
+ serialPortInfo.d_ptr->description = QString::fromLatin1(description.readAll()).simplified();
- QFile vendorIdentifier(QFileInfo(targetDir, QStringLiteral("idVendor")).absoluteFilePath());
- if (vendorIdentifier.open(QIODevice::ReadOnly | QIODevice::Text)) {
- serialPortInfo.d_ptr->vendorIdentifier = QString::fromLatin1(vendorIdentifier.readAll())
- .toInt(&serialPortInfo.d_ptr->hasVendorIdentifier, 16);
- }
+ QFile manufacturer(QFileInfo(targetDir, QStringLiteral("manufacturer")).absoluteFilePath());
+ if (manufacturer.open(QIODevice::ReadOnly | QIODevice::Text))
+ serialPortInfo.d_ptr->manufacturer = QString::fromLatin1(manufacturer.readAll()).simplified();
- QFile productIdentifier(QFileInfo(targetDir, QStringLiteral("idProduct")).absoluteFilePath());
- if (productIdentifier.open(QIODevice::ReadOnly | QIODevice::Text)) {
- serialPortInfo.d_ptr->productIdentifier = QString::fromLatin1(productIdentifier.readAll())
- .toInt(&serialPortInfo.d_ptr->hasProductIdentifier, 16);
- }
+ QFile vendorIdentifier(QFileInfo(targetDir, QStringLiteral("idVendor")).absoluteFilePath());
+ if (vendorIdentifier.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ serialPortInfo.d_ptr->vendorIdentifier = QString::fromLatin1(vendorIdentifier.readAll())
+ .toInt(&serialPortInfo.d_ptr->hasVendorIdentifier, 16);
+ }
- break;
+ QFile productIdentifier(QFileInfo(targetDir, QStringLiteral("idProduct")).absoluteFilePath());
+ if (productIdentifier.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ serialPortInfo.d_ptr->productIdentifier = QString::fromLatin1(productIdentifier.readAll())
+ .toInt(&serialPortInfo.d_ptr->hasProductIdentifier, 16);
}
- } while (targetDir.cdUp());
- } else if (targetPath.contains(QStringLiteral("pci"))) {
- // TODO: Obtain more information about the device
- } else {
- continue;
- }
+ break;
+ }
+ } while (targetDir.cdUp());
- serialPortInfo.d_ptr->portName = targetPath.mid(lastIndexOfSlash + 1);
- serialPortInfo.d_ptr->device = QSerialPortPrivate::portNameToSystemLocation(serialPortInfo.d_ptr->portName);
- serialPortInfoList.append(serialPortInfo);
+ } else if (targetPath.contains(QStringLiteral("pci"))) {
+ // TODO: Obtain more information about the device
+ } else {
+ continue;
}
+
+ serialPortInfo.d_ptr->portName = targetPath.mid(lastIndexOfSlash + 1);
+ serialPortInfo.d_ptr->device = QSerialPortPrivate::portNameToSystemLocation(serialPortInfo.d_ptr->portName);
+ serialPortInfoList.append(serialPortInfo);
}
return serialPortInfoList;