for (auto entry : context->drivers()) {
if (!do_scan)
break;
+
+ // Skip drivers we won't scan anyway
+ if (!driver_supported(entry.second))
+ continue;
+
progress->setLabelText(QObject::tr("Scanning for %1...")
.arg(QString::fromStdString(entry.first)));
return result;
}
-list< shared_ptr<devices::HardwareDevice> >
-DeviceManager::driver_scan(
- shared_ptr<Driver> driver, map<const ConfigKey *, VariantBase> drvopts)
+bool DeviceManager::driver_supported(shared_ptr<Driver> driver) const
{
- list< shared_ptr<devices::HardwareDevice> > driver_devices;
-
- 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 keys.count(ConfigKey::LOGIC_ANALYZER) | keys.count(ConfigKey::OSCILLOSCOPE);
+}
+
+list< shared_ptr<devices::HardwareDevice> >
+DeviceManager::driver_scan(
+ shared_ptr<Driver> driver, map<const ConfigKey *, VariantBase> drvopts)
+{
+ list< shared_ptr<devices::HardwareDevice> > driver_devices;
+
+ assert(driver);
+
+ if (!driver_supported(driver))
return driver_devices;
// Remove any device instances from this driver from the device
const list< shared_ptr<devices::HardwareDevice> >& devices() const;
shared_ptr<devices::HardwareDevice> user_spec_device() const;
+ bool driver_supported(shared_ptr<sigrok::Driver> driver) const;
+
list< shared_ptr<devices::HardwareDevice> > driver_scan(
shared_ptr<sigrok::Driver> driver,
map<const sigrok::ConfigKey *, Glib::VariantBase> drvopts);