projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Session/View: Save triggers in a list and use it
[pulseview.git]
/
pv
/
views
/
trace
/
view.cpp
diff --git
a/pv/views/trace/view.cpp
b/pv/views/trace/view.cpp
index 292933e7eefa70abb5753a0a3e66f9614292415a..00a1c23968c0eb255b2f2b4a9957ce63242569e2 100644
(file)
--- a/
pv/views/trace/view.cpp
+++ b/
pv/views/trace/view.cpp
@@
-506,6
+506,11
@@
const pv::util::Timestamp& View::tick_period() const
return tick_period_;
}
return tick_period_;
}
+unsigned int View::minor_tick_count() const
+{
+ return minor_tick_count_;
+}
+
void View::set_tick_period(const pv::util::Timestamp& tick_period)
{
if (tick_period_ != tick_period) {
void View::set_tick_period(const pv::util::Timestamp& tick_period)
{
if (tick_period_ != tick_period) {
@@
-536,6
+541,10
@@
void View::set_current_segment(uint32_t segment_id)
for (shared_ptr<DecodeTrace> dt : decode_traces_)
dt->set_current_segment(current_segment_);
for (shared_ptr<DecodeTrace> dt : decode_traces_)
dt->set_current_segment(current_segment_);
+ trigger_markers_.clear();
+ for (util::Timestamp timestamp : session_.get_triggers(segment_id))
+ trigger_markers_.push_back(make_shared<TriggerMarker>(*this, timestamp));
+
viewport_->update();
segment_changed(segment_id);
viewport_->update();
segment_changed(segment_id);
@@
-553,6
+562,8
@@
Trace::SegmentDisplayMode View::segment_display_mode() const
void View::set_segment_display_mode(Trace::SegmentDisplayMode mode)
{
void View::set_segment_display_mode(Trace::SegmentDisplayMode mode)
{
+ trigger_markers_.clear();
+
segment_display_mode_ = mode;
for (shared_ptr<Signal> signal : signals_)
segment_display_mode_ = mode;
for (shared_ptr<Signal> signal : signals_)
@@
-821,8
+832,12
@@
void View::restack_all_trace_tree_items()
i->animate_to_layout_v_offset();
}
i->animate_to_layout_v_offset();
}
-void View::trigger_event(util::Timestamp location)
+void View::trigger_event(
int segment_id,
util::Timestamp location)
{
{
+ // TODO This doesn't work if we're showing multiple segments at once
+ if ((uint32_t)segment_id != current_segment_)
+ return;
+
// Set up ruler_shift if the Key_View_TriggerIsZeroTime option is set.
GlobalSettings settings;
bool trigger_is_zero_time = settings.value(GlobalSettings::Key_View_TriggerIsZeroTime).toBool();
// Set up ruler_shift if the Key_View_TriggerIsZeroTime option is set.
GlobalSettings settings;
bool trigger_is_zero_time = settings.value(GlobalSettings::Key_View_TriggerIsZeroTime).toBool();
@@
-896,6
+911,7
@@
void View::calculate_tick_spacing()
(ScaleUnits[unit++] + tp_margin);
} while (tp_with_margin < min_period && unit < countof(ScaleUnits));
(ScaleUnits[unit++] + tp_margin);
} while (tp_with_margin < min_period && unit < countof(ScaleUnits));
+ minor_tick_count_ = (unit == 2) ? (4) : (5);
tick_period = order_decimal * ScaleUnits[unit - 1];
tick_prefix = static_cast<pv::util::SIPrefix>(
(order - pv::util::exponent(pv::util::SIPrefix::yocto)) / 3);
tick_period = order_decimal * ScaleUnits[unit - 1];
tick_prefix = static_cast<pv::util::SIPrefix>(
(order - pv::util::exponent(pv::util::SIPrefix::yocto)) / 3);