for (const shared_ptr<data::SignalData> d : all_signal_data_)
d->clear();
+ trigger_list_.clear();
+
// Revert name back to default name (e.g. "Session 1") for real devices
// as the (possibly saved) data is gone. File devices keep their name.
shared_ptr<devices::HardwareDevice> hw_device =
return value;
}
+vector<util::Timestamp> Session::get_triggers(uint32_t segment_id) const
+{
+ vector<util::Timestamp> result;
+
+ for (pair<uint32_t, util::Timestamp> entry : trigger_list_)
+ if (entry.first == segment_id)
+ result.push_back(entry.second);
+
+ return result;
+}
+
const unordered_set< shared_ptr<data::SignalBase> > Session::signalbases() const
{
return signalbases_;
}
+bool Session::all_segments_complete(uint32_t segment_id) const
+{
+ bool all_complete = true;
+
+ for (shared_ptr<data::SignalBase> base : signalbases_)
+ if (!base->segment_is_complete(segment_id))
+ all_complete = false;
+
+ return all_complete;
+}
+
#ifdef ENABLE_DECODE
shared_ptr<data::DecodeSignal> Session::add_decode_signal()
{
cur_analog_segments_.clear();
}
highest_segment_id_ = -1;
+ frame_began_ = false;
try {
device_->start();
}
}
- trigger_event(sample_count / get_samplerate());
+ // If no frame began then this is a trigger for a new segment
+ const uint32_t segment_id =
+ (frame_began_) ? highest_segment_id_ : (highest_segment_id_ + 1);
+
+ util::Timestamp timestamp = sample_count / get_samplerate();
+ trigger_list_.emplace_back(segment_id, timestamp);
+ trigger_event(segment_id, timestamp);
}
void Session::feed_in_frame_begin()
cur_analog_segments_.clear();
}
- if (frame_began_)
- frame_began_ = false;
+ frame_began_ = false;
signal_segment_completed();
}