Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

+33 -9
+25 -4
rbutil/rbutilqt/detect.cpp
··· 172 172 return result; 173 173 } 174 174 175 + QList<uint32_t> Detect::listUsbIds(void) 176 + { 177 + return listUsbDevices().keys(); 178 + } 179 + 175 180 /** @brief detect devices based on usb pid / vid. 176 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 186 // usb pid detection 182 187 #if defined(Q_OS_LINUX) | defined(Q_OS_MACX) 183 188 usb_init(); ··· 195 200 while(u) { 196 201 uint32_t id; 197 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 205 u = u->next; 200 206 } 201 207 } ··· 221 227 DWORD data; 222 228 LPTSTR buffer = NULL; 223 229 DWORD buffersize = 0; 230 + QString description; 224 231 225 232 // get device desriptor first 226 233 // for some reason not doing so results in bad things (tm) ··· 238 245 239 246 // now get the hardware id, which contains PID and VID. 240 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 261 SPDRP_HARDWAREID,&data, (PBYTE)buffer, buffersize, &buffersize)) { 242 262 if(GetLastError() == ERROR_INSUFFICIENT_BUFFER) { 243 263 if(buffer) free(buffer); ··· 248 268 break; 249 269 } 250 270 } 271 + qDebug() << "SetupDiGetDeviceRegistryProperty" << description << QString::fromWCharArray(buffer); 251 272 252 273 unsigned int vid, pid, rev; 253 274 if(_stscanf(buffer, _TEXT("USB\\Vid_%x&Pid_%x&Rev_%x"), &vid, &pid, &rev) != 3) { ··· 256 277 else { 257 278 uint32_t id; 258 279 id = vid << 16 | pid; 259 - usbids.append(id); 280 + usbids.insert(id, description); 260 281 qDebug("VID: %04x PID: %04x", vid, pid); 261 282 } 262 283 if(buffer) free(buffer);
+1
rbutil/rbutilqt/detect.h
··· 39 39 static QString userName(void); 40 40 static QString osVersionString(void); 41 41 static QList<uint32_t> listUsbIds(void); 42 + static QMap<uint32_t, QString> listUsbDevices(void); 42 43 43 44 static QUrl systemProxy(void); 44 45 static QString installedVersion(QString mountpoint);
+7 -5
rbutil/rbutilqt/sysinfo.cpp
··· 42 42 info += tr("<b>Permissions:</b><br/>%1<hr/>").arg(Detect::userPermissionsString()); 43 43 #endif 44 44 info += tr("<b>Attached USB devices:</b><br/>"); 45 - QList<uint32_t> usbids = Detect::listUsbIds(); 46 - for(int i = 0; i < usbids.size(); i++) 47 - info += tr("VID: %1 PID: %2<br/>") 48 - .arg((usbids.at(i)&0xffff0000)>>16, 4, 16, QChar('0')) 49 - .arg(usbids.at(i)&0xffff, 4, 16, QChar('0')); 45 + QMap<uint32_t, QString> usbids = Detect::listUsbDevices(); 46 + QList<uint32_t> usbkeys = usbids.keys(); 47 + for(int i = 0; i < usbkeys.size(); i++) 48 + info += tr("VID: %1 PID: %2, %3<br/>") 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 53 ui.textBrowser->setHtml(info); 52 54 }