d->clear();
trigger_list_.clear();
+ segment_sample_count_.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.
return samplerate;
}
-uint32_t Session::get_segment_count() const
+uint32_t Session::get_highest_segment_id() const
{
- uint32_t value = 0;
-
- // Find the highest number of segments
- for (const shared_ptr<data::SignalData>& data : all_signal_data_)
- if (data->get_segment_count() > value)
- value = data->get_segment_count();
+ return highest_segment_id_;
+}
- return value;
+uint64_t Session::get_segment_sample_count(uint32_t segment_id) const
+{
+ if (segment_id < segment_sample_count_.size())
+ return segment_sample_count_[segment_id];
+ else
+ return 0;
}
vector<util::Timestamp> Session::get_triggers(uint32_t segment_id) const
return signalbases_;
}
+uint32_t Session::get_signal_count(data::SignalBase::ChannelType type) const
+{
+ return count_if(signalbases_.begin(), signalbases_.end(),
+ [&] (shared_ptr<SignalBase> sb) { return sb->type() == type; });
+}
+
+uint32_t Session::get_next_signal_index(data::SignalBase::ChannelType type)
+{
+ next_index_list_[type]++;
+ return next_index_list_[type];
+}
+
void Session::add_generated_signal(shared_ptr<data::SignalBase> signal)
{
signalbases_.push_back(signal);
if (new_segment_id > highest_segment_id_) {
highest_segment_id_ = new_segment_id;
+ segment_sample_count_.emplace_back(0);
new_segment(highest_segment_id_);
}
}
cur_logic_segment_->append_payload(logic);
+ segment_sample_count_[highest_segment_id_] =
+ max(segment_sample_count_[highest_segment_id_], cur_logic_segment_->get_sample_count());
+
data_received();
}
// Append the samples in the segment
segment->append_interleaved_samples(channel_data++, analog->num_samples(),
channels.size());
+
+ segment_sample_count_[highest_segment_id_] =
+ max(segment_sample_count_[highest_segment_id_], segment->get_sample_count());
}
if (sweep_beginning) {