X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fbinding%2Fdevice.cpp;h=96217051f8433819cb9e0b575d8be28cc5a7e242;hb=fe1e6ad6ae644edd29ab226573e40561c9974694;hp=4c2321cf33ea66b80bff41a570248fd2c07adcbc;hpb=e639f241d0731bf402a7e4df335313d866f69fc6;p=pulseview.git diff --git a/pv/binding/device.cpp b/pv/binding/device.cpp index 4c2321cf..96217051 100644 --- a/pv/binding/device.cpp +++ b/pv/binding/device.cpp @@ -61,10 +61,6 @@ Device::Device(shared_ptr configurable) : auto capabilities = configurable->config_capabilities(key); - if (!capabilities.count(Capability::GET) || - !capabilities.count(Capability::SET)) - continue; - string name_str; try { name_str = key->description(); @@ -74,6 +70,13 @@ Device::Device(shared_ptr configurable) : const QString name = QString::fromStdString(name_str); + if (!capabilities.count(Capability::GET) || + !capabilities.count(Capability::SET)) { + qDebug() << QString(tr("Note for device developers: Ignoring device configuration capability '%1' " \ + "as it is missing GET and/or SET")).arg(name); + continue; + } + const Property::Getter get = [&, key]() { return configurable_->config_get(key); }; const Property::Setter set = [&, key](Glib::VariantBase value) { @@ -91,6 +94,12 @@ Device::Device(shared_ptr configurable) : bind_int(name, "", "%", pair(0, 100), get, set); break; + case SR_CONF_LIMIT_FRAMES: + // Value 0 means that there is no limit + bind_int(name, "", "", pair(0, 1000000), get, set, + tr("No Limit")); + break; + case SR_CONF_PATTERN_MODE: case SR_CONF_BUFFERSIZE: case SR_CONF_TRIGGER_SOURCE: @@ -98,6 +107,7 @@ Device::Device(shared_ptr configurable) : case SR_CONF_COUPLING: case SR_CONF_CLOCK_EDGE: case SR_CONF_DATA_SOURCE: + case SR_CONF_EXTERNAL_CLOCK_SOURCE: bind_enum(name, "", key, capabilities, get, set); break; @@ -105,6 +115,7 @@ Device::Device(shared_ptr configurable) : case SR_CONF_EXTERNAL_CLOCK: case SR_CONF_RLE: case SR_CONF_POWER_OFF: + case SR_CONF_AVERAGING: bind_bool(name, "", get, set); break; @@ -127,6 +138,13 @@ Device::Device(shared_ptr configurable) : bind_int(name, "", "", pair(1, 500), get, set); break; + case SR_CONF_AVG_SAMPLES: + if (capabilities.count(Capability::LIST)) + bind_enum(name, "", key, capabilities, get, set, print_averages); + else + bind_int(name, "", "", pair(0, INT32_MAX), get, set); + break; + default: break; } @@ -169,13 +187,13 @@ void Device::bind_enum(const QString &name, const QString &desc, } void Device::bind_int(const QString &name, const QString &desc, QString suffix, - optional< pair > range, - Property::Getter getter, Property::Setter setter) + optional< pair > range, Property::Getter getter, + Property::Setter setter, QString special_value_text) { assert(configurable_); properties_.push_back(shared_ptr(new Int(name, desc, suffix, - range, getter, setter))); + range, getter, setter, special_value_text))); } QString Device::print_timebase(Glib::VariantBase gvar) @@ -206,5 +224,12 @@ QString Device::print_probe_factor(Glib::VariantBase gvar) return QString("%1x").arg(factor); } +QString Device::print_averages(Glib::VariantBase gvar) +{ + uint64_t avg; + avg = g_variant_get_uint64(gvar.gobj()); + return QString("%1").arg(avg); +} + } // namespace binding } // namespace pv