X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Fdecode%2Fdecoder.hpp;h=4baf86a026aeb4b62bf140f6af273ebae8d4156c;hb=6a26fc4417798ab21654197e105e707a14d462f0;hp=1b655662bcb707dfe5fd83dbc847164e81bc04a2;hpb=c063290ac7189bdd15221450f598504f43286b43;p=pulseview.git diff --git a/pv/data/decode/decoder.hpp b/pv/data/decode/decoder.hpp index 1b655662..4baf86a0 100644 --- a/pv/data/decode/decoder.hpp +++ b/pv/data/decode/decoder.hpp @@ -23,13 +23,16 @@ #include #include #include +#include #include +#include +#include + using std::map; -using std::set; -using std::shared_ptr; using std::string; +using std::vector; struct srd_decoder; struct srd_decoder_inst; @@ -45,6 +48,37 @@ class SignalBase; namespace decode { +class Decoder; + +struct AnnotationClass +{ + size_t id; + char* name; + char* description; + Row* row; + bool visible; +}; + +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: @@ -52,33 +86,47 @@ public: virtual ~Decoder(); - const srd_decoder* decoder() const; + const srd_decoder* get_srd_decoder() const; + + const char* name() const; bool shown() const; void show(bool show = true); - const map >& channels() const; - void set_channels(map > channels); + const vector& channels() const; + void set_channels(vector channels); const map& options() const; void set_option(const char *id, GVariant *value); + void apply_all_options(); + bool have_required_channels() const; - srd_decoder_inst* create_decoder_inst(srd_session *session) const; + srd_decoder_inst* create_decoder_inst(srd_session *session); + void invalidate_decoder_inst(); + + vector get_rows(); + Row* get_row_by_id(size_t id); + + vector ann_classes() const; + AnnotationClass* get_ann_class_by_id(size_t id); - set< shared_ptr > get_data(); + 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_; - map > channels_; + vector channels_; + vector rows_; + vector ann_classes_; + vector bin_classes_; map options_; + srd_decoder_inst *decoder_inst_; }; } // namespace decode