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.
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();
+ /*
+ * 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) {