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.
Public Member Functions | Private Slots | Private Member Functions | Private Attributes | List of all members
RemoteOutputSinkGui Class Reference

#include <remoteoutputgui.h>

+ Inheritance diagram for RemoteOutputSinkGui:
+ Collaboration diagram for RemoteOutputSinkGui:

Public Member Functions

 RemoteOutputSinkGui (DeviceUISet *deviceUISet, QWidget *parent=0)
 
virtual ~RemoteOutputSinkGui ()
 
virtual void destroy ()
 
void setName (const QString &name)
 
QString getName () const
 
void resetToDefaults ()
 
virtual qint64 getCenterFrequency () const
 
virtual void setCenterFrequency (qint64 centerFrequency)
 
QByteArray serialize () const
 
bool deserialize (const QByteArray &data)
 
virtual MessageQueuegetInputMessageQueue ()
 
virtual bool handleMessage (const Message &message)
 
- Public Member Functions inherited from PluginInstanceGUI
 PluginInstanceGUI ()
 
virtual ~PluginInstanceGUI ()
 

Private Slots

void handleInputMessages ()
 
void on_sampleRate_changed (quint64 value)
 
void on_txDelay_valueChanged (int value)
 
void on_nbFECBlocks_valueChanged (int value)
 
void on_deviceIndex_returnPressed ()
 
void on_channelIndex_returnPressed ()
 
void on_apiAddress_returnPressed ()
 
void on_apiPort_returnPressed ()
 
void on_dataAddress_returnPressed ()
 
void on_dataPort_returnPressed ()
 
void on_apiApplyButton_clicked (bool checked)
 
void on_dataApplyButton_clicked (bool checked)
 
void on_startStop_toggled (bool checked)
 
void on_eventCountsReset_clicked (bool checked)
 
void updateHardware ()
 
void updateStatus ()
 
void tick ()
 
void networkManagerFinished (QNetworkReply *reply)
 
void openDeviceSettingsDialog (const QPoint &p)
 

Private Member Functions

void blockApplySettings (bool block)
 
void displaySettings ()
 
void displayTime ()
 
void sendControl (bool force=false)
 
void sendSettings ()
 
void updateSampleRate ()
 
void updateTxDelayTooltip ()
 
void displayEventCounts ()
 
void displayEventStatus (int recoverableCount, int unrecoverableCount)
 
void displayEventTimer ()
 
void analyzeApiReply (const QJsonObject &jsonObject)
 

Private Attributes

Ui::RemoteOutputGui * ui
 
DeviceUISetm_deviceUISet
 
RemoteOutputSettings m_settings
 current settings More...
 
RemoteOutputSettings m_controlSettings
 settings last sent to device via control port More...
 
QTimer m_updateTimer
 
QTimer m_statusTimer
 
DeviceSampleSinkm_deviceSampleSink
 
int m_sampleRate
 
quint64 m_deviceCenterFrequency
 Center frequency in device. More...
 
int m_samplesCount
 
uint32_t m_tickCount
 
std::size_t m_nbSinceLastFlowCheck
 
int m_lastEngineState
 
bool m_doApplySettings
 
bool m_forceSettings
 
uint32_t m_countUnrecoverable
 
uint32_t m_countRecovered
 
uint32_t m_lastCountUnrecoverable
 
uint32_t m_lastCountRecovered
 
uint32_t m_lastSampleCount
 
uint64_t m_lastTimestampUs
 
bool m_resetCounts
 
QTime m_time
 
QPalette m_paletteGreenText
 
QPalette m_paletteRedText
 
QPalette m_paletteWhiteText
 
MessageQueue m_inputMessageQueue
 
QNetworkAccessManager * m_networkManager
 
QNetworkRequest m_networkRequest
 

Detailed Description

Definition at line 72 of file remoteoutputgui.h.

Constructor & Destructor Documentation

◆ RemoteOutputSinkGui()

RemoteOutputSinkGui::RemoteOutputSinkGui ( DeviceUISet deviceUISet,
QWidget *  parent = 0 
)
explicit

Definition at line 49 of file remoteoutputgui.cpp.

References displayEventCounts(), displayEventTimer(), displaySettings(), DeviceAPI::getMasterTimer(), DeviceAPI::getSampleSink(), DeviceUISet::getSpectrum(), ColorMapper::GrayGold, ColorMapper::GrayGreenYellow, handleInputMessages(), m_countRecovered, m_countUnrecoverable, DeviceUISet::m_deviceAPI, m_deviceCenterFrequency, m_deviceSampleSink, m_deviceUISet, m_inputMessageQueue, m_lastCountRecovered, m_lastCountUnrecoverable, m_lastSampleCount, m_networkManager, m_paletteGreenText, m_paletteRedText, m_paletteWhiteText, m_resetCounts, m_statusTimer, m_time, m_updateTimer, networkManagerFinished(), openDeviceSettingsDialog(), sendSettings(), GLSpectrum::setCenterFrequency(), tick(), ui, updateHardware(), and updateStatus().

49  :
50  QWidget(parent),
51  ui(new Ui::RemoteOutputGui),
52  m_deviceUISet(deviceUISet),
53  m_settings(),
56  m_samplesCount(0),
57  m_tickCount(0),
60  m_doApplySettings(true),
61  m_forceSettings(true)
62 {
64  m_countRecovered = 0;
68  m_resetCounts = true;
69 
70  m_paletteGreenText.setColor(QPalette::WindowText, Qt::green);
71  m_paletteRedText.setColor(QPalette::WindowText, Qt::red);
72  m_paletteWhiteText.setColor(QPalette::WindowText, Qt::white);
73 
74  ui->setupUi(this);
75 
76  ui->centerFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold));
77  ui->centerFrequency->setValueRange(7, 0, pow(10,7));
78 
79  ui->sampleRate->setColorMapper(ColorMapper(ColorMapper::GrayGreenYellow));
80  ui->sampleRate->setValueRange(7, 32000U, 9000000U);
81 
82  ui->apiAddressLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
83 
84  connect(&(m_deviceUISet->m_deviceAPI->getMasterTimer()), SIGNAL(timeout()), this, SLOT(tick()));
85  connect(&m_updateTimer, SIGNAL(timeout()), this, SLOT(updateHardware()));
86  connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus()));
87  m_statusTimer.start(500);
88 
90 
91  connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages()), Qt::QueuedConnection);
92 
93  m_networkManager = new QNetworkAccessManager();
94  connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*)));
95 
97 
98  m_time.start();
101 
102  CRightClickEnabler *startStopRightClickEnabler = new CRightClickEnabler(ui->startStop);
103  connect(startStopRightClickEnabler, SIGNAL(rightClick(const QPoint &)), this, SLOT(openDeviceSettingsDialog(const QPoint &)));
104 
105  displaySettings();
106  sendSettings();
107 }
void networkManagerFinished(QNetworkReply *reply)
const QTimer & getMasterTimer() const
This is the DSPEngine master timer.
Definition: deviceapi.h:173
DeviceSampleSink * getSampleSink()
Return pointer to the device sample sink (single Tx) or nullptr.
Definition: deviceapi.cpp:222
RemoteOutputSettings m_settings
current settings
GLSpectrum * getSpectrum()
Direct spectrum getter.
Definition: deviceuiset.h:57
engine is before initialization
Definition: deviceapi.h:53
MessageQueue m_inputMessageQueue
std::size_t m_nbSinceLastFlowCheck
DeviceAPI * m_deviceAPI
Definition: deviceuiset.h:48
DeviceSampleSink * m_deviceSampleSink
void openDeviceSettingsDialog(const QPoint &p)
uint32_t m_lastCountUnrecoverable
void setCenterFrequency(qint64 frequency)
Definition: glspectrum.cpp:175
quint64 m_deviceCenterFrequency
Center frequency in device.
DeviceUISet * m_deviceUISet
Ui::RemoteOutputGui * ui
QNetworkAccessManager * m_networkManager
+ Here is the call graph for this function:

◆ ~RemoteOutputSinkGui()

RemoteOutputSinkGui::~RemoteOutputSinkGui ( )
virtual

Definition at line 109 of file remoteoutputgui.cpp.

References m_networkManager, networkManagerFinished(), and ui.

110 {
111  disconnect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(networkManagerFinished(QNetworkReply*)));
112  delete m_networkManager;
113  delete ui;
114 }
void networkManagerFinished(QNetworkReply *reply)
Ui::RemoteOutputGui * ui
QNetworkAccessManager * m_networkManager
+ Here is the call graph for this function:

Member Function Documentation

◆ analyzeApiReply()

void RemoteOutputSinkGui::analyzeApiReply ( const QJsonObject &  jsonObject)
private

Definition at line 550 of file remoteoutputgui.cpp.

References arg(), displayEventCounts(), displayEventStatus(), DeviceUISet::getSpectrum(), m_countRecovered, m_countUnrecoverable, m_deviceCenterFrequency, m_deviceUISet, m_lastCountRecovered, m_lastCountUnrecoverable, m_lastSampleCount, m_lastTimestampUs, m_resetCounts, GLSpectrum::setCenterFrequency(), and ui.

Referenced by networkManagerFinished().

551 {
552  QString infoLine;
553 
554  if (jsonObject.contains("RemoteSourceReport"))
555  {
556  QJsonObject report = jsonObject["RemoteSourceReport"].toObject();
557  m_deviceCenterFrequency = report["deviceCenterFreq"].toInt() * 1000;
559  ui->centerFrequency->setValue(m_deviceCenterFrequency/1000);
560  int remoteRate = report["deviceSampleRate"].toInt();
561  ui->remoteRateText->setText(tr("%1k").arg((float)(remoteRate) / 1000));
562  int queueSize = report["queueSize"].toInt();
563  queueSize = queueSize == 0 ? 10 : queueSize;
564  int queueLength = report["queueLength"].toInt();
565  QString queueLengthText = QString("%1/%2").arg(queueLength).arg(queueSize);
566  ui->queueLengthText->setText(queueLengthText);
567  int queueLengthPercent = (queueLength*100)/queueSize;
568  ui->queueLengthGauge->setValue(queueLengthPercent);
569  int unrecoverableCount = report["uncorrectableErrorsCount"].toInt();
570  int recoverableCount = report["correctableErrorsCount"].toInt();
571  uint64_t timestampUs = report["tvSec"].toInt()*1000000ULL + report["tvUSec"].toInt();
572 
573  if (!m_resetCounts)
574  {
575  int recoverableCountDelta = recoverableCount - m_lastCountRecovered;
576  int unrecoverableCountDelta = unrecoverableCount - m_lastCountUnrecoverable;
577  displayEventStatus(recoverableCountDelta, unrecoverableCountDelta);
578  m_countRecovered += recoverableCountDelta;
579  m_countUnrecoverable += unrecoverableCountDelta;
581  }
582 
583  uint32_t sampleCountDelta, sampleCount;
584  sampleCount = report["samplesCount"].toInt();
585 
586  if (sampleCount < m_lastSampleCount) {
587  sampleCountDelta = (0xFFFFFFFFU - m_lastSampleCount) + sampleCount + 1;
588  } else {
589  sampleCountDelta = sampleCount - m_lastSampleCount;
590  }
591 
592  if (sampleCountDelta == 0)
593  {
594  ui->allFramesDecoded->setStyleSheet("QToolButton { background-color : blue; }");
595  }
596 
597  double remoteStreamRate = sampleCountDelta*1e6 / (double) (timestampUs - m_lastTimestampUs);
598 
599  if (remoteStreamRate != 0) {
600  ui->remoteStreamRateText->setText(QString("%1").arg(remoteStreamRate, 0, 'f', 0));
601  }
602 
603  m_resetCounts = false;
604  m_lastCountRecovered = recoverableCount;
605  m_lastCountUnrecoverable = unrecoverableCount;
606  m_lastSampleCount = sampleCount;
607  m_lastTimestampUs = timestampUs;
608  }
609 
610  if (jsonObject.contains("version")) {
611  infoLine = "v" + jsonObject["version"].toString();
612  }
613 
614  if (jsonObject.contains("qtVersion")) {
615  infoLine += " Qt" + jsonObject["qtVersion"].toString();
616  }
617 
618  if (jsonObject.contains("architecture")) {
619  infoLine += " " + jsonObject["architecture"].toString();
620  }
621 
622  if (jsonObject.contains("os")) {
623  infoLine += " " + jsonObject["os"].toString();
624  }
625 
626  if (jsonObject.contains("dspRxBits") && jsonObject.contains("dspTxBits")) {
627  infoLine += QString(" %1/%2b").arg(jsonObject["dspRxBits"].toInt()).arg(jsonObject["dspTxBits"].toInt());
628  }
629 
630  if (infoLine.size() > 0) {
631  ui->infoText->setText(infoLine);
632  }
633 }
void displayEventStatus(int recoverableCount, int unrecoverableCount)
unsigned int uint32_t
Definition: rtptypes_win.h:46
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
GLSpectrum * getSpectrum()
Direct spectrum getter.
Definition: deviceuiset.h:57
uint32_t m_lastCountUnrecoverable
void setCenterFrequency(qint64 frequency)
Definition: glspectrum.cpp:175
quint64 m_deviceCenterFrequency
Center frequency in device.
DeviceUISet * m_deviceUISet
Ui::RemoteOutputGui * ui
unsigned __int64 uint64_t
Definition: rtptypes_win.h:48
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ blockApplySettings()

void RemoteOutputSinkGui::blockApplySettings ( bool  block)
private

Definition at line 116 of file remoteoutputgui.cpp.

References m_doApplySettings.

Referenced by deserialize(), displaySettings(), handleMessage(), and resetToDefaults().

117 {
118  m_doApplySettings = !block;
119 }
+ Here is the caller graph for this function:

◆ deserialize()

bool RemoteOutputSinkGui::deserialize ( const QByteArray &  data)
virtual

Implements PluginInstanceGUI.

Definition at line 150 of file remoteoutputgui.cpp.

References blockApplySettings(), RemoteOutputSettings::deserialize(), displaySettings(), m_forceSettings, m_settings, and sendSettings().

151 {
152  blockApplySettings(true);
153 
154  if(m_settings.deserialize(data))
155  {
156  displaySettings();
157  blockApplySettings(false);
158  m_forceSettings = true;
159  sendSettings();
160  return true;
161  }
162  else
163  {
164  blockApplySettings(false);
165  return false;
166  }
167 }
RemoteOutputSettings m_settings
current settings
bool deserialize(const QByteArray &data)
void blockApplySettings(bool block)
+ Here is the call graph for this function:

◆ destroy()

void RemoteOutputSinkGui::destroy ( )
virtual

Implements PluginInstanceGUI.

Definition at line 121 of file remoteoutputgui.cpp.

122 {
123  delete this;
124 }

◆ displayEventCounts()

void RemoteOutputSinkGui::displayEventCounts ( )
private

Definition at line 456 of file remoteoutputgui.cpp.

References m_countRecovered, m_countUnrecoverable, and ui.

Referenced by analyzeApiReply(), on_eventCountsReset_clicked(), and RemoteOutputSinkGui().

457 {
458  QString nstr = QString("%1").arg(m_countUnrecoverable, 3, 10, QChar('0'));
459  ui->eventUnrecText->setText(nstr);
460  nstr = QString("%1").arg(m_countRecovered, 3, 10, QChar('0'));
461  ui->eventRecText->setText(nstr);
462 }
Ui::RemoteOutputGui * ui
+ Here is the caller graph for this function:

◆ displayEventStatus()

void RemoteOutputSinkGui::displayEventStatus ( int  recoverableCount,
int  unrecoverableCount 
)
private

Definition at line 464 of file remoteoutputgui.cpp.

References ui.

Referenced by analyzeApiReply().

465 {
466 
467  if (unrecoverableCount == 0)
468  {
469  if (recoverableCount == 0) {
470  ui->allFramesDecoded->setStyleSheet("QToolButton { background-color : green; }");
471  } else {
472  ui->allFramesDecoded->setStyleSheet("QToolButton { background:rgb(79,79,79); }");
473  }
474  }
475  else
476  {
477  ui->allFramesDecoded->setStyleSheet("QToolButton { background-color : red; }");
478  }
479 }
Ui::RemoteOutputGui * ui
+ Here is the caller graph for this function:

◆ displayEventTimer()

void RemoteOutputSinkGui::displayEventTimer ( )
private

Definition at line 481 of file remoteoutputgui.cpp.

References m_time, and ui.

Referenced by on_eventCountsReset_clicked(), RemoteOutputSinkGui(), and tick().

482 {
483  int elapsedTimeMillis = m_time.elapsed();
484  QTime recordLength(0, 0, 0, 0);
485  recordLength = recordLength.addSecs(elapsedTimeMillis/1000);
486  QString s_time = recordLength.toString("HH:mm:ss");
487  ui->eventCountsTimeText->setText(s_time);
488 }
Ui::RemoteOutputGui * ui
+ Here is the caller graph for this function:

◆ displaySettings()

void RemoteOutputSinkGui::displaySettings ( )
private

Definition at line 231 of file remoteoutputgui.cpp.

References arg(), blockApplySettings(), RemoteOutputSettings::m_apiAddress, RemoteOutputSettings::m_apiPort, RemoteOutputSettings::m_channelIndex, RemoteOutputSettings::m_dataAddress, RemoteOutputSettings::m_dataPort, m_deviceCenterFrequency, RemoteOutputSettings::m_deviceIndex, RemoteOutputSettings::m_nbFECBlocks, RemoteOutputSettings::m_sampleRate, m_settings, RemoteOutputSettings::m_txDelay, and ui.

Referenced by deserialize(), handleMessage(), RemoteOutputSinkGui(), and resetToDefaults().

232 {
233  blockApplySettings(true);
234  ui->centerFrequency->setValue(m_deviceCenterFrequency / 1000);
235  ui->sampleRate->setValue(m_settings.m_sampleRate);
236  ui->txDelay->setValue(m_settings.m_txDelay*100);
237  ui->txDelayText->setText(tr("%1").arg(m_settings.m_txDelay*100));
238  ui->nbFECBlocks->setValue(m_settings.m_nbFECBlocks);
239 
240  QString s0 = QString::number(128 + m_settings.m_nbFECBlocks, 'f', 0);
241  QString s1 = QString::number(m_settings.m_nbFECBlocks, 'f', 0);
242  ui->nominalNbBlocksText->setText(tr("%1/%2").arg(s0).arg(s1));
243 
244  ui->deviceIndex->setText(tr("%1").arg(m_settings.m_deviceIndex));
245  ui->channelIndex->setText(tr("%1").arg(m_settings.m_channelIndex));
246  ui->apiAddress->setText(m_settings.m_apiAddress);
247  ui->apiPort->setText(tr("%1").arg(m_settings.m_apiPort));
248  ui->dataAddress->setText(m_settings.m_dataAddress);
249  ui->dataPort->setText(tr("%1").arg(m_settings.m_dataPort));
250  blockApplySettings(false);
251 }
RemoteOutputSettings m_settings
current settings
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
quint64 m_deviceCenterFrequency
Center frequency in device.
void blockApplySettings(bool block)
Ui::RemoteOutputGui * ui
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ displayTime()

void RemoteOutputSinkGui::displayTime ( )
private

◆ getCenterFrequency()

virtual qint64 RemoteOutputSinkGui::getCenterFrequency ( ) const
inlinevirtual

Implements PluginInstanceGUI.

Definition at line 84 of file remoteoutputgui.h.

84 { return m_deviceCenterFrequency; }
quint64 m_deviceCenterFrequency
Center frequency in device.

◆ getInputMessageQueue()

virtual MessageQueue* RemoteOutputSinkGui::getInputMessageQueue ( )
inlinevirtual

Implements PluginInstanceGUI.

Definition at line 88 of file remoteoutputgui.h.

88 { return &m_inputMessageQueue; }
MessageQueue m_inputMessageQueue

◆ getName()

QString RemoteOutputSinkGui::getName ( ) const
virtual

Implements PluginInstanceGUI.

Definition at line 131 of file remoteoutputgui.cpp.

132 {
133  return objectName();
134 }

◆ handleInputMessages

void RemoteOutputSinkGui::handleInputMessages ( )
privateslot

Definition at line 194 of file remoteoutputgui.cpp.

References DSPSignalNotification::getCenterFrequency(), DSPSignalNotification::getSampleRate(), handleMessage(), m_inputMessageQueue, m_sampleRate, Message::match(), MessageQueue::pop(), and updateSampleRate().

Referenced by RemoteOutputSinkGui().

195 {
196  Message* message;
197 
198  while ((message = m_inputMessageQueue.pop()) != 0)
199  {
200  if (DSPSignalNotification::match(*message))
201  {
202  DSPSignalNotification* notif = (DSPSignalNotification*) message;
203  m_sampleRate = notif->getSampleRate();
204  qDebug("RemoteOutputSinkGui::handleInputMessages: DSPSignalNotification: SampleRate:%d, CenterFrequency:%llu", notif->getSampleRate(), notif->getCenterFrequency());
206 
207  delete message;
208  }
209  else
210  {
211  if (handleMessage(*message)) {
212  delete message;
213  }
214  }
215  }
216 }
Message * pop()
Pop message from queue.
MessageQueue m_inputMessageQueue
qint64 getCenterFrequency() const
Definition: dspcommands.h:329
virtual bool handleMessage(const Message &message)
static bool match(const Message *message)
Definition: message.cpp:45
int getSampleRate() const
Definition: dspcommands.h:328
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ handleMessage()

bool RemoteOutputSinkGui::handleMessage ( const Message message)
virtual

Implements PluginInstanceGUI.

Definition at line 169 of file remoteoutputgui.cpp.

References blockApplySettings(), displaySettings(), RemoteOutput::MsgConfigureRemoteOutput::getSettings(), RemoteOutput::MsgStartStop::getStartStop(), m_settings, Message::match(), and ui.

Referenced by handleInputMessages().

170 {
172  {
174  m_settings = cfg.getSettings();
175  blockApplySettings(true);
176  displaySettings();
177  blockApplySettings(false);
178  return true;
179  }
180  else if (RemoteOutput::MsgStartStop::match(message))
181  {
183  blockApplySettings(true);
184  ui->startStop->setChecked(notif.getStartStop());
185  blockApplySettings(false);
186  return true;
187  }
188  else
189  {
190  return false;
191  }
192 }
const RemoteOutputSettings & getSettings() const
Definition: remoteoutput.h:47
RemoteOutputSettings m_settings
current settings
static bool match(const Message *message)
Definition: message.cpp:45
void blockApplySettings(bool block)
Ui::RemoteOutputGui * ui
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ networkManagerFinished

void RemoteOutputSinkGui::networkManagerFinished ( QNetworkReply *  reply)
privateslot

Definition at line 510 of file remoteoutputgui.cpp.

References analyzeApiReply(), and ui.

Referenced by RemoteOutputSinkGui(), and ~RemoteOutputSinkGui().

511 {
512  if (reply->error())
513  {
514  ui->apiAddressLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
515  ui->statusText->setText(reply->errorString());
516  return;
517  }
518 
519  QString answer = reply->readAll();
520 
521  try
522  {
523  QByteArray jsonBytes(answer.toStdString().c_str());
524  QJsonParseError error;
525  QJsonDocument doc = QJsonDocument::fromJson(jsonBytes, &error);
526 
527  if (error.error == QJsonParseError::NoError)
528  {
529  ui->apiAddressLabel->setStyleSheet("QLabel { background-color : green; }");
530  ui->statusText->setText(QString("API OK"));
531  analyzeApiReply(doc.object());
532  }
533  else
534  {
535  ui->apiAddressLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
536  QString errorMsg = QString("Reply JSON error: ") + error.errorString() + QString(" at offset ") + QString::number(error.offset);
537  ui->statusText->setText(QString("JSON error. See log"));
538  qInfo().noquote() << "RemoteOutputSinkGui::networkManagerFinished" << errorMsg;
539  }
540  }
541  catch (const std::exception& ex)
542  {
543  ui->apiAddressLabel->setStyleSheet("QLabel { background:rgb(79,79,79); }");
544  QString errorMsg = QString("Error parsing request: ") + ex.what();
545  ui->statusText->setText("Error parsing request. See log for details");
546  qInfo().noquote() << "RemoteOutputSinkGui::networkManagerFinished" << errorMsg;
547  }
548 }
void analyzeApiReply(const QJsonObject &jsonObject)
Ui::RemoteOutputGui * ui
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ on_apiAddress_returnPressed

void RemoteOutputSinkGui::on_apiAddress_returnPressed ( )
privateslot

Definition at line 353 of file remoteoutputgui.cpp.

References RemoteOutputSettings::m_apiAddress, RemoteOutputSettings::m_apiPort, m_networkManager, m_networkRequest, m_settings, sendSettings(), and ui.

354 {
355  m_settings.m_apiAddress = ui->apiAddress->text();
356  sendSettings();
357 
358  QString infoURL = QString("http://%1:%2/sdrangel").arg(m_settings.m_apiAddress).arg(m_settings.m_apiPort);
359  m_networkRequest.setUrl(QUrl(infoURL));
361 }
RemoteOutputSettings m_settings
current settings
QNetworkRequest m_networkRequest
Ui::RemoteOutputGui * ui
QNetworkAccessManager * m_networkManager
+ Here is the call graph for this function:

◆ on_apiApplyButton_clicked

void RemoteOutputSinkGui::on_apiApplyButton_clicked ( bool  checked)
privateslot

Definition at line 401 of file remoteoutputgui.cpp.

References RemoteOutputSettings::m_apiAddress, RemoteOutputSettings::m_apiPort, m_networkManager, m_networkRequest, m_settings, sendSettings(), and ui.

402 {
403  (void) checked;
404  m_settings.m_apiAddress = ui->apiAddress->text();
405 
406  bool apiOk;
407  int apiPort = ui->apiPort->text().toInt(&apiOk);
408 
409  if((apiOk) && (apiPort >= 1024) && (apiPort < 65535))
410  {
411  m_settings.m_apiPort = apiPort;
412  }
413 
414  sendSettings();
415 
416  QString infoURL = QString("http://%1:%2/sdrangel").arg(m_settings.m_apiAddress).arg(m_settings.m_apiPort);
417  m_networkRequest.setUrl(QUrl(infoURL));
419 }
RemoteOutputSettings m_settings
current settings
QNetworkRequest m_networkRequest
Ui::RemoteOutputGui * ui
QNetworkAccessManager * m_networkManager
+ Here is the call graph for this function:

◆ on_apiPort_returnPressed

void RemoteOutputSinkGui::on_apiPort_returnPressed ( )
privateslot

Definition at line 363 of file remoteoutputgui.cpp.

References RemoteOutputSettings::m_apiAddress, RemoteOutputSettings::m_apiPort, m_networkManager, m_networkRequest, m_settings, sendSettings(), and ui.

364 {
365  bool dataOk;
366  int apiPort = ui->apiPort->text().toInt(&dataOk);
367 
368  if((!dataOk) || (apiPort < 1024) || (apiPort > 65535)) {
369  return;
370  } else {
371  m_settings.m_apiPort = apiPort;
372  }
373 
374  sendSettings();
375 
376  QString infoURL = QString("http://%1:%2/sdrangel").arg(m_settings.m_apiAddress).arg(m_settings.m_apiPort);
377  m_networkRequest.setUrl(QUrl(infoURL));
379 }
RemoteOutputSettings m_settings
current settings
QNetworkRequest m_networkRequest
Ui::RemoteOutputGui * ui
QNetworkAccessManager * m_networkManager
+ Here is the call graph for this function:

◆ on_channelIndex_returnPressed

void RemoteOutputSinkGui::on_channelIndex_returnPressed ( )
privateslot

Definition at line 339 of file remoteoutputgui.cpp.

References RemoteOutputSettings::m_channelIndex, m_settings, sendSettings(), and ui.

340 {
341  bool dataOk;
342  int channelIndex = ui->channelIndex->text().toInt(&dataOk);
343 
344  if ((!dataOk) || (channelIndex < 0)) {
345  return;
346  } else {
347  m_settings.m_channelIndex = channelIndex;
348  }
349 
350  sendSettings();
351 }
RemoteOutputSettings m_settings
current settings
Ui::RemoteOutputGui * ui
+ Here is the call graph for this function:

◆ on_dataAddress_returnPressed

void RemoteOutputSinkGui::on_dataAddress_returnPressed ( )
privateslot

Definition at line 381 of file remoteoutputgui.cpp.

References RemoteOutputSettings::m_dataAddress, m_settings, sendSettings(), and ui.

382 {
383  m_settings.m_dataAddress = ui->dataAddress->text();
384  sendSettings();
385 }
RemoteOutputSettings m_settings
current settings
Ui::RemoteOutputGui * ui
+ Here is the call graph for this function:

◆ on_dataApplyButton_clicked

void RemoteOutputSinkGui::on_dataApplyButton_clicked ( bool  checked)
privateslot

Definition at line 421 of file remoteoutputgui.cpp.

References RemoteOutputSettings::m_dataAddress, RemoteOutputSettings::m_dataPort, m_settings, sendSettings(), and ui.

422 {
423  (void) checked;
424  m_settings.m_dataAddress = ui->dataAddress->text();
425 
426  bool dataOk;
427  int udpDataPort = ui->dataPort->text().toInt(&dataOk);
428 
429  if((dataOk) && (udpDataPort >= 1024) && (udpDataPort < 65535))
430  {
431  m_settings.m_dataPort = udpDataPort;
432  }
433 
434  sendSettings();
435 }
RemoteOutputSettings m_settings
current settings
Ui::RemoteOutputGui * ui
+ Here is the call graph for this function:

◆ on_dataPort_returnPressed

void RemoteOutputSinkGui::on_dataPort_returnPressed ( )
privateslot

Definition at line 387 of file remoteoutputgui.cpp.

References RemoteOutputSettings::m_dataPort, m_settings, sendSettings(), and ui.

388 {
389  bool dataOk;
390  int dataPort = ui->dataPort->text().toInt(&dataOk);
391 
392  if((!dataOk) || (dataPort < 1024) || (dataPort > 65535)) {
393  return;
394  } else {
395  m_settings.m_dataPort = dataPort;
396  }
397 
398  sendSettings();
399 }
RemoteOutputSettings m_settings
current settings
Ui::RemoteOutputGui * ui
+ Here is the call graph for this function:

◆ on_deviceIndex_returnPressed

void RemoteOutputSinkGui::on_deviceIndex_returnPressed ( )
privateslot

Definition at line 325 of file remoteoutputgui.cpp.

References RemoteOutputSettings::m_deviceIndex, m_settings, sendSettings(), and ui.

326 {
327  bool dataOk;
328  int deviceIndex = ui->deviceIndex->text().toInt(&dataOk);
329 
330  if ((!dataOk) || (deviceIndex < 0)) {
331  return;
332  } else {
333  m_settings.m_deviceIndex = deviceIndex;
334  }
335 
336  sendSettings();
337 }
RemoteOutputSettings m_settings
current settings
Ui::RemoteOutputGui * ui
+ Here is the call graph for this function:

◆ on_eventCountsReset_clicked

void RemoteOutputSinkGui::on_eventCountsReset_clicked ( bool  checked)
privateslot

Definition at line 446 of file remoteoutputgui.cpp.

References displayEventCounts(), displayEventTimer(), m_countRecovered, m_countUnrecoverable, and m_time.

447 {
448  (void) checked;
450  m_countRecovered = 0;
451  m_time.start();
454 }
+ Here is the call graph for this function:

◆ on_nbFECBlocks_valueChanged

void RemoteOutputSinkGui::on_nbFECBlocks_valueChanged ( int  value)
privateslot

Definition at line 313 of file remoteoutputgui.cpp.

References arg(), RemoteOutputSettings::m_nbFECBlocks, m_settings, sendSettings(), ui, and updateTxDelayTooltip().

314 {
315  m_settings.m_nbFECBlocks = value;
316  int nbOriginalBlocks = 128;
317  int nbFECBlocks = value;
318  QString s = QString::number(nbOriginalBlocks + nbFECBlocks, 'f', 0);
319  QString s1 = QString::number(nbFECBlocks, 'f', 0);
320  ui->nominalNbBlocksText->setText(tr("%1/%2").arg(s).arg(s1));
322  sendSettings();
323 }
RemoteOutputSettings m_settings
current settings
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
Ui::RemoteOutputGui * ui
+ Here is the call graph for this function:

◆ on_sampleRate_changed

void RemoteOutputSinkGui::on_sampleRate_changed ( quint64  value)
privateslot

Definition at line 298 of file remoteoutputgui.cpp.

References RemoteOutputSettings::m_sampleRate, m_settings, sendSettings(), and updateTxDelayTooltip().

299 {
300  m_settings.m_sampleRate = value;
302  sendSettings();
303 }
RemoteOutputSettings m_settings
current settings
+ Here is the call graph for this function:

◆ on_startStop_toggled

void RemoteOutputSinkGui::on_startStop_toggled ( bool  checked)
privateslot

Definition at line 437 of file remoteoutputgui.cpp.

References RemoteOutput::MsgStartStop::create(), DeviceSampleSink::getInputMessageQueue(), m_deviceSampleSink, m_doApplySettings, and MessageQueue::push().

438 {
439  if (m_doApplySettings)
440  {
443  }
444 }
void push(Message *message, bool emitSignal=true)
Push message onto queue.
MessageQueue * getInputMessageQueue()
static MsgStartStop * create(bool startStop)
Definition: remoteoutput.h:92
DeviceSampleSink * m_deviceSampleSink
+ Here is the call graph for this function:

◆ on_txDelay_valueChanged

void RemoteOutputSinkGui::on_txDelay_valueChanged ( int  value)
privateslot

Definition at line 305 of file remoteoutputgui.cpp.

References arg(), m_settings, RemoteOutputSettings::m_txDelay, sendSettings(), ui, and updateTxDelayTooltip().

306 {
307  m_settings.m_txDelay = value / 100.0;
308  ui->txDelayText->setText(tr("%1").arg(value));
310  sendSettings();
311 }
RemoteOutputSettings m_settings
current settings
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
Ui::RemoteOutputGui * ui
+ Here is the call graph for this function:

◆ openDeviceSettingsDialog

void RemoteOutputSinkGui::openDeviceSettingsDialog ( const QPoint &  p)
privateslot

Definition at line 635 of file remoteoutputgui.cpp.

References BasicDeviceSettingsDialog::getReverseAPIAddress(), BasicDeviceSettingsDialog::getReverseAPIDeviceIndex(), BasicDeviceSettingsDialog::getReverseAPIPort(), RemoteOutputSettings::m_reverseAPIAddress, RemoteOutputSettings::m_reverseAPIDeviceIndex, RemoteOutputSettings::m_reverseAPIPort, m_settings, RemoteOutputSettings::m_useReverseAPI, sendSettings(), BasicDeviceSettingsDialog::setReverseAPIAddress(), BasicDeviceSettingsDialog::setReverseAPIDeviceIndex(), BasicDeviceSettingsDialog::setReverseAPIPort(), BasicDeviceSettingsDialog::setUseReverseAPI(), and BasicDeviceSettingsDialog::useReverseAPI().

Referenced by RemoteOutputSinkGui().

636 {
637  BasicDeviceSettingsDialog dialog(this);
638  dialog.setUseReverseAPI(m_settings.m_useReverseAPI);
639  dialog.setReverseAPIAddress(m_settings.m_reverseAPIAddress);
640  dialog.setReverseAPIPort(m_settings.m_reverseAPIPort);
641  dialog.setReverseAPIDeviceIndex(m_settings.m_reverseAPIDeviceIndex);
642 
643  dialog.move(p);
644  dialog.exec();
645 
646  m_settings.m_useReverseAPI = dialog.useReverseAPI();
647  m_settings.m_reverseAPIAddress = dialog.getReverseAPIAddress();
648  m_settings.m_reverseAPIPort = dialog.getReverseAPIPort();
649  m_settings.m_reverseAPIDeviceIndex = dialog.getReverseAPIDeviceIndex();
650 
651  sendSettings();
652 }
RemoteOutputSettings m_settings
current settings
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ resetToDefaults()

void RemoteOutputSinkGui::resetToDefaults ( )
virtual

Implements PluginInstanceGUI.

Definition at line 136 of file remoteoutputgui.cpp.

References blockApplySettings(), displaySettings(), m_settings, RemoteOutputSettings::resetToDefaults(), and sendSettings().

137 {
138  blockApplySettings(true);
140  displaySettings();
141  blockApplySettings(false);
142  sendSettings();
143 }
RemoteOutputSettings m_settings
current settings
void blockApplySettings(bool block)
+ Here is the call graph for this function:

◆ sendControl()

void RemoteOutputSinkGui::sendControl ( bool  force = false)
private

◆ sendSettings()

void RemoteOutputSinkGui::sendSettings ( )
private

◆ serialize()

QByteArray RemoteOutputSinkGui::serialize ( ) const
virtual

Implements PluginInstanceGUI.

Definition at line 145 of file remoteoutputgui.cpp.

References m_settings, and RemoteOutputSettings::serialize().

146 {
147  return m_settings.serialize();
148 }
RemoteOutputSettings m_settings
current settings
QByteArray serialize() const
+ Here is the call graph for this function:

◆ setCenterFrequency()

virtual void RemoteOutputSinkGui::setCenterFrequency ( qint64  centerFrequency)
inlinevirtual

Implements PluginInstanceGUI.

Definition at line 85 of file remoteoutputgui.h.

85 { (void) centerFrequency; }

◆ setName()

void RemoteOutputSinkGui::setName ( const QString &  name)
virtual

Implements PluginInstanceGUI.

Definition at line 126 of file remoteoutputgui.cpp.

127 {
128  setObjectName(name);
129 }

◆ tick

void RemoteOutputSinkGui::tick ( )
privateslot

Definition at line 490 of file remoteoutputgui.cpp.

References displayEventTimer(), RemoteOutputSettings::m_apiAddress, RemoteOutputSettings::m_apiPort, RemoteOutputSettings::m_channelIndex, RemoteOutputSettings::m_deviceIndex, m_networkManager, m_networkRequest, m_settings, and m_tickCount.

Referenced by RemoteOutputSinkGui().

491 {
492  if (++m_tickCount == 20) // once per second
493  {
494  QString reportURL;
495 
496  reportURL = QString("http://%1:%2/sdrangel/deviceset/%3/channel/%4/report")
498  .arg(m_settings.m_apiPort)
501  m_networkRequest.setUrl(QUrl(reportURL));
503 
505 
506  m_tickCount = 0;
507  }
508 }
RemoteOutputSettings m_settings
current settings
QNetworkRequest m_networkRequest
QNetworkAccessManager * m_networkManager
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ updateHardware

void RemoteOutputSinkGui::updateHardware ( )
privateslot

Definition at line 260 of file remoteoutputgui.cpp.

References RemoteOutput::MsgConfigureRemoteOutput::create(), DeviceSampleSink::getInputMessageQueue(), m_deviceSampleSink, m_forceSettings, m_settings, m_updateTimer, and MessageQueue::push().

Referenced by RemoteOutputSinkGui().

261 {
262  qDebug() << "RemoteOutputSinkGui::updateHardware";
265  m_forceSettings = false;
266  m_updateTimer.stop();
267 }
void push(Message *message, bool emitSignal=true)
Push message onto queue.
static MsgConfigureRemoteOutput * create(const RemoteOutputSettings &settings, bool force=false)
Definition: remoteoutput.h:50
RemoteOutputSettings m_settings
current settings
MessageQueue * getInputMessageQueue()
DeviceSampleSink * m_deviceSampleSink
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ updateSampleRate()

void RemoteOutputSinkGui::updateSampleRate ( )
private

Definition at line 218 of file remoteoutputgui.cpp.

References arg(), DeviceUISet::getSpectrum(), m_deviceUISet, m_sampleRate, GLSpectrum::setSampleRate(), and ui.

Referenced by handleInputMessages().

219 {
221  ui->deviceRateText->setText(tr("%1k").arg((float)(m_sampleRate) / 1000));
222 }
void setSampleRate(qint32 sampleRate)
Definition: glspectrum.cpp:211
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
GLSpectrum * getSpectrum()
Direct spectrum getter.
Definition: deviceuiset.h:57
DeviceUISet * m_deviceUISet
Ui::RemoteOutputGui * ui
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ updateStatus

void RemoteOutputSinkGui::updateStatus ( )
privateslot

Definition at line 269 of file remoteoutputgui.cpp.

References DeviceAPI::errorMessage(), DeviceUISet::m_deviceAPI, m_deviceUISet, m_lastEngineState, DeviceAPI::state(), DeviceAPI::StError, DeviceAPI::StIdle, DeviceAPI::StNotStarted, DeviceAPI::StRunning, and ui.

Referenced by RemoteOutputSinkGui().

270 {
271  int state = m_deviceUISet->m_deviceAPI->state();
272 
273  if(m_lastEngineState != state)
274  {
275  switch(state)
276  {
278  ui->startStop->setStyleSheet("QToolButton { background:rgb(79,79,79); }");
279  break;
280  case DeviceAPI::StIdle:
281  ui->startStop->setStyleSheet("QToolButton { background-color : blue; }");
282  break;
284  ui->startStop->setStyleSheet("QToolButton { background-color : green; }");
285  break;
286  case DeviceAPI::StError:
287  ui->startStop->setStyleSheet("QToolButton { background-color : red; }");
288  QMessageBox::information(this, tr("Message"), m_deviceUISet->m_deviceAPI->errorMessage());
289  break;
290  default:
291  break;
292  }
293 
294  m_lastEngineState = state;
295  }
296 }
QString errorMessage()
Last error message from the device engine.
Definition: deviceapi.cpp:290
engine is before initialization
Definition: deviceapi.h:53
EngineState state() const
Return the state of the device engine corresponding to the stream type.
Definition: deviceapi.cpp:277
DeviceAPI * m_deviceAPI
Definition: deviceuiset.h:48
engine is idle
Definition: deviceapi.h:54
engine is running
Definition: deviceapi.h:56
DeviceUISet * m_deviceUISet
Ui::RemoteOutputGui * ui
engine is in error
Definition: deviceapi.h:57
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ updateTxDelayTooltip()

void RemoteOutputSinkGui::updateTxDelayTooltip ( )
private

Definition at line 224 of file remoteoutputgui.cpp.

Referenced by on_nbFECBlocks_valueChanged(), on_sampleRate_changed(), and on_txDelay_valueChanged().

225 {
226  int samplesPerBlock = RemoteNbBytesPerBlock / (SDR_RX_SAMP_SZ <= 16 ? 4 : 8);
227  double delay = ((127*samplesPerBlock*m_settings.m_txDelay) / m_settings.m_sampleRate)/(128 + m_settings.m_nbFECBlocks);
228  ui->txDelayText->setToolTip(tr("%1 us").arg(QString::number(delay*1e6, 'f', 0)));
229 }
RemoteOutputSettings m_settings
current settings
Fixed< IntType, IntBits > arg(const std::complex< Fixed< IntType, IntBits > > &val)
Definition: fixed.h:2401
#define SDR_RX_SAMP_SZ
Definition: dsptypes.h:32
Ui::RemoteOutputGui * ui
+ Here is the caller graph for this function:

Member Data Documentation

◆ m_controlSettings

RemoteOutputSettings RemoteOutputSinkGui::m_controlSettings
private

settings last sent to device via control port

Definition at line 96 of file remoteoutputgui.h.

◆ m_countRecovered

uint32_t RemoteOutputSinkGui::m_countRecovered
private

◆ m_countUnrecoverable

uint32_t RemoteOutputSinkGui::m_countUnrecoverable
private

◆ m_deviceCenterFrequency

quint64 RemoteOutputSinkGui::m_deviceCenterFrequency
private

Center frequency in device.

Definition at line 101 of file remoteoutputgui.h.

Referenced by analyzeApiReply(), displaySettings(), and RemoteOutputSinkGui().

◆ m_deviceSampleSink

DeviceSampleSink* RemoteOutputSinkGui::m_deviceSampleSink
private

Definition at line 99 of file remoteoutputgui.h.

Referenced by on_startStop_toggled(), RemoteOutputSinkGui(), and updateHardware().

◆ m_deviceUISet

DeviceUISet* RemoteOutputSinkGui::m_deviceUISet
private

◆ m_doApplySettings

bool RemoteOutputSinkGui::m_doApplySettings
private

Definition at line 106 of file remoteoutputgui.h.

Referenced by blockApplySettings(), and on_startStop_toggled().

◆ m_forceSettings

bool RemoteOutputSinkGui::m_forceSettings
private

Definition at line 107 of file remoteoutputgui.h.

Referenced by deserialize(), and updateHardware().

◆ m_inputMessageQueue

MessageQueue RemoteOutputSinkGui::m_inputMessageQueue
private

Definition at line 122 of file remoteoutputgui.h.

Referenced by handleInputMessages(), and RemoteOutputSinkGui().

◆ m_lastCountRecovered

uint32_t RemoteOutputSinkGui::m_lastCountRecovered
private

Definition at line 112 of file remoteoutputgui.h.

Referenced by analyzeApiReply(), and RemoteOutputSinkGui().

◆ m_lastCountUnrecoverable

uint32_t RemoteOutputSinkGui::m_lastCountUnrecoverable
private

Definition at line 111 of file remoteoutputgui.h.

Referenced by analyzeApiReply(), and RemoteOutputSinkGui().

◆ m_lastEngineState

int RemoteOutputSinkGui::m_lastEngineState
private

Definition at line 105 of file remoteoutputgui.h.

Referenced by updateStatus().

◆ m_lastSampleCount

uint32_t RemoteOutputSinkGui::m_lastSampleCount
private

Definition at line 113 of file remoteoutputgui.h.

Referenced by analyzeApiReply(), and RemoteOutputSinkGui().

◆ m_lastTimestampUs

uint64_t RemoteOutputSinkGui::m_lastTimestampUs
private

Definition at line 114 of file remoteoutputgui.h.

Referenced by analyzeApiReply().

◆ m_nbSinceLastFlowCheck

std::size_t RemoteOutputSinkGui::m_nbSinceLastFlowCheck
private

Definition at line 104 of file remoteoutputgui.h.

◆ m_networkManager

QNetworkAccessManager* RemoteOutputSinkGui::m_networkManager
private

◆ m_networkRequest

QNetworkRequest RemoteOutputSinkGui::m_networkRequest
private

◆ m_paletteGreenText

QPalette RemoteOutputSinkGui::m_paletteGreenText
private

Definition at line 118 of file remoteoutputgui.h.

Referenced by RemoteOutputSinkGui().

◆ m_paletteRedText

QPalette RemoteOutputSinkGui::m_paletteRedText
private

Definition at line 119 of file remoteoutputgui.h.

Referenced by RemoteOutputSinkGui().

◆ m_paletteWhiteText

QPalette RemoteOutputSinkGui::m_paletteWhiteText
private

Definition at line 120 of file remoteoutputgui.h.

Referenced by RemoteOutputSinkGui().

◆ m_resetCounts

bool RemoteOutputSinkGui::m_resetCounts
private

Definition at line 115 of file remoteoutputgui.h.

Referenced by analyzeApiReply(), and RemoteOutputSinkGui().

◆ m_sampleRate

int RemoteOutputSinkGui::m_sampleRate
private

Definition at line 100 of file remoteoutputgui.h.

Referenced by handleInputMessages(), and updateSampleRate().

◆ m_samplesCount

int RemoteOutputSinkGui::m_samplesCount
private

Definition at line 102 of file remoteoutputgui.h.

◆ m_settings

RemoteOutputSettings RemoteOutputSinkGui::m_settings
private

◆ m_statusTimer

QTimer RemoteOutputSinkGui::m_statusTimer
private

Definition at line 98 of file remoteoutputgui.h.

Referenced by RemoteOutputSinkGui().

◆ m_tickCount

uint32_t RemoteOutputSinkGui::m_tickCount
private

Definition at line 103 of file remoteoutputgui.h.

Referenced by tick().

◆ m_time

QTime RemoteOutputSinkGui::m_time
private

◆ m_updateTimer

QTimer RemoteOutputSinkGui::m_updateTimer
private

Definition at line 97 of file remoteoutputgui.h.

Referenced by RemoteOutputSinkGui(), sendSettings(), and updateHardware().

◆ ui

Ui::RemoteOutputGui* RemoteOutputSinkGui::ui
private

The documentation for this class was generated from the following files: