diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2008-06-28 18:06:55 +0000 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2008-06-28 18:06:55 +0000 |
commit | 9aab06ba0dd71e4095b654ae988377d41ba2dd0f (patch) | |
tree | 08ba6294f7b15150432f50848cca035509bf54c4 | |
parent | b4beb05d233a1eab3198edc90ea4158ed3581e6b (diff) | |
download | rockbox-9aab06ba0dd71e4095b654ae988377d41ba2dd0f.tar.gz rockbox-9aab06ba0dd71e4095b654ae988377d41ba2dd0f.zip |
W32: Make System Info screen also show the device description.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17845 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | rbutil/rbutilqt/detect.cpp | 29 | ||||
-rw-r--r-- | rbutil/rbutilqt/detect.h | 1 | ||||
-rw-r--r-- | rbutil/rbutilqt/sysinfo.cpp | 12 |
3 files changed, 33 insertions, 9 deletions
diff --git a/rbutil/rbutilqt/detect.cpp b/rbutil/rbutilqt/detect.cpp index 16ab856ebc..18f4d23ba5 100644 --- a/rbutil/rbutilqt/detect.cpp +++ b/rbutil/rbutilqt/detect.cpp | |||
@@ -172,12 +172,17 @@ QString Detect::osVersionString(void) | |||
172 | return result; | 172 | return result; |
173 | } | 173 | } |
174 | 174 | ||
175 | QList<uint32_t> Detect::listUsbIds(void) | ||
176 | { | ||
177 | return listUsbDevices().keys(); | ||
178 | } | ||
179 | |||
175 | /** @brief detect devices based on usb pid / vid. | 180 | /** @brief detect devices based on usb pid / vid. |
176 | * @return list with usb VID / PID values. | 181 | * @return list with usb VID / PID values. |
177 | */ | 182 | */ |
178 | QList<uint32_t> Detect::listUsbIds(void) | 183 | QMap<uint32_t, QString> Detect::listUsbDevices(void) |
179 | { | 184 | { |
180 | QList<uint32_t> usbids; | 185 | QMap<uint32_t, QString> usbids; |
181 | // usb pid detection | 186 | // usb pid detection |
182 | #if defined(Q_OS_LINUX) | defined(Q_OS_MACX) | 187 | #if defined(Q_OS_LINUX) | defined(Q_OS_MACX) |
183 | usb_init(); | 188 | usb_init(); |
@@ -195,7 +200,8 @@ QList<uint32_t> Detect::listUsbIds(void) | |||
195 | while(u) { | 200 | while(u) { |
196 | uint32_t id; | 201 | uint32_t id; |
197 | id = u->descriptor.idVendor << 16 | u->descriptor.idProduct; | 202 | id = u->descriptor.idVendor << 16 | u->descriptor.idProduct; |
198 | if(id) usbids.append(id); | 203 | // FIXME: until description is empty for now. |
204 | if(id) usbids.insert(id, QString("")); | ||
199 | u = u->next; | 205 | u = u->next; |
200 | } | 206 | } |
201 | } | 207 | } |
@@ -221,6 +227,7 @@ QList<uint32_t> Detect::listUsbIds(void) | |||
221 | DWORD data; | 227 | DWORD data; |
222 | LPTSTR buffer = NULL; | 228 | LPTSTR buffer = NULL; |
223 | DWORD buffersize = 0; | 229 | DWORD buffersize = 0; |
230 | QString description; | ||
224 | 231 | ||
225 | // get device desriptor first | 232 | // get device desriptor first |
226 | // for some reason not doing so results in bad things (tm) | 233 | // for some reason not doing so results in bad things (tm) |
@@ -238,6 +245,19 @@ QList<uint32_t> Detect::listUsbIds(void) | |||
238 | 245 | ||
239 | // now get the hardware id, which contains PID and VID. | 246 | // now get the hardware id, which contains PID and VID. |
240 | while(!SetupDiGetDeviceRegistryProperty(deviceInfo, &infoData, | 247 | while(!SetupDiGetDeviceRegistryProperty(deviceInfo, &infoData, |
248 | SPDRP_LOCATION_INFORMATION,&data, (PBYTE)buffer, buffersize, &buffersize)) { | ||
249 | if(GetLastError() == ERROR_INSUFFICIENT_BUFFER) { | ||
250 | if(buffer) free(buffer); | ||
251 | // double buffer size to avoid problems as per KB888609 | ||
252 | buffer = (LPTSTR)malloc(buffersize * 2); | ||
253 | } | ||
254 | else { | ||
255 | break; | ||
256 | } | ||
257 | } | ||
258 | description = QString::fromWCharArray(buffer); | ||
259 | |||
260 | while(!SetupDiGetDeviceRegistryProperty(deviceInfo, &infoData, | ||
241 | SPDRP_HARDWAREID,&data, (PBYTE)buffer, buffersize, &buffersize)) { | 261 | SPDRP_HARDWAREID,&data, (PBYTE)buffer, buffersize, &buffersize)) { |
242 | if(GetLastError() == ERROR_INSUFFICIENT_BUFFER) { | 262 | if(GetLastError() == ERROR_INSUFFICIENT_BUFFER) { |
243 | if(buffer) free(buffer); | 263 | if(buffer) free(buffer); |
@@ -248,6 +268,7 @@ QList<uint32_t> Detect::listUsbIds(void) | |||
248 | break; | 268 | break; |
249 | } | 269 | } |
250 | } | 270 | } |
271 | qDebug() << "SetupDiGetDeviceRegistryProperty" << description << QString::fromWCharArray(buffer); | ||
251 | 272 | ||
252 | unsigned int vid, pid, rev; | 273 | unsigned int vid, pid, rev; |
253 | if(_stscanf(buffer, _TEXT("USB\\Vid_%x&Pid_%x&Rev_%x"), &vid, &pid, &rev) != 3) { | 274 | if(_stscanf(buffer, _TEXT("USB\\Vid_%x&Pid_%x&Rev_%x"), &vid, &pid, &rev) != 3) { |
@@ -256,7 +277,7 @@ QList<uint32_t> Detect::listUsbIds(void) | |||
256 | else { | 277 | else { |
257 | uint32_t id; | 278 | uint32_t id; |
258 | id = vid << 16 | pid; | 279 | id = vid << 16 | pid; |
259 | usbids.append(id); | 280 | usbids.insert(id, description); |
260 | qDebug("VID: %04x PID: %04x", vid, pid); | 281 | qDebug("VID: %04x PID: %04x", vid, pid); |
261 | } | 282 | } |
262 | if(buffer) free(buffer); | 283 | if(buffer) free(buffer); |
diff --git a/rbutil/rbutilqt/detect.h b/rbutil/rbutilqt/detect.h index 98d6040ac0..d6ffaeee34 100644 --- a/rbutil/rbutilqt/detect.h +++ b/rbutil/rbutilqt/detect.h | |||
@@ -39,6 +39,7 @@ public: | |||
39 | static QString userName(void); | 39 | static QString userName(void); |
40 | static QString osVersionString(void); | 40 | static QString osVersionString(void); |
41 | static QList<uint32_t> listUsbIds(void); | 41 | static QList<uint32_t> listUsbIds(void); |
42 | static QMap<uint32_t, QString> listUsbDevices(void); | ||
42 | 43 | ||
43 | static QUrl systemProxy(void); | 44 | static QUrl systemProxy(void); |
44 | static QString installedVersion(QString mountpoint); | 45 | static QString installedVersion(QString mountpoint); |
diff --git a/rbutil/rbutilqt/sysinfo.cpp b/rbutil/rbutilqt/sysinfo.cpp index 4cd2666e8b..7ca4b8585c 100644 --- a/rbutil/rbutilqt/sysinfo.cpp +++ b/rbutil/rbutilqt/sysinfo.cpp | |||
@@ -42,11 +42,13 @@ void Sysinfo::updateSysinfo(void) | |||
42 | info += tr("<b>Permissions:</b><br/>%1<hr/>").arg(Detect::userPermissionsString()); | 42 | info += tr("<b>Permissions:</b><br/>%1<hr/>").arg(Detect::userPermissionsString()); |
43 | #endif | 43 | #endif |
44 | info += tr("<b>Attached USB devices:</b><br/>"); | 44 | info += tr("<b>Attached USB devices:</b><br/>"); |
45 | QList<uint32_t> usbids = Detect::listUsbIds(); | 45 | QMap<uint32_t, QString> usbids = Detect::listUsbDevices(); |
46 | for(int i = 0; i < usbids.size(); i++) | 46 | QList<uint32_t> usbkeys = usbids.keys(); |
47 | info += tr("VID: %1 PID: %2<br/>") | 47 | for(int i = 0; i < usbkeys.size(); i++) |
48 | .arg((usbids.at(i)&0xffff0000)>>16, 4, 16, QChar('0')) | 48 | info += tr("VID: %1 PID: %2, %3<br/>") |
49 | .arg(usbids.at(i)&0xffff, 4, 16, QChar('0')); | 49 | .arg((usbkeys.at(i)&0xffff0000)>>16, 4, 16, QChar('0')) |
50 | .arg(usbkeys.at(i)&0xffff, 4, 16, QChar('0')) | ||
51 | .arg(usbids.value(usbkeys.at(i))); | ||
50 | 52 | ||
51 | ui.textBrowser->setHtml(info); | 53 | ui.textBrowser->setHtml(info); |
52 | } | 54 | } |