-
- return VariantBase::cast_dynamic<Glib::Variant<guint64>>(
- device_->config_get(ConfigKey::SAMPLERATE)).get();
+ }
+
+ VariantBase value;
+ try {
+ value = device_->config_get(key);
+ } catch (const sigrok::Error &e) {
+ qWarning() << QApplication::tr("Querying config key %1 resulted in %2")
+ .arg(QString::fromStdString(key->identifier()), e.what());
+ return default_value;
+ }
+
+ if (is_same<T, uint32_t>::value)
+ return VariantBase::cast_dynamic<Glib::Variant<guint32>>(value).get();
+ if (is_same<T, int32_t>::value)
+ return VariantBase::cast_dynamic<Glib::Variant<gint32>>(value).get();
+ if (is_same<T, uint64_t>::value)
+ return VariantBase::cast_dynamic<Glib::Variant<guint64>>(value).get();
+ if (is_same<T, int64_t>::value)
+ return VariantBase::cast_dynamic<Glib::Variant<gint64>>(value).get();
+
+ qWarning() << QApplication::tr("Unknown type supplied when attempting to query %1")
+ .arg(QString::fromStdString(key->identifier()));
+ return default_value;