X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Fdecode%2Fdecoder.hpp;h=2a7ef11ea14365fe8947e41154d493a3d46d9425;hb=e77de61fbc19633c77cc196332ae79c26d9ca35d;hp=105c6f744b0cf897df19e64d7237a06ddf50fb67;hpb=04394ded8776d2163c1e815ccc8170b81d76b028;p=pulseview.git diff --git a/pv/data/decode/decoder.hpp b/pv/data/decode/decoder.hpp index 105c6f74..2a7ef11e 100644 --- a/pv/data/decode/decoder.hpp +++ b/pv/data/decode/decoder.hpp @@ -14,8 +14,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * along with this program; if not, see . */ #ifndef PULSEVIEW_PV_DATA_DECODE_DECODER_HPP @@ -24,9 +23,16 @@ #include #include #include +#include #include +#include + +using std::map; +using std::string; +using std::vector; + struct srd_decoder; struct srd_decoder_inst; struct srd_channel; @@ -41,6 +47,28 @@ 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 +{ + uint8_t bin_class_id; + char* name; + char* description; +}; + + class Decoder { public: @@ -50,33 +78,37 @@ public: const srd_decoder* decoder() const; + const char* name() const; + bool shown() const; void show(bool show = true); - const std::map >& channels() const; - void set_channels(std::map > channels); + const vector& channels() const; + void set_channels(vector channels); - const std::map& options() const; + 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(); - std::set< std::shared_ptr > get_data(); + uint8_t get_binary_class_count() const; + const DecodeBinaryClassInfo* get_binary_class(uint8_t id) const; private: const srd_decoder *const decoder_; bool shown_; - std::map > - channels_; - std::map options_; + vector channels_; + vector bin_classes_; + map options_; + srd_decoder_inst *decoder_inst_; }; } // namespace decode