X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdata%2Fsignalbase.hpp;h=865f2551662fed2ab137781752c9064191cb698d;hp=32085a43b929a68e5223019eb04ec94e81e3e88f;hb=c6d9cf6582589fd375e67579d42ee914ce6382a1;hpb=8e15445ccd6994348eb74b24b5324d26c9be0cce diff --git a/pv/data/signalbase.hpp b/pv/data/signalbase.hpp index 32085a43..865f2551 100644 --- a/pv/data/signalbase.hpp +++ b/pv/data/signalbase.hpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -63,7 +64,6 @@ public: AnalogChannel = 1, ///< Analog data LogicChannel, ///< Logic data DecodeChannel, ///< Protocol Decoder channel using libsigrokdecode - A2LChannel, ///< Analog converted to logic, joint representation MathChannel ///< Virtual channel generated by math operations }; @@ -73,9 +73,20 @@ public: A2LConversionBySchmittTrigger = 2 }; + /** + * Conversion presets range from -1 to n, where 1..n are dependent on + * the conversion these presets apply to. -1 and 0 have fixed meanings, + * however. + */ + enum ConversionPreset { + NoPreset = -1, ///< Conversion uses custom values + DynamicPreset = 0 ///< Conversion uses calculated values + }; + private: static const int ColourBGAlpha; static const uint64_t ConversionBlockSize; + static const uint32_t ConversionDelay; public: SignalBase(shared_ptr channel, ChannelType channel_type); @@ -227,7 +238,7 @@ public: * @return the ID of the currently used conversion preset. -1 if no preset * is used. In that case, a user setting is used instead. */ - int get_current_conversion_preset() const; + ConversionPreset get_current_conversion_preset() const; /** * Sets the conversion preset to be used. @@ -236,7 +247,7 @@ public: * * @param id the id of the preset to use */ - void set_conversion_preset(int id); + void set_conversion_preset(ConversionPreset id); #ifdef ENABLE_DECODE bool is_decode_signal() const; @@ -246,7 +257,7 @@ public: virtual void restore_settings(QSettings &settings); - void start_conversion(); + void start_conversion(bool delayed_start=false); private: bool conversion_is_a2l() const; @@ -273,6 +284,8 @@ Q_SIGNALS: void samples_added(QObject* segment, uint64_t start_sample, uint64_t end_sample); + void min_max_changed(float min, float max); + private Q_SLOTS: void on_samples_cleared(); @@ -283,6 +296,8 @@ private Q_SLOTS: void on_capture_state_changed(int state); + void on_delayed_conversion_start(); + protected: shared_ptr channel_; ChannelType channel_type_; @@ -297,6 +312,7 @@ protected: atomic conversion_interrupt_; mutex conversion_input_mutex_; condition_variable conversion_input_cond_; + QTimer delayed_conversion_starter_; QString internal_name_, name_; QColor colour_, bgcolour_;