X-Git-Url: http://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fprop%2Fbinding%2Fdeviceoptions.cpp;fp=pv%2Fprop%2Fbinding%2Fdeviceoptions.cpp;h=6da16652f2cc0dca814491b46c30e384fa29bc30;hp=d116521aa435524f5ac8871fb8b06a625e57905f;hb=19adbc2c342b190161ec1223377a3619974b91f7;hpb=5b8b1e47bd0d8c0d2519f83855a84f1820f1955e diff --git a/pv/prop/binding/deviceoptions.cpp b/pv/prop/binding/deviceoptions.cpp index d116521a..6da16652 100644 --- a/pv/prop/binding/deviceoptions.cpp +++ b/pv/prop/binding/deviceoptions.cpp @@ -27,11 +27,14 @@ #include "deviceoptions.h" +#include #include #include #include #include +#include + using boost::bind; using boost::function; using boost::optional; @@ -45,11 +48,13 @@ namespace pv { namespace prop { namespace binding { -DeviceOptions::DeviceOptions(const sr_dev_inst *sdi, +DeviceOptions::DeviceOptions(shared_ptr dev_inst, const sr_probe_group *group) : - _sdi(sdi), + _dev_inst(dev_inst), _group(group) { + assert(dev_inst); + sr_dev_inst *const sdi = dev_inst->dev_inst(); assert(sdi); GVariant *gvar_opts, *gvar_list; @@ -71,7 +76,7 @@ DeviceOptions::DeviceOptions(const sr_dev_inst *sdi, const int key = info->key; - if (sr_config_list(_sdi->driver, _sdi, group, + if (sr_config_list(sdi->driver, sdi, group, key, &gvar_list) != SR_OK) gvar_list = NULL; @@ -144,9 +149,12 @@ void DeviceOptions::config_setter( void DeviceOptions::bind_bool(const QString &name, int key) { + sr_dev_inst *const sdi = _dev_inst->dev_inst(); + assert(sdi); + _properties.push_back(shared_ptr( - new Bool(name, bind(config_getter, _sdi, _group, key), - bind(config_setter, _sdi, _group, key, _1)))); + new Bool(name, bind(config_getter, sdi, _group, key), + bind(config_setter, sdi, _group, key, _1)))); } void DeviceOptions::bind_enum(const QString &name, int key, @@ -158,23 +166,29 @@ void DeviceOptions::bind_enum(const QString &name, int key, assert(gvar_list); + sr_dev_inst *const sdi = _dev_inst->dev_inst(); + assert(sdi); + g_variant_iter_init (&iter, gvar_list); while ((gvar = g_variant_iter_next_value (&iter))) values.push_back(make_pair(gvar, printer(gvar))); _properties.push_back(shared_ptr( new Enum(name, values, - bind(config_getter, _sdi, _group, key), - bind(config_setter, _sdi, _group, key, _1)))); + bind(config_getter, sdi, _group, key), + bind(config_setter, sdi, _group, key, _1)))); } void DeviceOptions::bind_int(const QString &name, int key, QString suffix, optional< std::pair > range) { + sr_dev_inst *const sdi = _dev_inst->dev_inst(); + assert(sdi); + _properties.push_back(shared_ptr( new Int(name, suffix, range, - bind(config_getter, _sdi, _group, key), - bind(config_setter, _sdi, _group, key, _1)))); + bind(config_getter, sdi, _group, key), + bind(config_setter, sdi, _group, key, _1)))); } QString DeviceOptions::print_gvariant(GVariant *const gvar)