#include "mathsignal.hpp"
+#include <extdef.h>
#include <pv/globalsettings.hpp>
#include <pv/session.hpp>
#include <pv/data/analogsegment.hpp>
exprtk_parser_(nullptr),
fnc_sig_sample_(nullptr)
{
- set_name(QString(tr("Math%1")).arg(session_.get_next_signal_index(MathChannel)));
+ uint32_t sig_idx = session_.get_next_signal_index(MathChannel);
+ set_name(QString(tr("Math%1")).arg(sig_idx));
+ set_color(AnalogSignalColors[(sig_idx - 1) % countof(AnalogSignalColors)]);
- shared_ptr<Analog> data(new data::Analog());
- set_data(data);
+ set_data(std::make_shared<data::Analog>());
connect(&session_, SIGNAL(capture_state_changed(int)),
this, SLOT(on_capture_state_changed(int)));
if (gen_interrupt_)
return;
- shared_ptr<Analog> analog = dynamic_pointer_cast<Analog>(data_);
+ shared_ptr<Analog> analog = analog_data();
// Create initial analog segment
shared_ptr<AnalogSegment> output_segment =
if (samples_to_process == 0) {
if (segment_id < session_.get_highest_segment_id()) {
+ analog->analog_segments().back()->set_complete();
+
// Process next segment
segment_id++;
{
if (state == Session::Running)
begin_generation();
+
+ if (state == Session::Stopped) {
+ shared_ptr<Analog> analog = analog_data();
+ analog->analog_segments().back()->set_complete();
+ }
}
void MathSignal::on_data_received()