diff --git a/src/demoreader.cpp b/src/demoreader.cpp --- a/src/demoreader.cpp +++ b/src/demoreader.cpp @@ -1,5 +1,5 @@ /* - Copyright © 2017 Hasan Yavuz Özderya + Copyright © 2018 Hasan Yavuz Özderya This file is part of serialplot. @@ -25,21 +25,23 @@ #define M_PI 3.14159265358979323846 #endif -DemoReader::DemoReader(QIODevice* device, ChannelManager* channelMan, - DataRecorder* recorder, QObject* parent) : - AbstractReader(device, channelMan, recorder, parent) +DemoReader::DemoReader(QIODevice* device, QObject* parent) : + AbstractReader(device, parent) { paused = false; - _numOfChannels = 1; + _numChannels = _settingsWidget.numChannels(); + connect(&_settingsWidget, &DemoReaderSettings::numChannelsChanged, + this, &DemoReader::onNumChannelsChanged); + count = 0; timer.setInterval(100); - QObject::connect(&timer, &QTimer::timeout, - this, &DemoReader::demoTimerTimeout); + connect(&timer, &QTimer::timeout, + this, &DemoReader::demoTimerTimeout); } QWidget* DemoReader::settingsWidget() { - return NULL; + return &_settingsWidget; } void DemoReader::enable(bool enabled) @@ -51,22 +53,18 @@ void DemoReader::enable(bool enabled) else { timer.stop(); + disconnectSinks(); } } -unsigned DemoReader::numOfChannels() +unsigned DemoReader::numChannels() const { - return _numOfChannels; + return _numChannels; } -void DemoReader::setNumOfChannels(unsigned value) +void DemoReader::setNumChannels(unsigned value) { - _numOfChannels = value; -} - -void DemoReader::pause(bool enabled) -{ - paused = enabled; + _settingsWidget.setNumChannels(value); } void DemoReader::demoTimerTimeout() @@ -77,13 +75,23 @@ void DemoReader::demoTimerTimeout() if (!paused) { - double* samples = new double[_numOfChannels]; - for (unsigned ci = 0; ci < _numOfChannels; ci++) + SamplePack samples(1, _numChannels); + for (unsigned ci = 0; ci < _numChannels; ci++) { // we are calculating the fourier components of square wave - samples[ci] = 4*sin(2*M_PI*double((ci+1)*count)/period)/((2*(ci+1))*M_PI); + samples.data(ci)[0] = 4*sin(2*M_PI*double((ci+1)*count)/period)/((2*(ci+1))*M_PI); } - addData(samples, _numOfChannels); - delete[] samples; + feedOut(samples); } } + +void DemoReader::onNumChannelsChanged(unsigned value) +{ + _numChannels = value; + updateNumChannels(); +} + +void DemoReader::onDataReady() +{ + // intentionally empty, required by AbstractReader +}