From a6bfa840aeab17d565030920422000861615e6e6 Mon Sep 17 00:00:00 2001 From: Kari Oikarinen Date: Thu, 20 Oct 2016 16:37:38 +0300 Subject: 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 --- tests/servicetest.cpp | 8 +++++--- tests/servicetest.pro | 24 +++++++++++++++++++++--- tests/streamtest.cpp | 7 ++++--- tests/streamtest.pro | 23 ++++++++++++++++++++++- 4 files changed, 52 insertions(+), 10 deletions(-) (limited to 'tests') 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 #include @@ -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 #include @@ -45,7 +45,8 @@ public: public slots: void run() { - m_transport = make_unique(new UsbConnection{listUsbDevices()[0]}); + UsbDeviceEnumerator deviceManager; + m_transport = make_unique(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/../ -- cgit v1.2.3