#ifdef ENABLE_DECODE
bool Session::add_decoder(srd_decoder *const dec)
{
+ if (!dec)
+ return false;
+
map<const srd_channel*, shared_ptr<data::SignalBase> > channels;
shared_ptr<data::DecoderStack> decoder_stack;
// Auto select the initial channels
for (const srd_channel *pdch : all_channels)
for (shared_ptr<data::SignalBase> b : signalbases_) {
- if (b->type() == data::SignalBase::LogicChannel) {
+ if (b->logic_data()) {
if (QString::fromUtf8(pdch->name).toLower().
contains(b->name().toLower()))
channels[pdch] = b;
// Create a new data segment
cur_logic_segment_ = make_shared<data::LogicSegment>(
- *logic_data_, logic, cur_samplerate_);
+ *logic_data_, logic->unit_size(), cur_samplerate_);
logic_data_->push_segment(cur_logic_segment_);
// @todo Putting this here means that only listeners querying
// frame_began is DecoderStack, but in future we need to signal
// this after both analog and logic sweeps have begun.
frame_began();
- } else {
- // Append to the existing data segment
- cur_logic_segment_->append_payload(logic);
}
+ cur_logic_segment_->append_payload(logic);
+
data_received();
}