]> sigrok.org Git - pulseview.git/blobdiff - pv/data/decode/decoder.hpp
Continue work on SRD_OUTPUT_LOGIC
[pulseview.git] / pv / data / decode / decoder.hpp
index 2c4337478135fdc40d63c82c63316a59617f188e..ac1052e62c9dfcb1cc270455686bfc0b619e003f 100644 (file)
 
 #include <QObject>
 
-#include <pv/data/signalbase.hpp>
 #include <pv/data/decode/row.hpp>
 
 using std::deque;
 using std::map;
+using std::shared_ptr;
 using std::string;
 using std::vector;
 
@@ -82,13 +82,19 @@ struct DecodeChannel
        uint16_t id;     ///< Global numerical ID for the decode channels in the stack
        uint16_t bit_id; ///< Tells which bit within a sample represents this channel
        const bool is_optional;
-       const pv::data::SignalBase *assigned_signal;
+       shared_ptr<const pv::data::SignalBase> assigned_signal;
        const QString name, desc;
        int initial_pin_state;
        const shared_ptr<Decoder> decoder_;
        const srd_channel *pdch_;
 };
 
+struct DecoderLogicOutputChannel {
+       DecoderLogicOutputChannel (QString id, QString desc) :
+               id(id), desc(desc) {};
+       QString id, desc;
+};
+
 struct DecodeBinaryClassInfo
 {
        uint32_t bin_class_id;
@@ -139,6 +145,9 @@ public:
        uint32_t get_binary_class_count() const;
        const DecodeBinaryClassInfo* get_binary_class(uint32_t id) const;
 
+       bool has_logic_output() const;
+       const vector<DecoderLogicOutputChannel> logic_output_channels() const;
+
 Q_SIGNALS:
        void annotation_visibility_changed();