]> sigrok.org Git - pulseview.git/blobdiff - pv/data/signalbase.hpp
Prepare for generated signals
[pulseview.git] / pv / data / signalbase.hpp
index c3e0d3d64ef56d02b289451c7cb3d54ca89c44f9..7e1196521d0d3ae303a8b6258e6f62dce71cb798 100644 (file)
@@ -35,6 +35,8 @@
 
 #include <libsigrokcxx/libsigrokcxx.hpp>
 
+#include "segment.hpp"
+
 using std::atomic;
 using std::condition_variable;
 using std::map;
@@ -55,6 +57,7 @@ class AnalogSegment;
 class DecoderStack;
 class Logic;
 class LogicSegment;
+class Segment;
 class SignalData;
 
 class SignalBase : public QObject
@@ -97,6 +100,7 @@ public:
 public:
        /**
         * Returns the underlying SR channel.
+        * Generated channels don't have a SR channel.
         */
        shared_ptr<sigrok::Channel> channel() const;
 
@@ -122,6 +126,13 @@ public:
         */
        unsigned int index() const;
 
+       /**
+        * Sets the index number of this channel, i.e. a unique ID assigned by
+        * the device driver or the logic bit index (see below).
+        * Only use immediately after creating the signal and leave it untouched after.
+        */
+       void set_index(unsigned int index);
+
        /**
         * Returns which bit of a given sample for this signal represents the
         * signal itself. This is relevant for compound signals like logic,
@@ -136,10 +147,16 @@ public:
        QString name() const;
 
        /**
-        * Gets the internal name of this signal, i.e. how the device calls it.
+        * Gets the internal name of this signal, i.e. how the device/generator calls it.
         */
        QString internal_name() const;
 
+       /**
+        * Sets the internal name of this signal, i.e. how the device/generator calls it.
+        * Only use immediately after creating the signal and leave it untouched after.
+        */
+       void set_internal_name(QString internal_name);
+
        /**
         * Produces a string for this signal that can be used for display,
         * i.e. it contains one or both of the signal/internal names.
@@ -171,6 +188,11 @@ public:
         */
        void set_data(shared_ptr<pv::data::SignalData> data);
 
+       /**
+        * Clears all sample data and removes all associated segments.
+        */
+       void clear_sample_data();
+
        /**
         * Get the internal data as analog data object in case of analog type.
         */
@@ -195,7 +217,7 @@ public:
        /**
         * Returns the sample rate for this signal.
         */
-       double get_samplerate() const;
+       virtual double get_samplerate() const;
 
        /**
         * Queries the kind of conversion performed on this channel.
@@ -317,7 +339,7 @@ Q_SIGNALS:
 private Q_SLOTS:
        void on_samples_cleared();
 
-       void on_samples_added(QObject* segment, uint64_t start_sample,
+       void on_samples_added(SharedPtrToSegment segment, uint64_t start_sample,
                uint64_t end_sample);
 
        void on_min_max_changed(float min, float max);
@@ -344,6 +366,7 @@ protected:
 
        QString internal_name_, name_;
        QColor color_, bgcolor_;
+       unsigned int index_;
 };
 
 } // namespace data