SDRAngel  4.11.5
Developer docs for <a href="https://github.com/f4exb/sdrangel">SDRangel<\a>, an Open Source Qt5 / OpenGL 3.0+ SDR and signal analyzer frontend to various hardware.
udpsinkgui.cpp
Go to the documentation of this file.
1 // Copyright (C) 2015 F4EXB //
3 // written by Edouard Griffiths //
4 // //
5 // This program is free software; you can redistribute it and/or modify //
6 // it under the terms of the GNU General Public License as published by //
7 // the Free Software Foundation as version 3 of the License, or //
8 // (at your option) any later version. //
9 // //
10 // This program is distributed in the hope that it will be useful, //
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of //
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
13 // GNU General Public License V3 for more details. //
14 // //
15 // You should have received a copy of the GNU General Public License //
16 // along with this program. If not, see <http://www.gnu.org/licenses/>. //
18 
19 #include "device/deviceuiset.h"
20 #include "plugin/pluginapi.h"
21 #include "dsp/spectrumvis.h"
22 #include "dsp/dspengine.h"
23 #include "util/simpleserializer.h"
24 #include "util/db.h"
26 #include "ui_udpsinkgui.h"
27 #include "mainwindow.h"
28 
29 #include "udpsink.h"
30 #include "udpsinkgui.h"
31 
33 {
34  UDPSinkGUI* gui = new UDPSinkGUI(pluginAPI, deviceUISet, rxChannel);
35  return gui;
36 }
37 
39 {
40  delete this;
41 }
42 
43 void UDPSinkGUI::setName(const QString& name)
44 {
45  setObjectName(name);
46 }
47 
49 {
51 }
52 
53 void UDPSinkGUI::setCenterFrequency(qint64 centerFrequency)
54 {
55  m_channelMarker.setCenterFrequency(centerFrequency);
56  applySettings();
57 }
58 
59 QString UDPSinkGUI::getName() const
60 {
61  return objectName();
62 }
63 
65 {
69  applySettings(true);
70 }
71 
72 QByteArray UDPSinkGUI::serialize() const
73 {
74  return m_settings.serialize();
75 }
76 
77 bool UDPSinkGUI::deserialize(const QByteArray& data)
78 {
79  if(m_settings.deserialize(data))
80  {
83  applySettings(true);
84  return true;
85  } else {
87  return false;
88  }
89 }
90 
91 bool UDPSinkGUI::handleMessage(const Message& message )
92 {
94  {
96  m_settings = cfg.getSettings();
97  blockApplySettings(true);
99  blockApplySettings(false);
100  return true;
101  }
102  else
103  {
104  return false;
105  }
106 }
107 
109 {
110  Message* message;
111 
112  while ((message = getInputMessageQueue()->pop()) != 0)
113  {
114  if (handleMessage(*message))
115  {
116  delete message;
117  }
118  }
119 }
120 
122 {
123  ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
126 }
127 
129 {
131 }
132 
134 {
135  if (m_tickCount % 4 == 0)
136  {
137 // m_channelPowerAvg.feed(m_udpSrc->getMagSq());
138 // double powDb = CalcDb::dbPower(m_channelPowerAvg.average());
139  double powDb = CalcDb::dbPower(m_udpSink->getMagSq());
140  ui->channelPower->setText(QString::number(powDb, 'f', 1));
142  double inPowDb = CalcDb::dbPower(m_inPowerAvg.average());
143  ui->inputPower->setText(QString::number(inPowDb, 'f', 1));
144  }
145 
146  if (m_udpSink->getSquelchOpen()) {
147  ui->squelchLabel->setStyleSheet("QLabel { background-color : green; }");
148  } else {
149  ui->squelchLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
150  }
151 
152  m_tickCount++;
153 }
154 
155 UDPSinkGUI::UDPSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) :
156  RollupWidget(parent),
157  ui(new Ui::UDPSinkGUI),
158  m_pluginAPI(pluginAPI),
159  m_deviceUISet(deviceUISet),
160  m_udpSink(0),
161  m_channelMarker(this),
162  m_channelPowerAvg(4, 1e-10),
163  m_inPowerAvg(4, 1e-10),
164  m_tickCount(0),
165  m_doApplySettings(true),
166  m_rfBandwidthChanged(false)
167 {
168  ui->setupUi(this);
169  connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool)));
170  connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &)));
171  setAttribute(Qt::WA_DeleteOnClose, true);
172 
173  m_spectrumVis = new SpectrumVis(SDR_RX_SCALEF, ui->glSpectrum);
174  m_udpSink = (UDPSink*) rxChannel; //new UDPSrc(m_deviceUISet->m_deviceSourceAPI);
177 
178  ui->fmDeviation->setEnabled(false);
179 
180  ui->deltaFrequencyLabel->setText(QString("%1f").arg(QChar(0x94, 0x03)));
181  ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold));
182  ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999);
183  ui->squelchLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
184 
185  ui->glSpectrum->setCenterFrequency(0);
186  ui->glSpectrum->setSampleRate(ui->sampleRate->text().toInt());
187  ui->glSpectrum->setDisplayWaterfall(true);
188  ui->glSpectrum->setDisplayMaxHold(true);
190  64, // FFT size
191  10, // overlapping %
192  0, // number of averaging samples
193  0, // no averaging
195  false); // logarithmic scale
196 
197  ui->glSpectrum->connectTimer(MainWindow::getInstance()->getMasterTimer());
198  connect(&MainWindow::getInstance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick()));
199 
200  m_channelMarker.blockSignals(true);
203  m_channelMarker.setTitle("UDP Sample Source");
205  m_channelMarker.blockSignals(false);
206  m_channelMarker.setVisible(true); // activate signal on the last setting only
207 
209 
211  m_settings.setSpectrumGUI(ui->spectrumGUI);
212 
216 
217  connect(&m_channelMarker, SIGNAL(changedByCursor()), this, SLOT(channelMarkerChangedByCursor()));
218  connect(&m_channelMarker, SIGNAL(highlightedByCursor()), this, SLOT(channelMarkerHighlightedByCursor()));
219  connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages()));
220 
221  ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum);
222 
223  displaySettings();
225  applySettings(true);
226 }
227 
229 {
231  delete m_udpSink; // TODO: check this: when the GUI closes it has to delete the demodulator
232  delete m_spectrumVis;
233  delete ui;
234 }
235 
237 {
238  m_doApplySettings = !block;
239 }
240 
242 {
243  m_channelMarker.blockSignals(true);
247  m_channelMarker.blockSignals(false);
248  m_channelMarker.setColor(m_settings.m_rgbColor); // activate signal on the last setting only
249 
251  setWindowTitle(m_channelMarker.getTitle());
252 
253  blockApplySettings(true);
254 
255  ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
256 
257  ui->sampleRate->setText(QString("%1").arg(m_settings.m_outputSampleRate, 0));
259 
260  ui->outputUDPAddress->setText(m_settings.m_udpAddress);
261  ui->outputUDPPort->setText(tr("%1").arg(m_settings.m_udpPort));
262  ui->inputUDPAudioPort->setText(tr("%1").arg(m_settings.m_audioPort));
263 
264  ui->squelch->setValue(m_settings.m_squelchdB);
265  ui->squelchText->setText(tr("%1").arg(ui->squelch->value()*1.0, 0, 'f', 0));
266 
267  qDebug("UDPSinkGUI::deserialize: m_squelchGate: %d", m_settings.m_squelchGate);
268  ui->squelchGate->setValue(m_settings.m_squelchGate);
269  ui->squelchGateText->setText(tr("%1").arg(m_settings.m_squelchGate*10.0, 0, 'f', 0));
270 
271  ui->rfBandwidth->setText(QString("%1").arg(m_settings.m_rfBandwidth, 0));
272  ui->fmDeviation->setText(QString("%1").arg(m_settings.m_fmDeviation, 0));
273 
274  ui->agc->setChecked(m_settings.m_agc);
275  ui->audioActive->setChecked(m_settings.m_audioActive);
276  ui->audioStereo->setChecked(m_settings.m_audioStereo);
277 
278  ui->volume->setValue(m_settings.m_volume);
279  ui->volumeText->setText(QString("%1").arg(ui->volume->value()));
280 
281  ui->gain->setValue(m_settings.m_gain*10.0);
282  ui->gainText->setText(tr("%1").arg(ui->gain->value()/10.0, 0, 'f', 1));
283 
284  ui->applyBtn->setEnabled(false);
285  ui->applyBtn->setStyleSheet("QPushButton { background:rgb(79,79,79); }");
286 
287  blockApplySettings(false);
288 
289  ui->glSpectrum->setSampleRate(m_settings.m_outputSampleRate);
290 }
291 
293 {
294  switch(sampleFormat)
295  {
297  ui->sampleFormat->setCurrentIndex(0);
298  break;
300  ui->sampleFormat->setCurrentIndex(1);
301  break;
303  ui->sampleFormat->setCurrentIndex(2);
304  break;
306  ui->sampleFormat->setCurrentIndex(3);
307  break;
309  ui->sampleFormat->setCurrentIndex(4);
310  break;
312  ui->sampleFormat->setCurrentIndex(5);
313  break;
315  ui->sampleFormat->setCurrentIndex(6);
316  break;
318  ui->sampleFormat->setCurrentIndex(7);
319  break;
321  ui->sampleFormat->setCurrentIndex(8);
322  break;
324  ui->sampleFormat->setCurrentIndex(9);
325  break;
327  ui->sampleFormat->setCurrentIndex(10);
328  break;
329  default:
330  ui->sampleFormat->setCurrentIndex(0);
331  break;
332  }
333 }
334 
336 {
337  switch(index)
338  {
339  case 0:
341  ui->fmDeviation->setEnabled(false);
342  break;
343  case 1:
345  ui->fmDeviation->setEnabled(false);
346  break;
347  case 2:
349  ui->fmDeviation->setEnabled(true);
350  break;
351  case 3:
353  ui->fmDeviation->setEnabled(true);
354  break;
355  case 4:
357  ui->fmDeviation->setEnabled(false);
358  break;
359  case 5:
361  ui->fmDeviation->setEnabled(false);
362  break;
363  case 6:
365  ui->fmDeviation->setEnabled(false);
366  break;
367  case 7:
369  ui->fmDeviation->setEnabled(false);
370  break;
371  case 8:
373  ui->fmDeviation->setEnabled(false);
374  break;
375  case 9:
377  ui->fmDeviation->setEnabled(false);
378  break;
379  case 10:
381  ui->fmDeviation->setEnabled(false);
382  break;
383  default:
385  ui->fmDeviation->setEnabled(false);
386  break;
387  }
388 }
389 
391 {
392  if (m_doApplySettings)
393  {
395  m_udpSink->getInputMessageQueue()->push(message);
396  }
397 }
398 
400 {
401  if (m_doApplySettings)
402  {
405  m_udpSink->getInputMessageQueue()->push(channelConfigMsg);
406 
408  m_udpSink->getInputMessageQueue()->push(message);
409 
410  ui->applyBtn->setEnabled(false);
411  ui->applyBtn->setStyleSheet("QPushButton { background:rgb(79,79,79); }");
412  }
413 }
414 
416 {
419  applySettings();
420 }
421 
423 {
424  if ((index == 1) || (index == 2)) {
425  ui->fmDeviation->setEnabled(true);
426  } else {
427  ui->fmDeviation->setEnabled(false);
428  }
429 
430  setSampleFormat(index);
431 
432  ui->applyBtn->setEnabled(true);
433  ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }");
434 }
435 
437 {
438  m_settings.m_udpAddress = ui->outputUDPAddress->text();
439  ui->applyBtn->setEnabled(true);
440  ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }");
441 }
442 
444 {
445  bool ok;
446  quint16 udpPort = ui->outputUDPPort->text().toInt(&ok);
447 
448  if((!ok) || (udpPort < 1024)) {
449  udpPort = 9998;
450  }
451 
452  m_settings.m_udpPort = udpPort;
453  ui->outputUDPPort->setText(tr("%1").arg(m_settings.m_udpPort));
454 
455  ui->applyBtn->setEnabled(true);
456  ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }");
457 }
458 
460 {
461  bool ok;
462  quint16 udpPort = ui->inputUDPAudioPort->text().toInt(&ok);
463 
464  if((!ok) || (udpPort < 1024)) {
465  udpPort = 9997;
466  }
467 
468  m_settings.m_audioPort = udpPort;
469  ui->inputUDPAudioPort->setText(tr("%1").arg(m_settings.m_audioPort));
470 
471  ui->applyBtn->setEnabled(true);
472  ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }");
473 }
474 
475 void UDPSinkGUI::on_sampleRate_textEdited(const QString& arg1)
476 {
477  (void) arg1;
478  bool ok;
479  Real outputSampleRate = ui->sampleRate->text().toDouble(&ok);
480 
481  if((!ok) || (outputSampleRate < 1000))
482  {
484  ui->sampleRate->setText(QString("%1").arg(outputSampleRate, 0));
485  }
486  else
487  {
488  m_settings.m_outputSampleRate = outputSampleRate;
489  }
490 
491  ui->applyBtn->setEnabled(true);
492  ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }");
493 }
494 
495 void UDPSinkGUI::on_rfBandwidth_textEdited(const QString& arg1)
496 {
497  (void) arg1;
498  bool ok;
499  Real rfBandwidth = ui->rfBandwidth->text().toDouble(&ok);
500 
501  if ((!ok) || (rfBandwidth > m_settings.m_outputSampleRate))
502  {
504  ui->rfBandwidth->setText(QString("%1").arg(m_settings.m_rfBandwidth, 0));
505  }
506  else
507  {
508  m_settings.m_rfBandwidth = rfBandwidth;
509  }
510 
511  m_rfBandwidthChanged = true;
512 
513  ui->applyBtn->setEnabled(true);
514  ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }");
515 }
516 
517 void UDPSinkGUI::on_fmDeviation_textEdited(const QString& arg1)
518 {
519  (void) arg1;
520  bool ok;
521  int fmDeviation = ui->fmDeviation->text().toInt(&ok);
522 
523  if ((!ok) || (fmDeviation < 1))
524  {
525  m_settings.m_fmDeviation = 2500;
526  ui->fmDeviation->setText(QString("%1").arg(m_settings.m_fmDeviation));
527  }
528  else
529  {
530  m_settings.m_fmDeviation = fmDeviation;
531  }
532 
533  ui->applyBtn->setEnabled(true);
534  ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }");
535 }
536 
538 {
540  {
542  m_rfBandwidthChanged = false;
543  }
544 
545  ui->glSpectrum->setSampleRate(m_settings.m_outputSampleRate);
546 
547  applySettings();
548 }
549 
551 {
552  m_settings.m_audioActive = active;
554 }
555 
557 {
558  m_settings.m_audioStereo = stereo;
560 }
561 
563 {
564  m_settings.m_agc = agc;
566 }
567 
569 {
570  m_settings.m_gain = value / 10.0;
571  ui->gainText->setText(tr("%1").arg(value/10.0, 0, 'f', 1));
573 }
574 
576 {
577  m_settings.m_volume = value;
578  ui->volumeText->setText(QString("%1").arg(value));
580 }
581 
583 {
584  m_settings.m_squelchdB = value;
585 
586  if (value == -100) // means disabled
587  {
588  ui->squelchText->setText("---");
590  }
591  else
592  {
593  ui->squelchText->setText(tr("%1").arg(value*1.0, 0, 'f', 0));
595  }
596 
598 }
599 
601 {
602  m_settings.m_squelchGate = value;
603  ui->squelchGateText->setText(tr("%1").arg(value*10.0, 0, 'f', 0));
605 }
606 
607 void UDPSinkGUI::onWidgetRolled(QWidget* widget, bool rollDown)
608 {
609  if ((widget == ui->spectrumBox) && (m_udpSink != 0))
610  {
612  }
613 }
614 
615 void UDPSinkGUI::onMenuDialogCalled(const QPoint &p)
616 {
618  {
625 
626  dialog.move(p);
627  dialog.exec();
628 
637 
638  setWindowTitle(m_settings.m_title);
640 
642  }
643 
645 }
646 
648 {
650 }
651 
653 {
655 }
656 
657 
static MsgConfigureChannelizer * create(int sampleRate, int centerFrequency)
Definition: udpsink.h:83
Ui::UDPSinkGUI * ui
Definition: udpsinkgui.h:64
void leaveEvent(QEvent *)
Definition: udpsinkgui.cpp:647
QByteArray serialize() const
Definition: udpsinkgui.cpp:72
QString getName() const
Definition: udpsinkgui.cpp:59
static MainWindow * getInstance()
Definition: mainwindow.h:73
const QString & getReverseAPIAddress() const
void handleSourceMessages()
Definition: udpsinkgui.cpp:108
int m_squelchdB
power dB
void onWidgetRolled(QWidget *widget, bool rollDown)
Definition: udpsinkgui.cpp:607
const UDPSinkSettings & getSettings() const
Definition: udpsink.h:56
int getCenterFrequency() const
Definition: channelmarker.h:42
bool deserialize(const QByteArray &data)
void push(Message *message, bool emitSignal=true)
Push message onto queue.
void feed(Type value)
Definition: movingaverage.h:24
void on_rfBandwidth_textEdited(const QString &arg1)
Definition: udpsinkgui.cpp:495
static double dbPower(double magsq, double floor=1e-12)
Definition: db.cpp:22
bool getSquelchOpen() const
Definition: udpsink.h:107
MessageQueue * getInputMessageQueue()
Get the queue for asynchronous inbound communication.
void on_deltaFrequency_changed(qint64 value)
Definition: udpsinkgui.cpp:415
void on_sampleFormat_currentIndexChanged(int index)
Definition: udpsinkgui.cpp:422
void on_audioStereo_toggled(bool stereo)
Definition: udpsinkgui.cpp:556
virtual qint64 getCenterFrequency() const
Definition: udpsinkgui.cpp:48
void displaySettings()
Definition: udpsinkgui.cpp:241
uint16_t m_reverseAPIPort
void setReverseAPIChannelIndex(uint16_t channelIndex)
void on_sampleRate_textEdited(const QString &arg1)
Definition: udpsinkgui.cpp:475
bool m_rfBandwidthChanged
Definition: udpsinkgui.h:76
bool m_doApplySettings
Definition: udpsinkgui.h:75
void resetContextMenuType()
Definition: rollupwidget.h:50
void addChannelMarker(ChannelMarker *channelMarker)
Add channel marker to spectrum.
Definition: deviceuiset.cpp:72
Type average() const
Definition: movingaverage.h:43
void setSpectrum(BasebandSampleSink *spectrum)
Definition: udpsink.h:102
void applySettingsImmediate(bool force=false)
Definition: udpsinkgui.cpp:390
double getInMagSq() const
Definition: udpsink.h:106
void on_squelchGate_valueChanged(int value)
Definition: udpsinkgui.cpp:600
virtual void setCenterFrequency(qint64 centerFrequency)
Definition: udpsinkgui.cpp:53
void on_inputUDPAudioPort_editingFinished()
Definition: udpsinkgui.cpp:459
int m_squelchGate
100ths seconds
ContextMenuType m_contextMenuType
Definition: rollupwidget.h:33
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
void setReverseAPIDeviceIndex(uint16_t deviceIndex)
#define SDR_RX_SCALEF
Definition: dsptypes.h:33
QByteArray serialize() const
void tick()
Definition: udpsinkgui.cpp:133
ChannelMarker m_channelMarker
Definition: udpsinkgui.h:69
void on_applyBtn_clicked()
Definition: udpsinkgui.cpp:537
void blockApplySettings(bool block)
Definition: udpsinkgui.cpp:236
double getMagSq() const
Definition: udpsink.h:105
uint16_t m_reverseAPIDeviceIndex
virtual void setMessageQueueToGUI(MessageQueue *queue)
static UDPSinkGUI * create(PluginAPI *pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel)
Definition: udpsinkgui.cpp:32
void setTitleColor(const QColor &c)
void setHighlighted(bool highlighted)
void registerRxChannelInstance(const QString &channelName, PluginInstanceGUI *pluginGUI)
Definition: deviceuiset.cpp:82
void addRollupWidget(QWidget *widget)
Add rollup widget to channel window.
Definition: deviceuiset.cpp:77
void removeRxChannelInstance(PluginInstanceGUI *pluginGUI)
Definition: deviceuiset.cpp:94
const QString & getTitle() const
Definition: channelmarker.h:38
static bool match(const Message *message)
Definition: message.cpp:45
bool getHighlighted() const
Definition: channelmarker.h:61
void setName(const QString &name)
Definition: udpsinkgui.cpp:43
DeviceUISet * m_deviceUISet
Definition: udpsinkgui.h:66
void setSpectrumGUI(Serializable *spectrumGUI)
void setSampleFormat(int index)
Definition: udpsinkgui.cpp:335
void on_fmDeviation_textEdited(const QString &arg1)
Definition: udpsinkgui.cpp:517
void on_agc_toggled(bool agc)
Definition: udpsinkgui.cpp:562
bool deserialize(const QByteArray &data)
Definition: udpsinkgui.cpp:77
uint16_t m_reverseAPIChannelIndex
SampleFormat m_sampleFormat
void setReverseAPIAddress(const QString &address)
void applySettings(bool force=false)
Definition: udpsinkgui.cpp:399
void on_volume_valueChanged(int value)
Definition: udpsinkgui.cpp:575
void setHighlighted(bool highlighted)
void setColor(const QColor &color)
void enterEvent(QEvent *)
Definition: udpsinkgui.cpp:652
void on_outputUDPPort_editingFinished()
Definition: udpsinkgui.cpp:443
void on_gain_valueChanged(int value)
Definition: udpsinkgui.cpp:568
UDPSinkGUI(PluginAPI *pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget *parent=0)
Definition: udpsinkgui.cpp:155
void resetToDefaults()
Definition: udpsinkgui.cpp:64
MovingAverage< double > m_inPowerAvg
Definition: udpsinkgui.h:71
void setVisible(bool visible)
void channelMarkerHighlightedByCursor()
Definition: udpsinkgui.cpp:128
uint32_t m_tickCount
Definition: udpsinkgui.h:72
void configure(MessageQueue *msgQueue, int fftSize, int overlapPercent, unsigned int averagingNb, int averagingMode, FFTWindow::Function window, bool m_linear)
Definition: spectrumvis.cpp:44
void setBandwidth(int bandwidth)
void onMenuDialogCalled(const QPoint &p)
Definition: udpsinkgui.cpp:615
const QColor & getColor() const
Definition: channelmarker.h:64
void setTitle(const QString &title)
void channelMarkerChangedByCursor()
Definition: udpsinkgui.cpp:121
virtual void destroy()
Definition: udpsinkgui.cpp:38
uint16_t m_audioPort
int64_t m_inputFrequencyOffset
void on_squelch_valueChanged(int value)
Definition: udpsinkgui.cpp:582
void setCenterFrequency(int centerFrequency)
UDPSink * m_udpSink
Definition: udpsinkgui.h:67
virtual MessageQueue * getInputMessageQueue()
Definition: udpsinkgui.h:56
static const QString m_channelIdURI
Definition: udpsink.h:145
MovingAverage< double > m_channelPowerAvg
Definition: udpsinkgui.h:70
static MsgConfigureUDPSource * create(const UDPSinkSettings &settings, bool force)
Definition: udpsink.h:59
virtual bool handleMessage(const Message &message)
Definition: udpsinkgui.cpp:91
void widgetRolled(QWidget *widget, bool rollDown)
float Real
Definition: dsptypes.h:42
PluginAPI * m_pluginAPI
Definition: udpsinkgui.h:65
UDPSinkSettings m_settings
Definition: udpsinkgui.h:68
void setUseReverseAPI(bool useReverseAPI)
void setChannelMarker(Serializable *channelMarker)
QString m_reverseAPIAddress
void on_audioActive_toggled(bool active)
Definition: udpsinkgui.cpp:550
SpectrumVis * m_spectrumVis
Definition: udpsinkgui.h:80
virtual ~UDPSinkGUI()
Definition: udpsinkgui.cpp:228
void setSampleFormatIndex(const UDPSinkSettings::SampleFormat &sampleFormat)
Definition: udpsinkgui.cpp:292
void on_outputUDPAddress_editingFinished()
Definition: udpsinkgui.cpp:436