X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=pv%2Fdata%2Fdecodesignal.hpp;h=1444feae5e8d431e4c498d51735dbf3d922e3af6;hb=132a5c6d4b3c220d1cb6d942bf9d7e8b180ab1c3;hp=0f3a0330e3ad9029ad742d796294452d091f91ef;hpb=ecd07c20d34ce940163ac2e7fb26cb7ceac565bb;p=pulseview.git diff --git a/pv/data/decodesignal.hpp b/pv/data/decodesignal.hpp index 0f3a033..1444fea 100644 --- a/pv/data/decodesignal.hpp +++ b/pv/data/decodesignal.hpp @@ -20,6 +20,7 @@ #ifndef PULSEVIEW_PV_DATA_DECODESIGNAL_HPP #define PULSEVIEW_PV_DATA_DECODESIGNAL_HPP +#include #include #include @@ -29,6 +30,7 @@ #include using std::list; +using std::unordered_set; using std::vector; using std::shared_ptr; @@ -43,14 +45,27 @@ class Row; class DecoderStack; class Logic; +class SignalBase; class SignalData; +struct DecodeChannel +{ + uint16_t id; // Also 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_; +}; + class DecodeSignal : public SignalBase { Q_OBJECT public: - DecodeSignal(shared_ptr decoder_stack); + DecodeSignal(shared_ptr decoder_stack, + const unordered_set< shared_ptr > &all_signals); virtual ~DecodeSignal(); bool is_decode_signal() const; @@ -63,6 +78,12 @@ public: QString error_message() const; + const list get_channels() const; + void auto_assign_signals(); + void assign_signal(const uint16_t channel_id, const SignalBase *signal); + + void set_initial_pin_state(const uint16_t channel_id, const int init_state); + vector visible_rows() const; /** @@ -73,14 +94,20 @@ public: const decode::Row &row, uint64_t start_sample, uint64_t end_sample) const; +private: + void update_channel_list(); + Q_SIGNALS: void new_annotations(); + void channels_updated(); private Q_SLOTS: void on_new_annotations(); private: shared_ptr decoder_stack_; + const unordered_set< shared_ptr > &all_signals_; + list channels_; }; } // namespace data