]> sigrok.org Git - pulseview.git/commitdiff
device manager: Move filter for supported devices to the scan routine
authorGerhard Sittig <redacted>
Sun, 11 Jun 2017 09:10:33 +0000 (11:10 +0200)
committerUwe Hermann <redacted>
Tue, 27 Jun 2017 11:20:06 +0000 (13:20 +0200)
Move the check for supported monotonic rate devices from the call site
into the actual scan routine.

The scan routine already used to (store and) return a variable length
set of found devices including none, and call sites can cope with this
situation. Pending extensions may call the scan routine several times,
and callers shall not duplicate the extra test condition. While we
expect the specific test for what's supported to change in the future.

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) {