diff options
Diffstat (limited to 'rbutil')
-rw-r--r-- | rbutil/rbutilqt/base/detect.cpp | 43 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.pro | 7 |
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 | } |
212 | unix:!static { | 212 | unix:!static:!libusb1 { |
213 | LIBS += -lusb | 213 | LIBS += -lusb |
214 | } | 214 | } |
215 | unix:!static:libusb1 { | ||
216 | DEFINES += LIBUSB1 | ||
217 | LIBS += -lusb-1.0 | ||
218 | } | ||
219 | |||
215 | unix:static { | 220 | unix: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. |