diff --git a/kdecore/CMakeLists.txt b/kdecore/CMakeLists.txt index f877f6d6..259f8972 100644 --- a/kdecore/CMakeLists.txt +++ b/kdecore/CMakeLists.txt @@ -445,5 +445,7 @@ install( FILES pci.ids usb.ids + kde4_pci.ids + kde4_usb.ids DESTINATION ${KDE4_DATA_INSTALL_DIR}/kdevicedatabase ) diff --git a/kdecore/kde4_pci.ids b/kdecore/kde4_pci.ids new file mode 100644 index 00000000..5bc48aaa --- /dev/null +++ b/kdecore/kde4_pci.ids @@ -0,0 +1,2 @@ +# +# KDE IDs, missing in the upstream database diff --git a/kdecore/kde4_usb.ids b/kdecore/kde4_usb.ids new file mode 100644 index 00000000..2735668e --- /dev/null +++ b/kdecore/kde4_usb.ids @@ -0,0 +1,19 @@ +# +# KDE IDs, missing in the upstream database + +1038 SteelSeries ApS + 1729 SteelSeries Rival 110 Gaming Mouse + +13d3 IMC Networks +# https://linux-hardware.org/?probe=e8349bba13 + 56a2 USB2.0 HD UVC WebCam +# https://linux-hardware.org/?probe=81f7a796be + 56bc Integrated Camera + +0480 Toshiba America Inc +# https://linux-hardware.org/?probe=45c6c458bc + 0210 External USB 3.0 1TB + +03f0 HP, Inc +# https://linux-hardware.org/?probe=db3540f085 + 122a LaserJet 200 colorMFP M276nw diff --git a/kdecore/tests/kdevicedatabasetest.cpp b/kdecore/tests/kdevicedatabasetest.cpp index 40e0140b..989a2654 100644 --- a/kdecore/tests/kdevicedatabasetest.cpp +++ b/kdecore/tests/kdevicedatabasetest.cpp @@ -54,4 +54,25 @@ void KDeviceDatabaseTest::testUSB() QCOMPARE(m_devicedb.lookupUSBProtocol("02", "02", "00"), QLatin1String("None")); } +void KDeviceDatabaseTest::testKDE4PCI() +{ + if (!m_iskdelibsinstalled) { + QSKIP("kdelibs not installed", SkipAll); + } + + // no IDs yet +} + +void KDeviceDatabaseTest::testKDE4USB() +{ + if (!m_iskdelibsinstalled) { + QSKIP("kdelibs not installed", SkipAll); + } + + QCOMPARE(m_devicedb.lookupUSBVendor("1038"), QLatin1String("SteelSeries ApS")); + QCOMPARE(m_devicedb.lookupUSBDevice("1038", "1729"), QLatin1String("SteelSeries Rival 110 Gaming Mouse")); + QCOMPARE(m_devicedb.lookupUSBVendor("13d3"), QLatin1String("IMC Networks")); + QCOMPARE(m_devicedb.lookupUSBDevice("13d3", "56a2"), QLatin1String("USB2.0 HD UVC WebCam")); +} + #include "moc_kdevicedatabasetest.cpp" diff --git a/kdecore/tests/kdevicedatabasetest.h b/kdecore/tests/kdevicedatabasetest.h index 439ace8f..81450087 100644 --- a/kdecore/tests/kdevicedatabasetest.h +++ b/kdecore/tests/kdevicedatabasetest.h @@ -32,6 +32,9 @@ private Q_SLOTS: void testPCI(); void testUSB(); + void testKDE4PCI(); + void testKDE4USB(); + private: bool m_iskdelibsinstalled; KDeviceDatabase m_devicedb; diff --git a/kdecore/usb.ids b/kdecore/usb.ids index 81d0c21e..8e19afff 100644 --- a/kdecore/usb.ids +++ b/kdecore/usb.ids @@ -15723,7 +15723,6 @@ 1361 Ideazon Sensei 1410 SRW-S1 [Simraceway Steering Wheel] 1720 Mouse - 1729 SteelSeries Rival 110 Gaming Mouse 1039 devolo AG 0824 1866 802.11bg [Texas Instruments TNETW1450] 2140 dsl+ 1100 duo diff --git a/kdecore/util/kdevicedatabase.cpp b/kdecore/util/kdevicedatabase.cpp index d62e2f1b..fa53b899 100644 --- a/kdecore/util/kdevicedatabase.cpp +++ b/kdecore/util/kdevicedatabase.cpp @@ -206,25 +206,37 @@ bool KDeviceDatabasePrivate::readPCIDatabase() return true; } + pcivendorsmap.clear(); + pcidevicesmap.clear(); + pciclassesmap.clear(); + pcisubclassesmap.clear(); + pciprotocolsmap.clear(); + const QString pciids = KStandardDirs::locate("data", QString::fromLatin1("kdevicedatabase/pci.ids")); QFile pciidsfile(pciids); if (!pciidsfile.open(QFile::ReadOnly)) { kWarning() << "PCI IDs database not found"; return false; } - - pcivendorsmap.clear(); - pcidevicesmap.clear(); - pciclassesmap.clear(); - pcisubclassesmap.clear(); - pciprotocolsmap.clear(); extractIDs( &pciidsfile, &pcivendorsmap, &pcidevicesmap, &pciclassesmap, &pcisubclassesmap, &pciprotocolsmap ); - // qDebug() << Q_FUNC_INFO << pcivendorsmap; + const QString kde4pciids = KStandardDirs::locate("data", QString::fromLatin1("kdevicedatabase/kde4_pci.ids")); + QFile kde4pciidsfile(kde4pciids); + if (!kde4pciidsfile.open(QFile::ReadOnly)) { + kDebug() << "KDE PCI IDs database not found"; + } else { + extractIDs( + &kde4pciidsfile, + &pcivendorsmap, &pcidevicesmap, + &pciclassesmap, &pcisubclassesmap, &pciprotocolsmap + ); + } + + // qDebug() << Q_FUNC_INFO << pcivendorsmap; m_pcicached = true; return true; } @@ -234,26 +246,38 @@ bool KDeviceDatabasePrivate::readUSBDatabase() if (m_usbcached) { return true; } - - const QString usbids = KStandardDirs::locate("data", QString::fromLatin1("kdevicedatabase/usb.ids")); - QFile usbidsfile(usbids); - if (!usbidsfile.open(QFile::ReadOnly)) { - kWarning() << "USB IDs database not found"; - return false; - } usbvendorsmap.clear(); usbdevicesmap.clear(); usbclassesmap.clear(); usbsubclassesmap.clear(); usbprotocolsmap.clear(); + + const QString usbids = KStandardDirs::locate("data", QString::fromLatin1("kdevicedatabase/usb.ids")); + QFile usbidsfile(usbids); + if (!usbidsfile.open(QFile::ReadOnly)) { + kWarning() << "USB IDs database not found"; + return false; + } extractIDs( &usbidsfile, &usbvendorsmap, &usbdevicesmap, &usbclassesmap, &usbsubclassesmap, &usbprotocolsmap ); - // qDebug() << Q_FUNC_INFO << usbvendorsmap; + const QString kde4usbids = KStandardDirs::locate("data", QString::fromLatin1("kdevicedatabase/kde4_usb.ids")); + QFile kde4usbidsfile(kde4usbids); + if (!kde4usbidsfile.open(QFile::ReadOnly)) { + kDebug() << "KDE USB IDs database not found"; + } else { + extractIDs( + &kde4usbidsfile, + &usbvendorsmap, &usbdevicesmap, + &usbclassesmap, &usbsubclassesmap, &usbprotocolsmap + ); + } + + // qDebug() << Q_FUNC_INFO << usbvendorsmap; m_usbcached = true; return true; }