]> sigrok.org Git - pulseview.git/blobdiff - pv/devicemanager.cpp
device manager: Move filter for supported devices to the scan routine
[pulseview.git] / pv / devicemanager.cpp
index 540f88150e4cf117be1ca1fa12762e8b734f3943..ac6ce6fb433da3fa29eefa9ba551c043c70f63b5 100644 (file)
@@ -68,20 +68,7 @@ DeviceManager::DeviceManager(shared_ptr<Context> context) :
                progress->setLabelText(QObject::tr("Scanning for %1...")
                        .arg(QString::fromStdString(entry.first)));
 
                progress->setLabelText(QObject::tr("Scanning for %1...")
                        .arg(QString::fromStdString(entry.first)));
 
-               /**
-                * We currently only support devices that can deliver
-                * samples at a fixed samplerate i.e. oscilloscopes and
-                * logic analysers.
-                * @todo Add support for non-monotonic devices i.e. DMMs
-                * and sensors.
-                */
-               const auto keys = (entry.second)->config_keys();
-
-               bool supported_device = keys.count(ConfigKey::LOGIC_ANALYZER) |
-                       keys.count(ConfigKey::OSCILLOSCOPE);
-
-               if (supported_device)
-                       driver_scan(entry.second, map<const ConfigKey *, VariantBase>());
+               driver_scan(entry.second, map<const ConfigKey *, VariantBase>());
 
                progress->setValue(entry_num++);
                QApplication::processEvents();
 
                progress->setValue(entry_num++);
                QApplication::processEvents();
@@ -114,6 +101,18 @@ DeviceManager::driver_scan(
 
        assert(driver);
 
 
        assert(driver);
 
+       /*
+        * We currently only support devices that can deliver samples at
+        * a fixed samplerate (i.e. oscilloscopes and logic analysers).
+        *
+        * @todo Add support for non-monotonic devices (DMMs, sensors, etc).
+        */
+       const auto keys = driver->config_keys();
+       bool supported_device = keys.count(ConfigKey::LOGIC_ANALYZER) |
+               keys.count(ConfigKey::OSCILLOSCOPE);
+       if (!supported_device)
+               return driver_devices;
+
        // Remove any device instances from this driver from the device
        // list. They will not be valid after the scan.
        devices_.remove_if([&](shared_ptr<devices::HardwareDevice> device) {
        // Remove any device instances from this driver from the device
        // list. They will not be valid after the scan.
        devices_.remove_if([&](shared_ptr<devices::HardwareDevice> device) {