Don't ask me why I used a local copy in the first place,
even I can't figure it out :)
+SignalBase::ConversionType SignalBase::get_conversion_type() const
+{
+ return conversion_type_;
+}
+
void SignalBase::set_conversion_type(ConversionType t)
{
if (conversion_type_ != NoConversion) {
void SignalBase::set_conversion_type(ConversionType t)
{
if (conversion_type_ != NoConversion) {
*/
shared_ptr<pv::data::Logic> logic_data() const;
*/
shared_ptr<pv::data::Logic> logic_data() const;
+ /**
+ * Queries the kind of conversion performed on this channel.
+ */
+ ConversionType get_conversion_type() const;
+
/**
* Changes the kind of conversion performed on this channel.
*/
/**
* Changes the kind of conversion performed on this channel.
*/
ChannelType channel_type_;
shared_ptr<pv::data::SignalData> data_;
shared_ptr<pv::data::SignalData> converted_data_;
ChannelType channel_type_;
shared_ptr<pv::data::SignalData> data_;
shared_ptr<pv::data::SignalData> converted_data_;
+ ConversionType conversion_type_;
std::thread conversion_thread_;
atomic<bool> conversion_interrupt_;
std::thread conversion_thread_;
atomic<bool> conversion_interrupt_;
pos_vdivs_(1),
neg_vdivs_(1),
resolution_(0),
pos_vdivs_(1),
neg_vdivs_(1),
resolution_(0),
- conversion_type_(data::SignalBase::NoConversion),
display_type_(DisplayBoth),
autoranging_(true)
{
display_type_(DisplayBoth),
autoranging_(true)
{
settings.setValue("pos_vdivs", pos_vdivs_);
settings.setValue("neg_vdivs", neg_vdivs_);
settings.setValue("scale_index", scale_index_);
settings.setValue("pos_vdivs", pos_vdivs_);
settings.setValue("neg_vdivs", neg_vdivs_);
settings.setValue("scale_index", scale_index_);
- settings.setValue("conversion_type", conversion_type_);
settings.setValue("display_type", display_type_);
settings.setValue("autoranging", autoranging_);
settings.setValue("div_height", div_height_);
settings.setValue("display_type", display_type_);
settings.setValue("autoranging", autoranging_);
settings.setValue("div_height", div_height_);
- if (settings.contains("conversion_type")) {
- conversion_type_ = (data::SignalBase::ConversionType)(settings.value("conversion_type").toInt());
- update_conversion_type();
- }
-
if (settings.contains("display_type"))
display_type_ = (DisplayType)(settings.value("display_type").toInt());
if (settings.contains("display_type"))
display_type_ = (DisplayType)(settings.value("display_type").toInt());
}
if ((display_type_ == DisplayConverted) || (display_type_ == DisplayBoth)) {
}
if ((display_type_ == DisplayConverted) || (display_type_ == DisplayBoth)) {
- if (((conversion_type_ == data::SignalBase::A2LConversionByTreshold) ||
- (conversion_type_ == data::SignalBase::A2LConversionBySchmittTrigger))) {
+ const data::SignalBase::ConversionType conv_type =
+ base_->get_conversion_type();
+
+ if (((conv_type == data::SignalBase::A2LConversionByTreshold) ||
+ (conv_type == data::SignalBase::A2LConversionBySchmittTrigger))) {
paint_logic_mid(p, pp);
}
paint_logic_mid(p, pp);
}
scale_ = div_height_ / resolution_;
}
scale_ = div_height_ / resolution_;
}
-void AnalogSignal::update_conversion_type()
-{
- base_->set_conversion_type(conversion_type_);
-
- if (owner_)
- owner_->row_item_appearance_changed(false, true);
-}
-
void AnalogSignal::perform_autoranging(bool keep_divs, bool force_update)
{
const deque< shared_ptr<pv::data::AnalogSegment> > &segments =
void AnalogSignal::perform_autoranging(bool keep_divs, bool force_update)
{
const deque< shared_ptr<pv::data::AnalogSegment> > &segments =
conversion_cb_->addItem("to logic via threshold", data::SignalBase::A2LConversionByTreshold);
conversion_cb_->addItem("to logic via schmitt-trigger", data::SignalBase::A2LConversionBySchmittTrigger);
conversion_cb_->addItem("to logic via threshold", data::SignalBase::A2LConversionByTreshold);
conversion_cb_->addItem("to logic via schmitt-trigger", data::SignalBase::A2LConversionBySchmittTrigger);
- cur_idx = conversion_cb_->findData(QVariant(conversion_type_));
+ cur_idx = conversion_cb_->findData(QVariant(base_->get_conversion_type()));
conversion_cb_->setCurrentIndex(cur_idx);
layout->addRow(tr("Conversion"), conversion_cb_);
conversion_cb_->setCurrentIndex(cur_idx);
layout->addRow(tr("Conversion"), conversion_cb_);
void AnalogSignal::on_conversion_changed(int index)
{
void AnalogSignal::on_conversion_changed(int index)
{
- data::SignalBase::ConversionType old_conv_type = conversion_type_;
+ data::SignalBase::ConversionType old_conv_type =
+ base_->get_conversion_type();
- conversion_type_ = (data::SignalBase::ConversionType)(conversion_cb_->itemData(index).toInt());
+ data::SignalBase::ConversionType conv_type =
+ (data::SignalBase::ConversionType)(conversion_cb_->itemData(index).toInt());
- if (conversion_type_ != old_conv_type) {
- base_->set_conversion_type(conversion_type_);
- update_conversion_type();
+ if (conv_type != old_conv_type) {
+ base_->set_conversion_type(conv_type);
+
+ if (owner_)
+ owner_->row_item_appearance_changed(false, true);
- void update_conversion_type();
-
void perform_autoranging(bool keep_divs, bool force_update);
protected:
void perform_autoranging(bool keep_divs, bool force_update);
protected:
int pos_vdivs_, neg_vdivs_; // divs per positive/negative side
float resolution_; // e.g. 10 for 10 V/div
int pos_vdivs_, neg_vdivs_; // divs per positive/negative side
float resolution_; // e.g. 10 for 10 V/div
- data::SignalBase::ConversionType conversion_type_;
DisplayType display_type_;
bool autoranging_;
};
DisplayType display_type_;
bool autoranging_;
};