X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fdevices%2Fdevice.cpp;h=4ce055965167bc842d766269ff259f8cc45454fa;hb=5f9a52096e07e399d76da6724c1cf56bf4511c9f;hp=403acc4896c684d82d3ee35cf279bc2c945c700e;hpb=7bb0fbf4d3809dbbd0fe5b35fc7e475b1065ae20;p=pulseview.git
diff --git a/pv/devices/device.cpp b/pv/devices/device.cpp
index 403acc4..4ce0559 100644
--- a/pv/devices/device.cpp
+++ b/pv/devices/device.cpp
@@ -14,22 +14,25 @@
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ * along with this program; if not, see .
*/
#include
+#include
+
+#include
+#include
+#include
#include
#include "device.hpp"
-using std::map;
-using std::set;
+using std::is_same;
+using std::shared_ptr;
using sigrok::ConfigKey;
using sigrok::Capability;
-using sigrok::Error;
using Glib::VariantBase;
using Glib::Variant;
@@ -37,29 +40,23 @@ using Glib::Variant;
namespace pv {
namespace devices {
-Device::Device()
-{
-}
-
Device::~Device()
{
if (session_)
session_->remove_datafeed_callbacks();
}
-std::shared_ptr Device::session() const
+shared_ptr Device::session() const
{
return session_;
}
-std::shared_ptr Device::device() const
+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)
@@ -69,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()