summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gr-qtgui/lib/TimeDomainDisplayPlot.cc30
-rw-r--r--gr-qtgui/lib/TimeDomainDisplayPlot.h4
-rw-r--r--gr-qtgui/lib/qtgui_time_sink_c.cc24
-rw-r--r--gr-qtgui/lib/qtgui_time_sink_c.h3
-rw-r--r--gr-qtgui/lib/spectrumUpdateEvents.cc48
-rw-r--r--gr-qtgui/lib/spectrumUpdateEvents.h16
-rw-r--r--gr-qtgui/lib/spectrumdisplayform.cc15
-rw-r--r--gr-qtgui/lib/timedisplayform.cc8
8 files changed, 57 insertions, 91 deletions
diff --git a/gr-qtgui/lib/TimeDomainDisplayPlot.cc b/gr-qtgui/lib/TimeDomainDisplayPlot.cc
index c9973fbc22..e3c773e4cd 100644
--- a/gr-qtgui/lib/TimeDomainDisplayPlot.cc
+++ b/gr-qtgui/lib/TimeDomainDisplayPlot.cc
@@ -95,8 +95,6 @@ private:
TimeDomainDisplayPlot::TimeDomainDisplayPlot(int nplots, QWidget* parent)
: QwtPlot(parent), _nplots(nplots)
{
- timespec_reset(&_lastReplot);
-
resize(parent->width(), parent->height());
_numPoints = 1024;
@@ -215,36 +213,30 @@ TimeDomainDisplayPlot::resizeSlot( QSize *s )
resize(s->width(), s->height());
}
-void TimeDomainDisplayPlot::PlotNewData(const int which,
- const double* dataPoints,
+void TimeDomainDisplayPlot::PlotNewData(const std::vector<double*> dataPoints,
const int64_t numDataPoints,
const double timeInterval)
{
- if((numDataPoints > 0) &&
- (diff_timespec(get_highres_clock(), _lastReplot) > timeInterval)) {
-
+ if((numDataPoints > 0)) {
if(numDataPoints != _numPoints){
_numPoints = numDataPoints;
- delete[] _dataPoints[which];
- _dataPoints[which] = new double[_numPoints];
-
delete[] _xAxisPoints;
_xAxisPoints = new double[_numPoints];
-
- _plot_curve[which]->setRawData(_xAxisPoints, _dataPoints[which], _numPoints);
+ for(int i = 0; i < _nplots; i++) {
+ delete[] _dataPoints[i];
+ _dataPoints[i] = new double[_numPoints];
+ _plot_curve[i]->setRawData(_xAxisPoints, _dataPoints[i], _numPoints);
+ }
+
set_xaxis(0, numDataPoints);
-
_resetXAxisPoints();
}
- std::cout << "DisplayPlot: " << which << std::endl;
- memcpy(_dataPoints[which], dataPoints, numDataPoints*sizeof(double));
- std::cout << "after" << std::endl;
-
- if(which == _nplots-1)
- _lastReplot = get_highres_clock();
+ for(int i = 0; i < _nplots; i++) {
+ memcpy(_dataPoints[i], dataPoints[i], numDataPoints*sizeof(double));
+ }
}
}
diff --git a/gr-qtgui/lib/TimeDomainDisplayPlot.h b/gr-qtgui/lib/TimeDomainDisplayPlot.h
index 3a983a924b..fbfba584b1 100644
--- a/gr-qtgui/lib/TimeDomainDisplayPlot.h
+++ b/gr-qtgui/lib/TimeDomainDisplayPlot.h
@@ -47,7 +47,7 @@ public:
TimeDomainDisplayPlot(int nplots, QWidget*);
virtual ~TimeDomainDisplayPlot();
- void PlotNewData(const int which, const double* dataPoints,
+ void PlotNewData(const std::vector<double*> dataPoints,
const int64_t numDataPoints, const double timeInterval);
virtual void replot();
@@ -87,8 +87,6 @@ private:
double _sampleRate;
- timespec _lastReplot;
-
int64_t _numPoints;
};
diff --git a/gr-qtgui/lib/qtgui_time_sink_c.cc b/gr-qtgui/lib/qtgui_time_sink_c.cc
index 2c8ff86e5e..434a9dffc8 100644
--- a/gr-qtgui/lib/qtgui_time_sink_c.cc
+++ b/gr-qtgui/lib/qtgui_time_sink_c.cc
@@ -142,26 +142,26 @@ qtgui_time_sink_c::general_work (int noutput_items,
for(int i=0; i < noutput_items; i+=d_size) {
unsigned int datasize = noutput_items - i;
unsigned int resid = d_size-d_index;
-
- // If we have enough input for one full FFT, do it
+
+ // If we have enough input for one full plot, do it
if(datasize >= resid) {
- const timespec currentTime = get_highres_clock();
+ d_current_time = get_highres_clock();
- // Fill up residbufs with d_fftsize number of items
+ // Fill up residbufs with d_size number of items
for(n = 0; n < d_nconnections; n+=2) {
for(unsigned int k = 0; k < resid; k++) {
d_residbufs[n][d_index+k] = in[j+k].real();
d_residbufs[n+1][d_index+k] = in[j+k].imag();
}
+ }
+ // Update the plot if its time
+ if(diff_timespec(d_current_time, d_last_time) > d_update_time) {
+ d_last_time = d_current_time;
d_qApplication->postEvent(d_main_gui,
- new TimeUpdateEvent(n, d_residbufs[n], d_size,
- currentTime, true));
- //d_qApplication->postEvent(d_main_gui,
- // new TimeUpdateEvent(n+1, d_residbufs[n+1], d_size,
- // currentTime, true));
+ new TimeUpdateEvent(d_residbufs, d_size));
}
-
+
d_index = 0;
j += resid;
}
@@ -169,8 +169,8 @@ qtgui_time_sink_c::general_work (int noutput_items,
else {
for(n = 0; n < d_nconnections; n+=2) {
for(unsigned int k = 0; k < resid; k++) {
- d_residbufs[n][d_index+k] = in[j+k].real();
- d_residbufs[n+1][d_index+k] = in[j+k].imag();
+ d_residbufs[n][d_index+k] = in[j+k].real();
+ d_residbufs[n+1][d_index+k] = in[j+k].imag();
}
}
d_index += datasize;
diff --git a/gr-qtgui/lib/qtgui_time_sink_c.h b/gr-qtgui/lib/qtgui_time_sink_c.h
index 67687061b0..be057d5082 100644
--- a/gr-qtgui/lib/qtgui_time_sink_c.h
+++ b/gr-qtgui/lib/qtgui_time_sink_c.h
@@ -67,6 +67,9 @@ private:
QWidget *d_parent;
TimeDisplayForm *d_main_gui;
+ timespec d_current_time;
+ timespec d_last_time;
+
public:
~qtgui_time_sink_c();
void exec_();
diff --git a/gr-qtgui/lib/spectrumUpdateEvents.cc b/gr-qtgui/lib/spectrumUpdateEvents.cc
index 0372257603..6730ae51d4 100644
--- a/gr-qtgui/lib/spectrumUpdateEvents.cc
+++ b/gr-qtgui/lib/spectrumUpdateEvents.cc
@@ -180,14 +180,10 @@ SpectrumFrequencyRangeEvent::GetStopFrequency() const
/***************************************************************************/
#include <iostream>
-TimeUpdateEvent::TimeUpdateEvent(const int which,
- const double *timeDomainPoints,
- const uint64_t numTimeDomainDataPoints,
- const timespec dataTimestamp,
- const bool repeatDataFlag)
+TimeUpdateEvent::TimeUpdateEvent(const std::vector<double*> timeDomainPoints,
+ const uint64_t numTimeDomainDataPoints)
: QEvent(QEvent::Type(10005))
{
- _which = which;
if(numTimeDomainDataPoints < 1) {
_numTimeDomainDataPoints = 1;
}
@@ -195,29 +191,25 @@ TimeUpdateEvent::TimeUpdateEvent(const int which,
_numTimeDomainDataPoints = numTimeDomainDataPoints;
}
- _dataTimeDomainPoints = new double[_numTimeDomainDataPoints];
- memset(_dataTimeDomainPoints, 0x0, _numTimeDomainDataPoints*sizeof(double));
- if(numTimeDomainDataPoints > 0) {
- memcpy(_dataTimeDomainPoints, timeDomainPoints,
- numTimeDomainDataPoints*sizeof(double));
- }
+ _nplots = timeDomainPoints.size();
+ for(size_t i = 0; i < _nplots; i++) {
+ _dataTimeDomainPoints.push_back(new double[_numTimeDomainDataPoints]);
- _dataTimestamp = dataTimestamp;
- _repeatDataFlag = repeatDataFlag;
+ if(numTimeDomainDataPoints > 0) {
+ memcpy(_dataTimeDomainPoints[i], timeDomainPoints[i],
+ numTimeDomainDataPoints*sizeof(double));
+ }
+ }
}
TimeUpdateEvent::~TimeUpdateEvent()
{
- delete[] _dataTimeDomainPoints;
-}
-
-int
-TimeUpdateEvent::which() const
-{
- return _which;
+ for(size_t i = 0; i < _nplots; i++) {
+ delete[] _dataTimeDomainPoints[i];
+ }
}
-const double*
+const std::vector<double*>
TimeUpdateEvent::getTimeDomainPoints() const
{
return _dataTimeDomainPoints;
@@ -229,16 +221,4 @@ TimeUpdateEvent::getNumTimeDomainDataPoints() const
return _numTimeDomainDataPoints;
}
-timespec
-TimeUpdateEvent::getDataTimestamp() const
-{
- return _dataTimestamp;
-}
-
-bool
-TimeUpdateEvent::getRepeatDataFlag() const
-{
- return _repeatDataFlag;
-}
-
#endif /* SPECTRUM_UPDATE_EVENTS_C */
diff --git a/gr-qtgui/lib/spectrumUpdateEvents.h b/gr-qtgui/lib/spectrumUpdateEvents.h
index 09771571c9..a5e359a4c9 100644
--- a/gr-qtgui/lib/spectrumUpdateEvents.h
+++ b/gr-qtgui/lib/spectrumUpdateEvents.h
@@ -5,6 +5,7 @@
#include <QEvent>
#include <QString>
#include <complex>
+#include <vector>
#include <highResTimeFunctions.h>
class SpectrumUpdateEvent:public QEvent{
@@ -92,16 +93,13 @@ private:
class TimeUpdateEvent: public QEvent
{
public:
- TimeUpdateEvent(const int which,
- const double *timeDomainPoints,
- const uint64_t numTimeDomainDataPoints,
- const timespec dataTimestamp,
- const bool repeatDataFlag);
+ TimeUpdateEvent(const std::vector<double*> timeDomainPoints,
+ const uint64_t numTimeDomainDataPoints);
~TimeUpdateEvent();
int which() const;
- const double *getTimeDomainPoints() const;
+ const std::vector<double*> getTimeDomainPoints() const;
uint64_t getNumTimeDomainDataPoints() const;
timespec getDataTimestamp() const;
bool getRepeatDataFlag() const;
@@ -109,11 +107,9 @@ public:
protected:
private:
- int _which;
- double *_dataTimeDomainPoints;
+ size_t _nplots;
+ std::vector<double*> _dataTimeDomainPoints;
uint64_t _numTimeDomainDataPoints;
- timespec _dataTimestamp;
- bool _repeatDataFlag;
};
diff --git a/gr-qtgui/lib/spectrumdisplayform.cc b/gr-qtgui/lib/spectrumdisplayform.cc
index 2c666871de..2d2d8648f8 100644
--- a/gr-qtgui/lib/spectrumdisplayform.cc
+++ b/gr-qtgui/lib/spectrumdisplayform.cc
@@ -141,13 +141,17 @@ SpectrumDisplayForm::newFrequencyData( const SpectrumUpdateEvent* spectrumUpdate
//_lastSpectrumEvent = (SpectrumUpdateEvent)(*spectrumUpdateEvent);
const std::complex<float>* complexDataPoints = spectrumUpdateEvent->getFFTPoints();
const uint64_t numFFTDataPoints = spectrumUpdateEvent->getNumFFTDataPoints();
- const double* realTimeDomainDataPoints = spectrumUpdateEvent->getRealTimeDomainPoints();
- const double* imagTimeDomainDataPoints = spectrumUpdateEvent->getImagTimeDomainPoints();
const uint64_t numTimeDomainDataPoints = spectrumUpdateEvent->getNumTimeDomainDataPoints();
const timespec dataTimestamp = spectrumUpdateEvent->getDataTimestamp();
const bool repeatDataFlag = spectrumUpdateEvent->getRepeatDataFlag();
const bool lastOfMultipleUpdatesFlag = spectrumUpdateEvent->getLastOfMultipleUpdateFlag();
const timespec generatedTimestamp = spectrumUpdateEvent->getEventGeneratedTimestamp();
+ double* realTimeDomainDataPoints = (double*)spectrumUpdateEvent->getRealTimeDomainPoints();
+ double* imagTimeDomainDataPoints = (double*)spectrumUpdateEvent->getImagTimeDomainPoints();
+
+ std::vector<double*> timeDomainDataPoints;
+ timeDomainDataPoints.push_back(realTimeDomainDataPoints);
+ timeDomainDataPoints.push_back(imagTimeDomainDataPoints);
// REMEMBER: The dataTimestamp is NOT valid when the repeat data flag is true...
ResizeBuffers(numFFTDataPoints, numTimeDomainDataPoints);
@@ -232,14 +236,9 @@ SpectrumDisplayForm::newFrequencyData( const SpectrumUpdateEvent* spectrumUpdate
_peakAmplitude, d_update_time);
}
if(tabindex == d_plot_time) {
- _timeDomainDisplayPlot->PlotNewData(0,
- realTimeDomainDataPoints,
+ _timeDomainDisplayPlot->PlotNewData(timeDomainDataPoints,
numTimeDomainDataPoints,
d_update_time);
- _timeDomainDisplayPlot->PlotNewData(1,
- imagTimeDomainDataPoints,
- numTimeDomainDataPoints,
- d_update_time);
}
if(tabindex == d_plot_constellation) {
_constellationDisplayPlot->PlotNewData(realTimeDomainDataPoints,
diff --git a/gr-qtgui/lib/timedisplayform.cc b/gr-qtgui/lib/timedisplayform.cc
index 65940b0130..368e47c956 100644
--- a/gr-qtgui/lib/timedisplayform.cc
+++ b/gr-qtgui/lib/timedisplayform.cc
@@ -65,13 +65,11 @@ TimeDisplayForm::~TimeDisplayForm()
void
TimeDisplayForm::newData( const TimeUpdateEvent* spectrumUpdateEvent)
{
- const int which = spectrumUpdateEvent->which();
- const double* timeDomainDataPoints = spectrumUpdateEvent->getTimeDomainPoints();
+ const std::vector<double*> timeDomainDataPoints = spectrumUpdateEvent->getTimeDomainPoints();
const uint64_t numTimeDomainDataPoints = spectrumUpdateEvent->getNumTimeDomainDataPoints();
- const timespec generatedTimestamp = spectrumUpdateEvent->getDataTimestamp();
+ const timespec generatedTimestamp = {0,0};
- //std::cout << "TimeDisplayForm: which: " << which << std::endl;
- _timeDomainDisplayPlot->PlotNewData(which, timeDomainDataPoints,
+ _timeDomainDisplayPlot->PlotNewData(timeDomainDataPoints,
numTimeDomainDataPoints,
d_update_time);
}