summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rbutil/rbutilqt/base/detect.cpp43
-rw-r--r--rbutil/rbutilqt/rbutilqt.pro7
2 files changed, 49 insertions, 1 deletions
diff --git a/rbutil/rbutilqt/base/detect.cpp b/rbutil/rbutilqt/base/detect.cpp
index d471c98273..9eaa1c9bb7 100644
--- a/rbutil/rbutilqt/base/detect.cpp
+++ b/rbutil/rbutilqt/base/detect.cpp
@@ -40,7 +40,11 @@
40 40
41// Linux and Mac includes 41// Linux and Mac includes
42#if defined(Q_OS_LINUX) || defined(Q_OS_MACX) 42#if defined(Q_OS_LINUX) || defined(Q_OS_MACX)
43#if defined(LIBUSB1)
44#include <libusb-1.0/libusb.h>
45#else
43#include <usb.h> 46#include <usb.h>
47#endif
44#include <sys/utsname.h> 48#include <sys/utsname.h>
45#include <unistd.h> 49#include <unistd.h>
46#include <pwd.h> 50#include <pwd.h>
@@ -190,7 +194,45 @@ QMap<uint32_t, QString> Detect::listUsbDevices(void)
190{ 194{
191 QMap<uint32_t, QString> usbids; 195 QMap<uint32_t, QString> usbids;
192 // usb pid detection 196 // usb pid detection
197 qDebug() << "[Detect] Searching for USB devices";
193#if defined(Q_OS_LINUX) || defined(Q_OS_MACX) 198#if defined(Q_OS_LINUX) || defined(Q_OS_MACX)
199#if defined(LIBUSB1)
200 libusb_device **devs;
201 int res;
202 ssize_t count;
203 res = libusb_init(NULL);
204
205 count = libusb_get_device_list(NULL, &devs);
206 libusb_device *dev;
207 int i = 0;
208 while((dev = devs[i++]) != NULL) {
209 QString name;
210 unsigned char buf[256];
211 uint32_t id;
212 struct libusb_device_descriptor descriptor;
213 if(libusb_get_device_descriptor(dev, &descriptor) == 0) {
214 id = descriptor.idVendor << 16 | descriptor.idProduct;
215
216 libusb_device_handle *dh;
217 if(libusb_open(dev, &dh) == 0) {
218 libusb_get_string_descriptor_ascii(dh, descriptor.iManufacturer, buf, 256);
219 name += QString::fromAscii((char*)buf) + " ";
220 libusb_get_string_descriptor_ascii(dh, descriptor.iProduct, buf, 256);
221 name += QString::fromAscii((char*)buf);
222 libusb_close(dh);
223 }
224 if(name.isEmpty())
225 name = QObject::tr("(no description available)");
226 if(id) {
227 usbids.insert(id, name);
228 qDebug("[Detect] USB: 0x%08x, %s", id, name.toLocal8Bit().data());
229 }
230 }
231 }
232
233 libusb_free_device_list(devs, 1);
234 libusb_exit(NULL);
235#else
194 usb_init(); 236 usb_init();
195 usb_find_busses(); 237 usb_find_busses();
196 usb_find_devices(); 238 usb_find_devices();
@@ -237,6 +279,7 @@ QMap<uint32_t, QString> Detect::listUsbDevices(void)
237 b = b->next; 279 b = b->next;
238 } 280 }
239#endif 281#endif
282#endif
240 283
241#if defined(Q_OS_WIN32) 284#if defined(Q_OS_WIN32)
242 HDEVINFO deviceInfo; 285 HDEVINFO deviceInfo;
diff --git a/rbutil/rbutilqt/rbutilqt.pro b/rbutil/rbutilqt/rbutilqt.pro
index 20adb71e47..998bffc8ad 100644
--- a/rbutil/rbutilqt/rbutilqt.pro
+++ b/rbutil/rbutilqt/rbutilqt.pro
@@ -209,9 +209,14 @@ unix {
209 SOURCES += ../ipodpatcher/ipodio-posix.c 209 SOURCES += ../ipodpatcher/ipodio-posix.c
210 SOURCES += ../sansapatcher/sansaio-posix.c 210 SOURCES += ../sansapatcher/sansaio-posix.c
211} 211}
212unix:!static { 212unix:!static:!libusb1 {
213 LIBS += -lusb 213 LIBS += -lusb
214} 214}
215unix:!static:libusb1 {
216 DEFINES += LIBUSB1
217 LIBS += -lusb-1.0
218}
219
215unix:static { 220unix:static {
216 # force statically linking of libusb. Libraries that are appended 221 # force statically linking of libusb. Libraries that are appended
217 # later will get linked dynamically again. 222 # later will get linked dynamically again.