- struct sr_dev_driver **drivers = sr_driver_list();
- for (int i = 0; drivers[i]; ++i)
- _drivers.addItem(QString("%1 (%2)").arg(
- drivers[i]->longname).arg(drivers[i]->name),
- qVariantFromValue((void*)drivers[i]));
+ for (auto entry : device_manager_.context()->drivers()) {
+ auto name = entry.first;
+ auto driver = entry.second;
+ /**
+ * 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.
+ */
+ bool supported_device = driver->config_check(
+ ConfigKey::LOGIC_ANALYZER, ConfigKey::DEVICE_OPTIONS) |
+ driver->config_check(
+ ConfigKey::OSCILLOSCOPE, ConfigKey::DEVICE_OPTIONS);
+
+ if (supported_device)
+ drivers_.addItem(QString("%1 (%2)").arg(
+ driver->long_name().c_str()).arg(name.c_str()),
+ qVariantFromValue(driver));
+ }