File: spectrumwidget.cpp

package info (click to toggle)
qsstv 9.5.8-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 10,928 kB
  • sloc: cpp: 47,579; makefile: 4
file content (126 lines) | stat: -rw-r--r-- 3,155 bytes parent folder | download | duplicates (2)
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include "spectrumwidget.h"
#include "appglobal.h"
#include "ui_spectrumwidget.h"
#include "supportfunctions.h"
#include "logging.h"
#include "markerwidget.h"

spectrumWidget::spectrumWidget(QWidget *parent) : QFrame(parent),  ui(new Ui::spectrumWidget)
{
  ui->setupUi(this);
  readSettings();
  connect(ui->maxDbSpinbox,SIGNAL(valueChanged(int)),SLOT(slotMaxDbChanged(int)));
  connect(ui->rangeSpinbox,SIGNAL(valueChanged(int)),SLOT(slotRangeChanged(int)));
  connect(ui->avgDoubleSpinBox,SIGNAL(valueChanged(double)),SLOT(slotAvgChanged(double)));
}

spectrumWidget::~spectrumWidget()
{
  writeSettings();
  delete ui;
}

void spectrumWidget::init(int length,int numBlocks,int isamplingrate)
{
//  addToLog(QString("Size: %1, Number of blocks %2, Samplingrate %3").arg(length).arg(numBlocks).arg(isamplingrate),LOGFFT);
  fftFunc.init(length,numBlocks,isamplingrate);
  ui->spectrWidget->init(length,numBlocks,isamplingrate);
  ui->waterfallWidget->init(length,numBlocks,isamplingrate);
}


void spectrumWidget::realFFT(double *iBuffer)
{
    fftFunc.realFFT(iBuffer);
     ui->spectrWidget->showFFT(fftFunc.out);
    ui->waterfallWidget->showFFT(fftFunc.out);
}


void spectrumWidget::readSettings()
{
  QSettings qSettings;
  qSettings.beginGroup("SPECTRUM");
  maxdb=qSettings.value("maxdb",-25).toInt();
  range=qSettings.value("range",35).toInt();
  avg=qSettings.value("avg",0.90).toDouble();
  qSettings.endGroup();
  setParams();
}


void spectrumWidget::writeSettings()
{
  QSettings qSettings;
  getParams();
  qSettings.beginGroup("SPECTRUM");
  qSettings.setValue( "maxdb",maxdb);
  qSettings.setValue( "range",range);
  qSettings.setValue("avg",avg);
  qSettings.endGroup();
}

void spectrumWidget::getParams()
{
  getValue(maxdb,ui->maxDbSpinbox);
  getValue(range,ui->rangeSpinbox);
  getValue(avg,ui->avgDoubleSpinBox);
}

void spectrumWidget::setParams()
{
  setValue(maxdb,ui->maxDbSpinbox);
  setValue(range,ui->rangeSpinbox);
  setValue(avg,ui->avgDoubleSpinBox);
  slotMaxDbChanged(maxdb);
  slotRangeChanged(range);
  slotAvgChanged(avg);

}

void spectrumWidget::displaySettings(bool drm)
{
  ui->spectrWidget->displayWaterfall(false);
  ui->waterfallWidget->displayWaterfall(true);
  if(drm)
  {
      ui->spectrWidget->setMarkers(725,1475,1850);
      ui->waterfallWidget->setMarkers(725,1475,1850);
      ui->markerLabelSpectrum->setMarkers(725,1475,1850);
      ui->markerLabelWF->setMarkers(725,1475,1850);

    }
  else
    {
      ui->spectrWidget->setMarkers(1200,1500,2300);
      ui->waterfallWidget->setMarkers(1200,1500,2300);
      ui->markerLabelSpectrum->setMarkers(1200,1500,2300);
      ui->markerLabelWF->setMarkers(1200,1500,2300);
    }
}

QImage *spectrumWidget::getImage()
{
  return ui->waterfallWidget->getImage();
}

void spectrumWidget::slotMaxDbChanged(int mb)
{
  ui->spectrWidget->setMaxDb(mb);
  ui->waterfallWidget->setMaxDb(mb);
  maxdb=mb;
}
void spectrumWidget::slotRangeChanged(int rg)
{
  ui->spectrWidget->setRange(rg);
  ui->waterfallWidget->setRange(rg);
  range=rg;
}

void spectrumWidget::slotAvgChanged(double d)
{
   ui->spectrWidget->setAvg(d);
   ui->waterfallWidget->setAvg(d);
}