X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Fdecode%2Fdecoder.hpp;h=1b655662bcb707dfe5fd83dbc847164e81bc04a2;hb=HEAD;hp=7b1a20134acaccd7ce4adec6462d11a02c11ffcb;hpb=f54e68b03d5d24c7787962fcc701d8d52b0ec8ab;p=pulseview.git diff --git a/pv/data/decode/decoder.hpp b/pv/data/decode/decoder.hpp index 7b1a2013..ac1052e6 100644 --- a/pv/data/decode/decoder.hpp +++ b/pv/data/decode/decoder.hpp @@ -20,6 +20,7 @@ #ifndef PULSEVIEW_PV_DATA_DECODE_DECODER_HPP #define PULSEVIEW_PV_DATA_DECODE_DECODER_HPP +#include #include #include #include @@ -27,10 +28,13 @@ #include -#include +#include + #include +using std::deque; using std::map; +using std::shared_ptr; using std::string; using std::vector; @@ -50,13 +54,27 @@ namespace decode { class Decoder; -struct AnnotationClass +class AnnotationClass: public QObject { + Q_OBJECT + +public: + AnnotationClass(size_t _id, char* _name, char* _description, Row* _row); + + bool visible() const; + void set_visible(bool visible); + +Q_SIGNALS: + void visibility_changed(); + +public: size_t id; char* name; char* description; Row* row; - bool visible; + +private: + bool visible_; }; struct DecodeChannel @@ -64,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 assigned_signal; const QString name, desc; int initial_pin_state; const shared_ptr 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; @@ -79,8 +103,10 @@ struct DecodeBinaryClassInfo }; -class Decoder +class Decoder : public QObject { + Q_OBJECT + public: Decoder(const srd_decoder *const dec, uint8_t stack_level); @@ -119,6 +145,16 @@ public: uint32_t get_binary_class_count() const; const DecodeBinaryClassInfo* get_binary_class(uint32_t id) const; + bool has_logic_output() const; + const vector logic_output_channels() const; + +Q_SIGNALS: + void annotation_visibility_changed(); + +private Q_SLOTS: + void on_row_visibility_changed(); + void on_class_visibility_changed(); + private: const srd_decoder* const srd_decoder_; uint8_t stack_level_; @@ -126,8 +162,8 @@ private: bool visible_; vector channels_; - vector rows_; - vector ann_classes_; + deque rows_; + deque ann_classes_; vector bin_classes_; map options_; srd_decoder_inst *decoder_inst_;