X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdevices%2Fdevice.cpp;h=4ce055965167bc842d766269ff259f8cc45454fa;hp=855a1d82fca65019952b1baf46f21aef60c859de;hb=f4ab4b5c657e5613caba82feaa81a8a400e4f331;hpb=83b1c8d251386ac1980284c4668cbdd8e425550f diff --git a/pv/devices/device.cpp b/pv/devices/device.cpp index 855a1d8..4ce0559 100644 --- a/pv/devices/device.cpp +++ b/pv/devices/device.cpp @@ -18,11 +18,17 @@ */ #include +#include + +#include +#include +#include #include #include "device.hpp" +using std::is_same; using std::shared_ptr; using sigrok::ConfigKey; @@ -50,9 +56,7 @@ shared_ptr Device::device() const return device_; } -template -uint64_t Device::read_config(const sigrok::ConfigKey*, - const uint64_t); +template uint64_t Device::read_config(const sigrok::ConfigKey*, const uint64_t); template T Device::read_config(const ConfigKey *key, const T default_value) @@ -62,11 +66,33 @@ T Device::read_config(const ConfigKey *key, const T default_value) if (!device_) return default_value; - if (!device_->config_check(key, Capability::GET)) + if (!device_->config_check(key, Capability::GET)) { + qWarning() << QApplication::tr("Querying config key %1 is not allowed") + .arg(QString::fromStdString(key->identifier())); return default_value; - - return VariantBase::cast_dynamic>( - 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::value) + return VariantBase::cast_dynamic>(value).get(); + if (is_same::value) + return VariantBase::cast_dynamic>(value).get(); + if (is_same::value) + return VariantBase::cast_dynamic>(value).get(); + if (is_same::value) + return VariantBase::cast_dynamic>(value).get(); + + qWarning() << QApplication::tr("Unknown type supplied when attempting to query %1") + .arg(QString::fromStdString(key->identifier())); + return default_value; } void Device::start()