]> sigrok.org Git - pulseview.git/commitdiff
Use identifiers for fixed conversion preset values
authorSoeren Apel <redacted>
Tue, 1 Aug 2017 19:35:15 +0000 (21:35 +0200)
committerUwe Hermann <redacted>
Thu, 3 Aug 2017 11:06:27 +0000 (13:06 +0200)
pv/data/signalbase.cpp
pv/data/signalbase.hpp
pv/views/trace/analogsignal.cpp

index 797bd456817e9e1cb0ef2d4c39e193acbe33b165..fe7c584b62b4eab7c58e2383b77989f0bd0194da 100644 (file)
@@ -244,33 +244,33 @@ vector<double> SignalBase::get_conversion_thresholds(const ConversionType t,
 {
        vector<double> result;
        ConversionType conv_type = t;
-       int preset;
+       ConversionPreset preset;
 
        // Use currently active conversion if no conversion type was supplied
        if (conv_type == NoConversion)
                conv_type = conversion_type_;
 
        if (always_custom)
-               preset = -1;
+               preset = NoPreset;
        else
                preset = get_current_conversion_preset();
 
        if (conv_type == A2LConversionByThreshold) {
                double thr = 0;
 
-               if (preset == -1) {
+               if (preset == NoPreset) {
                        auto thr_iter = conversion_options_.find("threshold_value");
                        if (thr_iter != conversion_options_.end())
                                thr = (thr_iter->second).toDouble();
                }
 
-               if (preset == 0)
+               if (preset == DynamicPreset)
                        thr = (min_value_ + max_value_) * 0.5;  // middle between min and max
 
-               if (preset == 1) thr = 0.9;
-               if (preset == 2) thr = 1.8;
-               if (preset == 3) thr = 2.5;
-               if (preset == 4) thr = 1.5;
+               if ((int)preset == 1) thr = 0.9;
+               if ((int)preset == 2) thr = 1.8;
+               if ((int)preset == 3) thr = 2.5;
+               if ((int)preset == 4) thr = 1.5;
 
                result.push_back(thr);
        }
@@ -278,7 +278,7 @@ vector<double> SignalBase::get_conversion_thresholds(const ConversionType t,
        if (conv_type == A2LConversionBySchmittTrigger) {
                double thr_lo = 0, thr_hi = 0;
 
-               if (preset == -1) {
+               if (preset == NoPreset) {
                        auto thr_lo_iter = conversion_options_.find("threshold_value_low");
                        if (thr_lo_iter != conversion_options_.end())
                                thr_lo = (thr_lo_iter->second).toDouble();
@@ -288,17 +288,17 @@ vector<double> SignalBase::get_conversion_thresholds(const ConversionType t,
                                thr_hi = (thr_hi_iter->second).toDouble();
                }
 
-               if (preset == 0) {
+               if (preset == DynamicPreset) {
                        const double amplitude = max_value_ - min_value_;
                        const double center = min_value_ + (amplitude / 2);
                        thr_lo = center - (amplitude * 0.15);  // 15% margin
                        thr_hi = center + (amplitude * 0.15);  // 15% margin
                }
 
-               if (preset == 1) { thr_lo = 0.3; thr_hi = 1.2; }
-               if (preset == 2) { thr_lo = 0.7; thr_hi = 2.5; }
-               if (preset == 3) { thr_lo = 1.3; thr_hi = 3.7; }
-               if (preset == 4) { thr_lo = 0.8; thr_hi = 2.0; }
+               if ((int)preset == 1) { thr_lo = 0.3; thr_hi = 1.2; }
+               if ((int)preset == 2) { thr_lo = 0.7; thr_hi = 2.5; }
+               if ((int)preset == 3) { thr_lo = 1.3; thr_hi = 3.7; }
+               if ((int)preset == 4) { thr_lo = 0.8; thr_hi = 2.0; }
 
                result.push_back(thr_lo);
                result.push_back(thr_hi);
@@ -332,18 +332,18 @@ vector< pair<QString, int> > SignalBase::get_conversion_presets() const
        return presets;
 }
 
-int SignalBase::get_current_conversion_preset() const
+SignalBase::ConversionPreset SignalBase::get_current_conversion_preset() const
 {
        auto preset = conversion_options_.find("preset");
        if (preset != conversion_options_.end())
-               return (preset->second).toInt();
+               return (ConversionPreset)((preset->second).toInt());
 
-       return -1;
+       return NoPreset;
 }
 
-void SignalBase::set_conversion_preset(int id)
+void SignalBase::set_conversion_preset(ConversionPreset id)
 {
-       conversion_options_["preset"] = id;
+       conversion_options_["preset"] = (int)id;
 }
 
 #ifdef ENABLE_DECODE
@@ -581,9 +581,9 @@ void SignalBase::on_min_max_changed(float min, float max)
        (void)min;
        (void)max;
 
-       // Restart conversion if one is enabled and uses an automatic threshold
+       // Restart conversion if one is enabled and uses a calculated threshold
        if ((conversion_type_ != NoConversion) &&
-               (get_current_conversion_preset() == 0))
+               (get_current_conversion_preset() == DynamicPreset))
                start_conversion();
 }
 
index 32085a43b929a68e5223019eb04ec94e81e3e88f..1675ed0abefea1c9c94ec151e4f3705d339646e4 100644 (file)
@@ -73,6 +73,16 @@ 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;
@@ -227,7 +237,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 +246,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;
index 323a2434ec79083f00db203a9c23ae37031ac790..2ea5ffc55f92dbcdcc56dbe75271b903fe9a5f66 100644 (file)
@@ -1050,7 +1050,7 @@ void AnalogSignal::on_conv_threshold_changed(int index)
                        delayed_conversion_starter_.start();
        }
 
-       base_->set_conversion_preset(index);
+       base_->set_conversion_preset((SignalBase::ConversionPreset)index);
 
        // Immediately start the conversion if we're not asking for a delayed reaction
        if (!delayed_conversion_starter_.isActive())