From 6d64e39888a4a86db472be6c3acb880c39785a1e Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Wed, 2 Jul 2008 17:48:50 +0000 Subject: Add reading USB product / vendor names on Linux / OSX. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17917 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/rbutilqt/detect.cpp | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/rbutil/rbutilqt/detect.cpp b/rbutil/rbutilqt/detect.cpp index ad563b8be7..75a892571b 100644 --- a/rbutil/rbutilqt/detect.cpp +++ b/rbutil/rbutilqt/detect.cpp @@ -72,7 +72,7 @@ enum Detect::userlevel Detect::userPermissions(void) DWORD usersize = UNLEN; BOOL status; enum userlevel result; - + status = GetUserNameW(userbuf, &usersize); if(!status) return ERR; @@ -184,7 +184,7 @@ QMap Detect::listUsbDevices(void) { QMap usbids; // usb pid detection -#if defined(Q_OS_LINUX) | defined(Q_OS_MACX) +#if defined(Q_OS_LINUX) || defined(Q_OS_MACX) usb_init(); usb_find_busses(); usb_find_devices(); @@ -200,8 +200,28 @@ QMap Detect::listUsbDevices(void) while(u) { uint32_t id; id = u->descriptor.idVendor << 16 | u->descriptor.idProduct; - // FIXME: until description is empty for now. - if(id) usbids.insert(id, QString("")); + // get identification strings + usb_dev_handle *dev; + QString name; + char string[256]; + int res; + dev = usb_open(u); + if(dev) { + if(u->descriptor.iManufacturer) { + res = usb_get_string_simple(dev, u->descriptor.iManufacturer, string, sizeof(string)); + if(res > 0) + name += QString::fromAscii(string) + " "; + } + if(u->descriptor.iProduct) { + res = usb_get_string_simple(dev, u->descriptor.iProduct, string, sizeof(string)); + if(res > 0) + name += QString::fromAscii(string); + } + } + usb_close(dev); + if(name.isEmpty()) name = QObject::tr("(no description available)"); + + if(id) usbids.insert(id, name); u = u->next; } } -- cgit v1.2.3