#include <libsigrokcxx/libsigrokcxx.hpp>
-#include "analogsignal.hpp"
-#include "header.hpp"
-#include "logicsignal.hpp"
-#include "ruler.hpp"
-#include "signal.hpp"
-#include "tracegroup.hpp"
-#include "triggermarker.hpp"
#include "view.hpp"
-#include "viewport.hpp"
+#include "pv/globalsettings.hpp"
#include "pv/metadata_obj.hpp"
+#include "pv/session.hpp"
+#include "pv/util.hpp"
#include "pv/data/logic.hpp"
#include "pv/data/logicsegment.hpp"
#include "pv/data/signalbase.hpp"
#include "pv/devices/device.hpp"
-#include "pv/globalsettings.hpp"
-#include "pv/session.hpp"
-#include "pv/util.hpp"
+#include "pv/views/trace/mathsignal.hpp"
+#include "pv/views/trace/analogsignal.hpp"
+#include "pv/views/trace/header.hpp"
+#include "pv/views/trace/logicsignal.hpp"
+#include "pv/views/trace/ruler.hpp"
+#include "pv/views/trace/signal.hpp"
+#include "pv/views/trace/tracegroup.hpp"
+#include "pv/views/trace/triggermarker.hpp"
+#include "pv/views/trace/viewport.hpp"
#ifdef ENABLE_DECODE
-#include "decodetrace.hpp"
+#include "pv/views/trace/decodetrace.hpp"
#endif
using pv::data::SignalBase;
switch (signalbase->type()) {
case SignalBase::LogicChannel:
- signal = shared_ptr<Signal>(new LogicSignal(session_, session_.device(), signalbase));
+ signal = shared_ptr<Signal>(new LogicSignal(session_, signalbase));
break;
case SignalBase::AnalogChannel:
signal = shared_ptr<Signal>(new AnalogSignal(session_, signalbase));
break;
+ case SignalBase::MathChannel:
+ signal = shared_ptr<Signal>(new MathSignal(session_, signalbase));
+ break;
+
default:
qDebug() << "Unknown signalbase type:" << signalbase->type();
assert(false);
for (const shared_ptr<Signal>& signal : signals_)
signal->set_segment_display_mode(mode);
- uint32_t last_segment = session_.get_segment_count() - 1;
+ uint32_t last_segment = session_.get_highest_segment_id();
switch (mode) {
case Trace::ShowLastSegmentOnly:
vector< shared_ptr<SignalData> > visible_data;
for (const shared_ptr<Signal>& sig : signals_)
if (sig->enabled())
- visible_data.push_back(sig->data());
+ visible_data.push_back(sig->base()->data());
return visible_data;
}
if (signals_.size() == 0)
return make_pair(0, 0);
- for (shared_ptr<Signal> s : signals_)
- if (s->data()->segments().size() > 0)
- data.push_back(s->data());
+ for (const shared_ptr<Signal>& s : signals_)
+ if (s->base()->data() && (s->base()->data()->segments().size() > 0))
+ data.push_back(s->base()->data());
for (const shared_ptr<SignalData>& d : data) {
const vector< shared_ptr<Segment> > segments = d->segments();
if (time_unit_ == util::TimeUnit::Samples) {
// Check all signals but...
for (const shared_ptr<Signal>& signal : signals_) {
- const shared_ptr<SignalData> data = signal->data();
+ const shared_ptr<SignalData> data = signal->base()->data();
// ...only check first segment of each
const vector< shared_ptr<Segment> > segments = data->segments();