diff options
author | Kari Oikarinen <kari.oikarinen@qt.io> | 2016-10-20 16:37:38 +0300 |
---|---|---|
committer | Kari Oikarinen <kari.oikarinen@qt.io> | 2016-11-07 07:18:11 +0000 |
commit | a6bfa840aeab17d565030920422000861615e6e6 (patch) | |
tree | 0e73a314f073d526e33252bc371a57fab524198a /tests | |
parent | 6e15f80aed27e87e9727568ee8d968641a9ed913 (diff) |
Handle plugged and unplugged USB devices
Looking for inserted and removed devices is done by polling once a
second. libusb hotplug events are not used since they are not supported
on Windows and not available in the libusb version in RHEL 7.2.
If the IP address is not available for the device on the first check,
the device will be checked again after a short delay until the
information is complete. In the meanwhile the incomplete information is
exposed to the client when asked.
Parts that use libusb were moved from libqdb to the host part, since
they are only used on the host.
Task-number: QTBUG-56067
Change-Id: I0cfbd3659001982609a7d4a77cb1266a7dc6ce8c
Reviewed-by: Samuli Piippo <samuli.piippo@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/servicetest.cpp | 8 | ||||
-rw-r--r-- | tests/servicetest.pro | 24 | ||||
-rw-r--r-- | tests/streamtest.cpp | 7 | ||||
-rw-r--r-- | tests/streamtest.pro | 23 |
4 files changed, 52 insertions, 10 deletions
diff --git a/tests/servicetest.cpp b/tests/servicetest.cpp index da38de9..a895257 100644 --- a/tests/servicetest.cpp +++ b/tests/servicetest.cpp @@ -21,10 +21,10 @@ #include "libqdb/make_unique.h" #include "libqdb/protocol/qdbtransport.h" #include "libqdb/protocol/services.h" -#include "libqdb/usb/devicemanagement.h" -#include "libqdb/usb/usbconnection.h" #include "qdb/server/connection.h" #include "qdb/server/echoservice.h" +#include "qdb/server/usb-host/usbconnection.h" +#include "qdb/server/usb-host/usbdeviceenumerator.h" #include <QtCore/qdebug.h> #include <QtCore/qregularexpression.h> @@ -37,12 +37,14 @@ const int testTimeout = 500; // in milliseconds struct ConnectionContext { ConnectionContext() - : connection{new QdbTransport{new UsbConnection{listUsbDevices()[0]}}} + : deviceEnumerator{}, + connection{new QdbTransport{new UsbConnection{deviceEnumerator.listUsbDevices()[0]}}} { QVERIFY(connection.initialize()); connection.connect(); } + UsbDeviceEnumerator deviceEnumerator; Connection connection; }; diff --git a/tests/servicetest.pro b/tests/servicetest.pro index b0ca1cf..ac95228 100644 --- a/tests/servicetest.pro +++ b/tests/servicetest.pro @@ -6,16 +6,34 @@ CONFIG -= app_bundle TEMPLATE = app +unix { + CONFIG += link_pkgconfig + PKGCONFIG += libusb-1.0 +} +win32 { + LIBS += -llibusb-1.0 +} + HEADERS += \ ../qdb/server/connection.h \ ../qdb/server/echoservice.h \ - ../qdb/server/service.h + ../qdb/server/service.h \ + ../qdb/server/usb-host/usbcommon.h \ + ../qdb/server/usb-host/usbconnection.h \ + ../qdb/server/usb-host/usbconnectionreader.h \ + ../qdb/server/usb-host/usbdevice.h \ + ../qdb/server/usb-host/usbdeviceenumerator.h \ SOURCES += \ - servicetest.cpp \ ../qdb/server/connection.cpp \ ../qdb/server/echoservice.cpp \ - ../qdb/server/service.cpp + ../qdb/server/service.cpp \ + ../qdb/server/usb-host/libusbcontext.cpp \ + ../qdb/server/usb-host/usbconnection.cpp \ + ../qdb/server/usb-host/usbconnectionreader.cpp \ + ../qdb/server/usb-host/usbdevice.cpp \ + ../qdb/server/usb-host/usbdeviceenumerator.cpp \ + servicetest.cpp \ INCLUDEPATH += $$PWD/../ diff --git a/tests/streamtest.cpp b/tests/streamtest.cpp index c44c585..0e3068b 100644 --- a/tests/streamtest.cpp +++ b/tests/streamtest.cpp @@ -23,8 +23,8 @@ #include "libqdb/protocol/qdbmessage.h" #include "libqdb/protocol/qdbtransport.h" #include "libqdb/protocol/services.h" -#include "libqdb/usb/devicemanagement.h" -#include "libqdb/usb/usbconnection.h" +#include "qdb/server/usb-host/usbconnection.h" +#include "qdb/server/usb-host/usbdeviceenumerator.h" #include <QtCore/qdebug.h> #include <QtCore/qtimer.h> @@ -45,7 +45,8 @@ public: public slots: void run() { - m_transport = make_unique<QdbTransport>(new UsbConnection{listUsbDevices()[0]}); + UsbDeviceEnumerator deviceManager; + m_transport = make_unique<QdbTransport>(new UsbConnection{deviceManager.listUsbDevices()[0]}); if (m_transport->open()) { qDebug() << "opened transport"; connect(m_transport.get(), &QdbTransport::messageAvailable, this, &TestCase::testPhases); diff --git a/tests/streamtest.pro b/tests/streamtest.pro index ed45253..09cff3a 100644 --- a/tests/streamtest.pro +++ b/tests/streamtest.pro @@ -6,7 +6,28 @@ CONFIG -= app_bundle TEMPLATE = app -SOURCES += streamtest.cpp +unix { + CONFIG += link_pkgconfig + PKGCONFIG += libusb-1.0 +} +win32 { + LIBS += -llibusb-1.0 +} + +HEADERS += \ + ../qdb/server/usb-host/usbcommon.h \ + ../qdb/server/usb-host/usbconnection.h \ + ../qdb/server/usb-host/usbconnectionreader.h \ + ../qdb/server/usb-host/usbdevice.h \ + ../qdb/server/usb-host/usbdeviceenumerator.h \ + +SOURCES += \ + ../qdb/server/usb-host/libusbcontext.cpp \ + ../qdb/server/usb-host/usbconnection.cpp \ + ../qdb/server/usb-host/usbconnectionreader.cpp \ + ../qdb/server/usb-host/usbdevice.cpp \ + ../qdb/server/usb-host/usbdeviceenumerator.cpp \ + streamtest.cpp \ INCLUDEPATH += $$PWD/../ |