]> sigrok.org Git - pulseview.git/blobdiff - pv/prop/binding/deviceoptions.cpp
Implemented getter behaviour in DeviceOptions
[pulseview.git] / pv / prop / binding / deviceoptions.cpp
index b6f2f13605e54b15a34330637e0cf53cf82d44e7..bc367673ed44330e8b89e0e32ae7b495d95dd3bc 100644 (file)
@@ -20,6 +20,8 @@
 
 #include <boost/bind.hpp>
 
+#include <QDebug>
+
 #include "deviceoptions.h"
 
 #include <pv/prop/enum.h>
@@ -86,7 +88,7 @@ void DeviceOptions::expose_enum(const struct sr_config_info *info,
 {
        _properties.push_back(shared_ptr<Property>(
                new Enum(QString(info->name), values,
-                       function<const void* ()>(),
+                       bind(getter, _sdi, key),
                        bind(sr_config_set, _sdi, key, _1))));
 }
 
@@ -151,6 +153,18 @@ void DeviceOptions::bind_vdiv(const struct sr_config_info *info)
        expose_enum(info, values, SR_CONF_VDIV);
 }
 
+const void* DeviceOptions::enum_getter(
+       const struct sr_dev_inst *sdi, int key)
+{
+       const void *data = NULL;
+       if(sr_config_get(sdi->driver, key, &data, sdi) != SR_OK) {
+               qDebug() <<
+                       "WARNING: Failed to get value of config id" << key;
+               return NULL;
+       }
+       return data;
+}
+
 } // binding
 } // prop
 } // pv