Files
@ 68f79a7c6762
Branch filter:
Location: tempo-plotter/src/stream.h - annotation
68f79a7c6762
2.8 KiB
text/plain
integrated almost all code to to use new Stream class, plotting doesn't work yet
building works, needs major cleanup
building works, needs major cleanup
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | b29ee5395753 391ab62116c8 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 5c0005f331cf b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 5c0005f331cf b29ee5395753 5c0005f331cf b29ee5395753 5c0005f331cf 5c0005f331cf b29ee5395753 b29ee5395753 b29ee5395753 5c0005f331cf b29ee5395753 b29ee5395753 391ab62116c8 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 5c0005f331cf b29ee5395753 b29ee5395753 b29ee5395753 5c0005f331cf 1e7920e956a9 68f79a7c6762 391ab62116c8 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 391ab62116c8 391ab62116c8 391ab62116c8 391ab62116c8 391ab62116c8 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 5c0005f331cf 391ab62116c8 391ab62116c8 391ab62116c8 391ab62116c8 b29ee5395753 8554454db965 8554454db965 8554454db965 391ab62116c8 391ab62116c8 391ab62116c8 391ab62116c8 391ab62116c8 391ab62116c8 391ab62116c8 391ab62116c8 391ab62116c8 b29ee5395753 b29ee5395753 b29ee5395753 b29ee5395753 | /*
Copyright © 2018 Hasan Yavuz Özderya
This file is part of serialplot.
serialplot is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
serialplot is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with serialplot. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef STREAM_H
#define STREAM_H
#include <QObject>
#include <QModelIndex>
#include <QVector>
#include <QSettings>
#include "sink.h"
#include "source.h"
#include "channelinfomodel.h"
#include "streamchannel.h"
#include "framebuffer2.h"
/**
* Main waveform storage class. It consists of channels. Channels are
* synchronized with each other.
*
* Implements `Sink` class for data entry. It's expected to be
* connected to a `Device` source.
*/
class Stream : public QObject, public Sink
{
Q_OBJECT
public:
/**
* @param nc number of channels
* @param x has X data input
* @param ns number of samples
*/
Stream(unsigned nc = 0, bool x = false, unsigned ns = 0);
~Stream();
// implementations for `Source`
virtual bool hasX() const;
virtual unsigned numChannels() const;
unsigned numSamples() const;
const StreamChannel* channel(unsigned index) const;
StreamChannel* channel(unsigned index);
const ChannelInfoModel* infoModel() const;
ChannelInfoModel* infoModel();
/// Saves channel information
void saveSettings(QSettings* settings) const;
/// Load channel information
void loadSettings(QSettings* settings);
protected:
// implementations for `Sink`
virtual void setNumChannels(unsigned nc, bool x);
virtual void feedIn(const SamplePack& data);
signals:
void numChannelsChanged(unsigned value);
void numSamplesChanged(unsigned value);
void channelAdded(const StreamChannel* chan);
void channelNameChanged(unsigned channel, QString name); // TODO: does it stay?
void dataAdded(); ///< emitted when data added to channel man.
public slots:
// TODO: these won't be public
// void setNumChannels(unsigned number);
void setNumSamples(unsigned value);
/// When paused data feed is ignored
void pause(bool paused);
/// Clears buffer data (fills with 0)
void clear();
private:
unsigned _numSamples;
bool _paused;
bool _hasx;
ResizableBuffer* xData;
QList<StreamChannel*> channels;
ChannelInfoModel _infoModel;
};
#endif // STREAM_H
|