summaryrefslogtreecommitdiff
path: root/src/serialport/qserialportinfo_win.cpp
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2014-11-27 18:38:10 +0100
committerFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2015-01-19 13:23:52 +0100
commit40d3bc669e7f556ac8d6492ad324827dcf6da6c1 (patch)
tree47d2330cf794fe5244e86350028eca9fad8c2d81 /src/serialport/qserialportinfo_win.cpp
parent38f43b390e5b27f6243ba781394ad2418ead6b74 (diff)
parentfbf3a8f5d50b5ae2dc90ac0af840a36530df3395 (diff)
downloadqtserialport-40d3bc669e7f556ac8d6492ad324827dcf6da6c1.tar.gz
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts: src/serialport/qserialport.cpp src/serialport/qserialport.h src/serialport/qserialport_unix.cpp src/serialport/qserialport_unix_p.h src/serialport/qserialport_win.cpp src/serialport/qserialport_win_p.h src/serialport/qserialport_wince_p.h src/serialport/qt4support/include/private/qcore_unix_p.h Change-Id: Ifaa5ce8c1c0eb1c70246c54782719b91f3c95771
Diffstat (limited to 'src/serialport/qserialportinfo_win.cpp')
-rw-r--r--src/serialport/qserialportinfo_win.cpp43
1 files changed, 28 insertions, 15 deletions
diff --git a/src/serialport/qserialportinfo_win.cpp b/src/serialport/qserialportinfo_win.cpp
index 4b30a09..a94a5ff 100644
--- a/src/serialport/qserialportinfo_win.cpp
+++ b/src/serialport/qserialportinfo_win.cpp
@@ -312,23 +312,23 @@ QList<QSerialPortInfo> QSerialPortInfo::availablePorts()
continue;
}
- QSerialPortInfo serialPortInfo;
+ QSerialPortInfoPrivate priv;
- serialPortInfo.d_ptr->portName = portName;
- serialPortInfo.d_ptr->device = QSerialPortPrivate::portNameToSystemLocation(portName);
- serialPortInfo.d_ptr->description = deviceDescription(deviceInfoSet, &deviceInfoData);
- serialPortInfo.d_ptr->manufacturer = deviceManufacturer(deviceInfoSet, &deviceInfoData);
+ priv.portName = portName;
+ priv.device = QSerialPortInfoPrivate::portNameToSystemLocation(portName);
+ priv.description = deviceDescription(deviceInfoSet, &deviceInfoData);
+ priv.manufacturer = deviceManufacturer(deviceInfoSet, &deviceInfoData);
const QString instanceIdentifier = deviceInstanceIdentifier(deviceInfoData.DevInst);
- serialPortInfo.d_ptr->serialNumber =
+ priv.serialNumber =
deviceSerialNumber(instanceIdentifier, deviceInfoData.DevInst);
- serialPortInfo.d_ptr->vendorIdentifier =
- deviceVendorIdentifier(instanceIdentifier, serialPortInfo.d_ptr->hasVendorIdentifier);
- serialPortInfo.d_ptr->productIdentifier =
- deviceProductIdentifier(instanceIdentifier, serialPortInfo.d_ptr->hasProductIdentifier);
+ priv.vendorIdentifier =
+ deviceVendorIdentifier(instanceIdentifier, priv.hasVendorIdentifier);
+ priv.productIdentifier =
+ deviceProductIdentifier(instanceIdentifier, priv.hasProductIdentifier);
- serialPortInfoList.append(serialPortInfo);
+ serialPortInfoList.append(priv);
}
::SetupDiDestroyDeviceInfoList(deviceInfoSet);
}
@@ -336,10 +336,10 @@ QList<QSerialPortInfo> QSerialPortInfo::availablePorts()
foreach (const QString &portName, portNamesFromHardwareDeviceMap()) {
if (std::find_if(serialPortInfoList.begin(), serialPortInfoList.end(),
SerialPortNameEqualFunctor(portName)) == serialPortInfoList.end()) {
- QSerialPortInfo serialPortInfo;
- serialPortInfo.d_ptr->portName = portName;
- serialPortInfo.d_ptr->device = QSerialPortPrivate::portNameToSystemLocation(portName);
- serialPortInfoList.append(serialPortInfo);
+ QSerialPortInfoPrivate priv;
+ priv.portName = portName;
+ priv.device = QSerialPortInfoPrivate::portNameToSystemLocation(portName);
+ serialPortInfoList.append(priv);
}
}
@@ -379,4 +379,17 @@ bool QSerialPortInfo::isValid() const
return true;
}
+QString QSerialPortInfoPrivate::portNameToSystemLocation(const QString &source)
+{
+ return source.startsWith(QStringLiteral("COM"))
+ ? (QStringLiteral("\\\\.\\") + source) : source;
+}
+
+QString QSerialPortInfoPrivate::portNameFromSystemLocation(const QString &source)
+{
+ return (source.startsWith(QStringLiteral("\\\\.\\"))
+ || source.startsWith(QStringLiteral("//./")))
+ ? source.mid(4) : source;
+}
+
QT_END_NAMESPACE