X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdata%2Fsignalbase.cpp;h=d2dd75ab60f684b65a02611a24c6b4b6283baedb;hp=55397edfc4177bd7fb60d264f43d49791db80523;hb=050b5a6c7d4864cff968d171b6cc4e68ea478835;hpb=bf0edd2b0cbb5f4bd5d69b0f00bcea7d037e2287 diff --git a/pv/data/signalbase.cpp b/pv/data/signalbase.cpp index 55397edf..d2dd75ab 100644 --- a/pv/data/signalbase.cpp +++ b/pv/data/signalbase.cpp @@ -19,8 +19,15 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "analog.hpp" +#include "logic.hpp" #include "signalbase.hpp" +#include "signaldata.hpp" +#include "decode/row.hpp" +#include + +using std::dynamic_pointer_cast; using std::shared_ptr; using sigrok::Channel; @@ -34,6 +41,8 @@ const int SignalBase::ColourBGAlpha = 8*256/100; SignalBase::SignalBase(shared_ptr channel) : channel_(channel) { + if (channel_) + internal_name_ = QString::fromStdString(channel_->name()); } shared_ptr SignalBase::channel() const @@ -46,6 +55,11 @@ QString SignalBase::name() const return (channel_) ? QString::fromStdString(channel_->name()) : name_; } +QString SignalBase::internal_name() const +{ + return internal_name_; +} + void SignalBase::set_name(QString name) { if (channel_) @@ -99,5 +113,44 @@ QColor SignalBase::bgcolour() const return bgcolour_; } +void SignalBase::set_data(shared_ptr data) +{ + data_ = data; +} + +shared_ptr SignalBase::analog_data() const +{ + if (type() == ChannelType::ANALOG) + return dynamic_pointer_cast(data_); + else + return shared_ptr(); +} + +shared_ptr SignalBase::logic_data() const +{ + if (type() == ChannelType::LOGIC) + return dynamic_pointer_cast(data_); + else + return shared_ptr(); +} + +#ifdef ENABLE_DECODE +bool SignalBase::is_decode_signal() const +{ + return (decoder_stack_ != nullptr); +} + +std::shared_ptr SignalBase::decoder_stack() const +{ + return decoder_stack_; +} + +void SignalBase::set_decoder_stack(std::shared_ptr + decoder_stack) +{ + decoder_stack_ = decoder_stack; +} +#endif + } // namespace data } // namespace pv