summaryrefslogtreecommitdiffstats
path: root/qdb
diff options
context:
space:
mode:
authorKari Oikarinen <kari.oikarinen@qt.io>2016-12-13 15:53:27 +0200
committerKari Oikarinen <kari.oikarinen@qt.io>2016-12-22 13:01:19 +0000
commitb9bef380a60b17d5fb686581bde20819e4492ead (patch)
tree471fad4f74f6ae5d3687cce0b23fd8c06cf31145 /qdb
parente7711227365a4fc301fe04bbed85eda986ee4ab5 (diff)
Downgrade failure to fetch config descriptor to a warning
libusb may also access devices other than QDB devices and at least on my Windows machine fetching the USB config descriptor for two of those fails. Those devices will be ignored. This case would only be critical if it happened to a QDB device, so warning level seems appropriate. This still means warning for each such device on every polling interval. Change-Id: I0ea36206f275296bde18ea66e3519333b73d6670 Reviewed-by: Samuli Piippo <samuli.piippo@qt.io>
Diffstat (limited to 'qdb')
-rw-r--r--qdb/server/usb-host/usbdeviceenumerator.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/qdb/server/usb-host/usbdeviceenumerator.cpp b/qdb/server/usb-host/usbdeviceenumerator.cpp
index 04d97f9..4b32137 100644
--- a/qdb/server/usb-host/usbdeviceenumerator.cpp
+++ b/qdb/server/usb-host/usbdeviceenumerator.cpp
@@ -32,6 +32,14 @@
Q_DECLARE_LOGGING_CATEGORY(usbC);
+UsbAddress getAddress(libusb_device *device)
+{
+ return UsbAddress{
+ libusb_get_bus_number(device),
+ libusb_get_device_address(device)
+ };
+}
+
bool isQdbInterface(const libusb_interface &interface)
{
const libusb_interface_descriptor *descriptor = &interface.altsetting[0];
@@ -43,7 +51,10 @@ std::pair<bool, UsbInterfaceInfo> findQdbInterface(libusb_device *device)
libusb_config_descriptor *config;
const int ret = libusb_get_active_config_descriptor(device, &config);
if (ret) {
- qCCritical(usbC) << "Could not get config descriptor:" << libusb_error_name(ret);
+ const auto address = getAddress(device);
+ qCWarning(usbC) << "Could not get config descriptor for device at"
+ << address.busNumber << ":" << address.deviceAddress
+ << ":" << libusb_error_name(ret);
return std::make_pair(false, UsbInterfaceInfo{});
}
ScopeGuard configGuard = [&]() {
@@ -67,14 +78,6 @@ std::pair<bool, UsbInterfaceInfo> findQdbInterface(libusb_device *device)
return std::make_pair(true, info);
}
-UsbAddress getAddress(libusb_device *device)
-{
- return UsbAddress{
- libusb_get_bus_number(device),
- libusb_get_device_address(device)
- };
-}
-
QString getSerialNumber(libusb_device *device, libusb_device_handle *handle)
{
QString serial{"???"};
@@ -117,7 +120,10 @@ std::pair<bool, UsbDevice> makeUsbDeviceIfQdbDevice(libusb_device *device)
libusb_device_handle *handle;
int ret = libusb_open(device, &handle);
if (ret) {
- qCWarning(usbC) << "Could not open USB device for checking serial number:" << libusb_error_name(ret);
+ const auto address = getAddress(device);
+ qCWarning(usbC) << "Could not open USB device at" << address.busNumber
+ << ":" << address.deviceAddress << "for checking serial number:"
+ << libusb_error_name(ret);
return std::make_pair(false, UsbDevice{});
}
ScopeGuard deviceGuard = [=]() {