X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdata%2Fdecode%2Fdecoder.cpp;h=8cde226da847327395bcb306e2cc28c4b0d6b0b0;hp=0404227eeaef48a92da5581e93f29d16e7e42bf7;hb=13a3528cfa6ed4dc18c44aae2353ac145b0160cc;hpb=dd048a7ec035447c051c7937ce04aca5be065b4e diff --git a/pv/data/decode/decoder.cpp b/pv/data/decode/decoder.cpp index 0404227e..8cde226d 100644 --- a/pv/data/decode/decoder.cpp +++ b/pv/data/decode/decoder.cpp @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include #include #include "decoder.h" @@ -84,8 +85,19 @@ void Decoder::set_option(const char *id, GVariant *value) _options[id] = value; } -srd_decoder_inst* Decoder::create_decoder_inst( - srd_session *const session) const +bool Decoder::have_required_probes() const +{ + for (GSList *p = _decoder->probes; p; p = p->next) { + const srd_probe *const probe = (const srd_probe*)p->data; + assert(probe); + if (_probes.find(probe) == _probes.end()) + return false; + } + + return true; +} + +srd_decoder_inst* Decoder::create_decoder_inst(srd_session *session, int unit_size) const { GHashTable *const opt_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify)g_variant_unref); @@ -121,7 +133,7 @@ srd_decoder_inst* Decoder::create_decoder_inst( g_hash_table_insert(probes, (*i).first->id, gvar); } - srd_inst_probe_set_all(decoder_inst, probes); + srd_inst_probe_set_all(decoder_inst, probes, unit_size); return decoder_inst; }