]> sigrok.org Git - pulseview.git/blobdiff - pv/data/mathsignal.hpp
DecodeSignal: Update thread handling to match previous changes
[pulseview.git] / pv / data / mathsignal.hpp
index a1fb9ffb899db98732e994d725ef91ba343a1dcf..76427c56e73079a4757d9b468e32b947478bd0a7 100644 (file)
@@ -43,7 +43,7 @@ namespace data {
 class SignalBase;
 
 template<typename T>
-struct sig_sample;
+struct fnc_sample;
 
 struct signal_data {
        signal_data(const shared_ptr<SignalBase> _sb) :
@@ -60,7 +60,6 @@ class MathSignal : public SignalBase
 {
        Q_OBJECT
        Q_PROPERTY(QString expression READ get_expression WRITE set_expression NOTIFY expression_changed)
-       Q_PROPERTY(QString error_message READ error_message)
 
 private:
        static const int64_t ChunkLength;
@@ -72,13 +71,11 @@ public:
        virtual void save_settings(QSettings &settings) const;
        virtual void restore_settings(QSettings &settings);
 
-       QString error_message() const;
-
        QString get_expression() const;
        void set_expression(QString expression);
 
 private:
-       void set_error_message(QString msg);
+       void set_error(uint8_t type, QString msg);
 
        /**
         * Returns the number of samples that can be worked on,
@@ -89,10 +86,10 @@ private:
         */
        uint64_t get_working_sample_count(uint32_t segment_id) const;
 
-       void update_completeness(uint32_t segment_id);
+       void update_completeness(uint32_t segment_id, uint64_t output_sample_count);
 
        void reset_generation();
-       void begin_generation();
+       virtual void begin_generation();
 
        void generate_samples(uint32_t segment_id, const uint64_t start_sample,
                const int64_t sample_count);
@@ -101,6 +98,8 @@ private:
        signal_data* signal_from_name(const std::string& name);
        void update_signal_sample(signal_data* sig_data, uint32_t segment_id, uint64_t sample_num);
 
+       bool all_input_signals_enabled(QString &disabled_signals) const;
+
 Q_SIGNALS:
        void samples_cleared();
 
@@ -115,6 +114,8 @@ private Q_SLOTS:
        void on_capture_state_changed(int state);
        void on_data_received();
 
+       void on_enabled_changed();
+
 private:
        pv::Session &session_;
 
@@ -123,7 +124,9 @@ private:
        bool use_custom_sample_rate_, use_custom_sample_count_;
        map<std::string, signal_data> input_signals_;
 
-       QString expression_, error_message_;
+       QString expression_;
+
+       uint8_t error_type_;
 
        mutable mutex input_mutex_;
        mutable condition_variable gen_input_cond_;
@@ -136,10 +139,10 @@ private:
        exprtk::parser<double> *exprtk_parser_;
        double exprtk_current_time_, exprtk_current_sample_;
 
-       sig_sample<double>* fnc_sig_sample_;
+       fnc_sample<double>* fnc_sample_;
 
        // Give sig_sample access to the private helper functions
-       friend struct sig_sample<double>;
+       friend struct fnc_sample<double>;
 };
 
 } // namespace data