]> sigrok.org Git - pulseview.git/blobdiff - pv/data/decode/decoder.cpp
Do not attempt to decode when required probes have not been specified
[pulseview.git] / pv / data / decode / decoder.cpp
index 592a746c7f612cc71dd34a914c2ab91ec1f8e8f7..3767e4853b3bbe92299a6034d8140cde90424ca4 100644 (file)
@@ -33,7 +33,8 @@ namespace data {
 namespace decode {
 
 Decoder::Decoder(const srd_decoder *const dec) :
-       _decoder(dec)
+       _decoder(dec),
+       _shown(true)
 {
 }
 
@@ -49,6 +50,16 @@ const srd_decoder* Decoder::decoder() const
        return _decoder;
 }
 
+bool Decoder::shown() const
+{
+       return _shown;
+}
+
+void Decoder::show(bool show)
+{
+       _shown = show;
+}
+
 const map<const srd_probe*, shared_ptr<view::LogicSignal> >&
 Decoder::probes() const
 {
@@ -73,6 +84,18 @@ void Decoder::set_option(const char *id, GVariant *value)
        _options[id] = value;
 }
 
+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 *const session) const
 {