X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Fdecode%2Fdecoder.hpp;h=282cfe557d0740682ef17d82318ea4d9443463c8;hb=cbb2e4da8042495531b406f745ee9d9e20448ef6;hp=55742c6070e5a020c00042b2c8894e744b13986e;hpb=72486b789078f024e4f3404f81118c03b03e2b70;p=pulseview.git diff --git a/pv/data/decode/decoder.hpp b/pv/data/decode/decoder.hpp index 55742c60..282cfe55 100644 --- a/pv/data/decode/decoder.hpp +++ b/pv/data/decode/decoder.hpp @@ -27,6 +27,8 @@ #include +#include + using std::map; using std::string; using std::vector; @@ -40,12 +42,33 @@ namespace pv { namespace data { -struct DecodeChannel; class Logic; class SignalBase; namespace decode { +class Decoder; + +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; + const QString name, desc; + int initial_pin_state; + const shared_ptr decoder_; + const srd_channel *pdch_; +}; + +struct DecodeBinaryClassInfo +{ + uint32_t bin_class_id; + char* name; + char* description; +}; + + class Decoder { public: @@ -55,11 +78,13 @@ public: const srd_decoder* decoder() const; + const char* name() const; + bool shown() const; void show(bool show = true); - const vector& channels() const; - void set_channels(vector channels); + const vector& channels() const; + void set_channels(vector channels); const map& options() const; @@ -72,12 +97,16 @@ public: srd_decoder_inst* create_decoder_inst(srd_session *session); void invalidate_decoder_inst(); + uint32_t get_binary_class_count() const; + const DecodeBinaryClassInfo* get_binary_class(uint32_t id) const; + private: - const srd_decoder *const decoder_; + const srd_decoder* const srd_decoder_; bool shown_; - vector channels_; + vector channels_; + vector bin_classes_; map options_; srd_decoder_inst *decoder_inst_; };