diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2008-07-02 17:48:50 +0000 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2008-07-02 17:48:50 +0000 |
commit | 6d64e39888a4a86db472be6c3acb880c39785a1e (patch) | |
tree | 41597f1233c5e371cf4b18c292b21441a6e8906e /rbutil/rbutilqt/detect.cpp | |
parent | 144f39b4ea134ab3efc0d47d99ce81cb5c91cdd8 (diff) | |
download | rockbox-6d64e39888a4a86db472be6c3acb880c39785a1e.tar.gz rockbox-6d64e39888a4a86db472be6c3acb880c39785a1e.zip |
Add reading USB product / vendor names on Linux / OSX.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17917 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt/detect.cpp')
-rw-r--r-- | rbutil/rbutilqt/detect.cpp | 28 |
1 files 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) | |||
72 | DWORD usersize = UNLEN; | 72 | DWORD usersize = UNLEN; |
73 | BOOL status; | 73 | BOOL status; |
74 | enum userlevel result; | 74 | enum userlevel result; |
75 | 75 | ||
76 | status = GetUserNameW(userbuf, &usersize); | 76 | status = GetUserNameW(userbuf, &usersize); |
77 | if(!status) | 77 | if(!status) |
78 | return ERR; | 78 | return ERR; |
@@ -184,7 +184,7 @@ QMap<uint32_t, QString> Detect::listUsbDevices(void) | |||
184 | { | 184 | { |
185 | QMap<uint32_t, QString> usbids; | 185 | QMap<uint32_t, QString> usbids; |
186 | // usb pid detection | 186 | // usb pid detection |
187 | #if defined(Q_OS_LINUX) | defined(Q_OS_MACX) | 187 | #if defined(Q_OS_LINUX) || defined(Q_OS_MACX) |
188 | usb_init(); | 188 | usb_init(); |
189 | usb_find_busses(); | 189 | usb_find_busses(); |
190 | usb_find_devices(); | 190 | usb_find_devices(); |
@@ -200,8 +200,28 @@ QMap<uint32_t, QString> Detect::listUsbDevices(void) | |||
200 | while(u) { | 200 | while(u) { |
201 | uint32_t id; | 201 | uint32_t id; |
202 | id = u->descriptor.idVendor << 16 | u->descriptor.idProduct; | 202 | id = u->descriptor.idVendor << 16 | u->descriptor.idProduct; |
203 | // FIXME: until description is empty for now. | 203 | // get identification strings |
204 | if(id) usbids.insert(id, QString("")); | 204 | usb_dev_handle *dev; |
205 | QString name; | ||
206 | char string[256]; | ||
207 | int res; | ||
208 | dev = usb_open(u); | ||
209 | if(dev) { | ||
210 | if(u->descriptor.iManufacturer) { | ||
211 | res = usb_get_string_simple(dev, u->descriptor.iManufacturer, string, sizeof(string)); | ||
212 | if(res > 0) | ||
213 | name += QString::fromAscii(string) + " "; | ||
214 | } | ||
215 | if(u->descriptor.iProduct) { | ||
216 | res = usb_get_string_simple(dev, u->descriptor.iProduct, string, sizeof(string)); | ||
217 | if(res > 0) | ||
218 | name += QString::fromAscii(string); | ||
219 | } | ||
220 | } | ||
221 | usb_close(dev); | ||
222 | if(name.isEmpty()) name = QObject::tr("(no description available)"); | ||
223 | |||
224 | if(id) usbids.insert(id, name); | ||
205 | u = u->next; | 225 | u = u->next; |
206 | } | 226 | } |
207 | } | 227 | } |