projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implement A2L presets and custom threshold handling
[pulseview.git]
/
pv
/
data
/
decodesignal.cpp
diff --git
a/pv/data/decodesignal.cpp
b/pv/data/decodesignal.cpp
index 5acf9eec634380533a2cb1c0bfeceb767cec6f7b..daa52ed62d67231821f4fee2647fd506853d96a7 100644
(file)
--- a/
pv/data/decodesignal.cpp
+++ b/
pv/data/decodesignal.cpp
@@
-62,8
+62,6
@@
DecodeSignal::DecodeSignal(pv::Session &session) :
{
connect(&session_, SIGNAL(capture_state_changed(int)),
this, SLOT(on_capture_state_changed(int)));
{
connect(&session_, SIGNAL(capture_state_changed(int)),
this, SLOT(on_capture_state_changed(int)));
-
- set_name(tr("Empty decoder signal"));
}
DecodeSignal::~DecodeSignal()
}
DecodeSignal::~DecodeSignal()
@@
-79,7
+77,9
@@
const vector< shared_ptr<Decoder> >& DecodeSignal::decoder_stack() const
void DecodeSignal::stack_decoder(const srd_decoder *decoder)
{
assert(decoder);
void DecodeSignal::stack_decoder(const srd_decoder *decoder)
{
assert(decoder);
- stack_.push_back(make_shared<decode::Decoder>(decoder));
+ const shared_ptr<Decoder> dec = make_shared<decode::Decoder>(decoder);
+
+ stack_.push_back(dec);
// Set name if this decoder is the first in the list
if (stack_.size() == 1)
// Set name if this decoder is the first in the list
if (stack_.size() == 1)
@@
-88,7
+88,7
@@
void DecodeSignal::stack_decoder(const srd_decoder *decoder)
// Include the newly created decode channels in the channel lists
update_channel_list();
// Include the newly created decode channels in the channel lists
update_channel_list();
- auto_assign_signals();
+ auto_assign_signals(
dec
);
commit_decoder_channels();
begin_decode();
}
commit_decoder_channels();
begin_decode();
}
@@
-263,12
+263,16
@@
const vector<data::DecodeChannel> DecodeSignal::get_channels() const
return channels_;
}
return channels_;
}
-void DecodeSignal::auto_assign_signals()
+void DecodeSignal::auto_assign_signals(
const shared_ptr<Decoder> dec
)
{
bool new_assignment = false;
// Try to auto-select channels that don't have signals assigned yet
for (data::DecodeChannel &ch : channels_) {
{
bool new_assignment = false;
// Try to auto-select channels that don't have signals assigned yet
for (data::DecodeChannel &ch : channels_) {
+ // If a decoder is given, auto-assign only its channels
+ if (dec && (ch.decoder_ != dec))
+ continue;
+
if (ch.assigned_signal)
continue;
if (ch.assigned_signal)
continue;
@@
-502,11
+506,13
@@
void DecodeSignal::restore_settings(QSettings &settings)
// Include the newly created decode channels in the channel lists
update_channel_list();
// Include the newly created decode channels in the channel lists
update_channel_list();
+ commit_decoder_channels();
break;
}
}
settings.endGroup();
break;
}
}
settings.endGroup();
+ channels_updated();
}
// Restore channel mapping
}
// Restore channel mapping
@@
-924,7
+930,7
@@
void DecodeSignal::connect_input_notifiers()
void DecodeSignal::annotation_callback(srd_proto_data *pdata, void *decode_signal)
{
assert(pdata);
void DecodeSignal::annotation_callback(srd_proto_data *pdata, void *decode_signal)
{
assert(pdata);
- assert(decode
r
);
+ assert(decode
_signal
);
DecodeSignal *const ds = (DecodeSignal*)decode_signal;
assert(ds);
DecodeSignal *const ds = (DecodeSignal*)decode_signal;
assert(ds);