diff --git a/plugins/channelrx/demoddatv/datvconstellation.h b/plugins/channelrx/demoddatv/datvconstellation.h index 79d956b0f..cdd5c9f6a 100644 --- a/plugins/channelrx/demoddatv/datvconstellation.h +++ b/plugins/channelrx/demoddatv/datvconstellation.h @@ -114,7 +114,7 @@ template<typename T> struct datvconstellation: runnable unsigned long decimation; long pixels_per_frame; cstln_lut<eucl_ss, 256> **cstln; // Optional ptr to optional constellation - TVScreen *m_objDATVScreen; + TVScreen *m_tvScreen; pipereader<std::complex<T> > in; unsigned long phase; std::vector<int> cstln_rows; @@ -126,14 +126,14 @@ template<typename T> struct datvconstellation: runnable T _xymin, T _xymax, const char *_name = nullptr, - TVScreen *objDATVScreen = nullptr) : + TVScreen *tvScreen = nullptr) : runnable(sch, _name ? _name : _in.name), xymin(_xymin), xymax(_xymax), decimation(DEFAULT_GUI_DECIMATION), pixels_per_frame(1024), cstln(0), - m_objDATVScreen(objDATVScreen), + m_tvScreen(tvScreen), in(_in), phase(0) { @@ -144,16 +144,16 @@ template<typename T> struct datvconstellation: runnable //Symbols while (in.readable() >= pixels_per_frame) { - if ((!phase) && m_objDATVScreen) + if ((!phase) && m_tvScreen) { - m_objDATVScreen->resetImage(); + m_tvScreen->resetImage(); std::complex<T> *p = in.rd(), *pend = p + pixels_per_frame; for (; p < pend; ++p) { - m_objDATVScreen->selectRow(256 * (p->real() - xymin) / (xymax - xymin)); - m_objDATVScreen->setDataColor( + m_tvScreen->selectRow(256 * (p->real() - xymin) / (xymax - xymin)); + m_tvScreen->setDataColor( 256 - 256 * ((p->imag() - xymin) / (xymax - xymin)), 255, 0, 255); } @@ -166,12 +166,12 @@ template<typename T> struct datvconstellation: runnable for (;(row_it != cstln_rows.end()) && (col_it != cstln_cols.end()); ++row_it, ++col_it) { - m_objDATVScreen->selectRow(*row_it); - m_objDATVScreen->setDataColor(*col_it, 250, 250, 5); + m_tvScreen->selectRow(*row_it); + m_tvScreen->setDataColor(*col_it, 250, 250, 5); } } - m_objDATVScreen->renderImage(0); + m_tvScreen->renderImage(0); } in.read(pixels_per_frame); diff --git a/plugins/channelrx/demoddatv/datvdemod.cpp b/plugins/channelrx/demoddatv/datvdemod.cpp index bff0c8db5..4ac7da94d 100644 --- a/plugins/channelrx/demoddatv/datvdemod.cpp +++ b/plugins/channelrx/demoddatv/datvdemod.cpp @@ -129,9 +129,106 @@ void DATVDemod::applySettings(const DATVDemodSettings& settings, bool force) QString debugMsg = tr("DATVDemod::applySettings: force: %1").arg(force); settings.debug(debugMsg); + QList<QString> reverseAPIKeys; + + if (settings.m_rgbColor != m_settings.m_rgbColor) { + reverseAPIKeys.append("rgbColor"); + } + if (settings.m_title != m_settings.m_title) { + reverseAPIKeys.append("title"); + } + if (settings.m_rfBandwidth != m_settings.m_rfBandwidth) { + reverseAPIKeys.append("rfBandwidth"); + } + if (settings.m_centerFrequency != m_settings.m_centerFrequency) { + reverseAPIKeys.append("centerFrequency"); + } + if (settings.m_standard != m_settings.m_standard) { + reverseAPIKeys.append("standard"); + } + if (settings.m_modulation != m_settings.m_modulation) { + reverseAPIKeys.append("modulation"); + } + if (settings.m_fec != m_settings.m_fec) { + reverseAPIKeys.append("fec"); + } + if (settings.m_softLDPC != m_settings.m_softLDPC) { + reverseAPIKeys.append("softLDPC"); + } + if (settings.m_softLDPCToolPath != m_settings.m_softLDPCToolPath) { + reverseAPIKeys.append("softLDPCToolPath"); + } + if (settings.m_softLDPCMaxTrials != m_settings.m_softLDPCMaxTrials) { + reverseAPIKeys.append("softLDPCMaxTrials"); + } + if (settings.m_maxBitflips != m_settings.m_maxBitflips) { + reverseAPIKeys.append("maxBitflips"); + } + if (settings.m_audioMute != m_settings.m_audioMute) { + reverseAPIKeys.append("audioMute"); + } + if (settings.m_audioDeviceName != m_settings.m_audioDeviceName) { + reverseAPIKeys.append("audioDeviceName"); + } + if (settings.m_symbolRate != m_settings.m_symbolRate) { + reverseAPIKeys.append("symbolRate"); + } + if (settings.m_notchFilters != m_settings.m_notchFilters) { + reverseAPIKeys.append("notchFilters"); + } + if (settings.m_allowDrift != m_settings.m_allowDrift) { + reverseAPIKeys.append("allowDrift"); + } + if (settings.m_fastLock != m_settings.m_fastLock) { + reverseAPIKeys.append("fastLock"); + } + if (settings.m_filter != m_settings.m_filter) { + reverseAPIKeys.append("filter"); + } + if (settings.m_hardMetric != m_settings.m_hardMetric) { + reverseAPIKeys.append("hardMetric"); + } + if (settings.m_rollOff != m_settings.m_rollOff) { + reverseAPIKeys.append("rollOff"); + } + if (settings.m_viterbi != m_settings.m_viterbi) { + reverseAPIKeys.append("viterbi"); + } + if (settings.m_excursion != m_settings.m_excursion) { + reverseAPIKeys.append("excursion"); + } + if (settings.m_audioVolume != m_settings.m_audioVolume) { + reverseAPIKeys.append("audioVolume"); + } + if (settings.m_videoMute != m_settings.m_videoMute) { + reverseAPIKeys.append("videoMute"); + } + if (settings.m_udpTSAddress != m_settings.m_udpTSAddress) { + reverseAPIKeys.append("udpTSAddress"); + } + if (settings.m_udpTSPort != m_settings.m_udpTSPort) { + reverseAPIKeys.append("udpTSPort"); + } + if (settings.m_udpTS != m_settings.m_udpTS) { + reverseAPIKeys.append("udpTS"); + } + if (settings.m_playerEnable != m_settings.m_playerEnable) { + reverseAPIKeys.append("playerEnable"); + } + DATVDemodBaseband::MsgConfigureDATVDemodBaseband *msg = DATVDemodBaseband::MsgConfigureDATVDemodBaseband::create(settings, force); m_basebandSink->getInputMessageQueue()->push(msg); + if (settings.m_useReverseAPI) + { + bool fullUpdate = ((m_settings.m_useReverseAPI != settings.m_useReverseAPI) && settings.m_useReverseAPI) || + (m_settings.m_reverseAPIAddress != settings.m_reverseAPIAddress) || + (m_settings.m_reverseAPIPort != settings.m_reverseAPIPort) || + (m_settings.m_reverseAPIDeviceIndex != settings.m_reverseAPIDeviceIndex) || + (m_settings.m_reverseAPIChannelIndex != settings.m_reverseAPIChannelIndex); + webapiReverseSendSettings(reverseAPIKeys, settings, fullUpdate || force); + } + m_settings = settings; } @@ -274,6 +371,9 @@ void DATVDemod::webapiUpdateChannelSettings( if (channelSettingsKeys.contains("udpTS")) { settings.m_udpTS = response.getDatvDemodSettings()->getUdpTs() == 1; } + if (channelSettingsKeys.contains("playerEnable")) { + settings.m_playerEnable = response.getDatvDemodSettings()->getPlayerEnable() == 1; + } if (channelSettingsKeys.contains("streamIndex")) { settings.m_streamIndex = response.getDatvDemodSettings()->getStreamIndex(); } @@ -346,6 +446,8 @@ void DATVDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& res } response.getDatvDemodSettings()->setUdpTsPort(settings.m_udpTSPort); + response.getDatvDemodSettings()->setUdpTs(settings.m_udpTS ? 1 : 0); + response.getDatvDemodSettings()->setPlayerEnable(settings.m_playerEnable ? 1 : 0); response.getDatvDemodSettings()->setStreamIndex(settings.m_streamIndex); response.getDatvDemodSettings()->setUseReverseApi(settings.m_useReverseAPI ? 1 : 0); @@ -372,6 +474,8 @@ void DATVDemod::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& respons response.getDatvDemodReport()->setUdpRunning(udpRunning() ? 1 : 0); response.getDatvDemodReport()->setVideoActive(videoActive() ? 1 : 0); response.getDatvDemodReport()->setVideoDecodeOk(videoDecodeOK() ? 1 : 0); + response.getDatvDemodReport()->setMer(getMERAvg()); + response.getDatvDemodReport()->setCnr(getCNRAvg()); } void DATVDemod::sendChannelSettings( @@ -493,6 +597,9 @@ void DATVDemod::webapiFormatChannelSettings( if (channelSettingsKeys.contains("udpTS") || force) { swgDATVDemodSettings->setUdpTs(settings.m_udpTS ? 1 : 0); } + if (channelSettingsKeys.contains("playerEnable") || force) { + swgDATVDemodSettings->setPlayerEnable(settings.m_playerEnable ? 1 : 0); + } if (channelSettingsKeys.contains("streamIndex") || force) { swgDATVDemodSettings->setStreamIndex(settings.m_streamIndex); } diff --git a/plugins/channelrx/demoddatv/datvdemod.h b/plugins/channelrx/demoddatv/datvdemod.h index 6c4bab512..40dc093f9 100644 --- a/plugins/channelrx/demoddatv/datvdemod.h +++ b/plugins/channelrx/demoddatv/datvdemod.h @@ -99,7 +99,7 @@ public: m_basebandSink->setMessageQueueToGUI(queue); } - void SetTVScreen(TVScreen *objScreen) { m_basebandSink->setTVScreen(objScreen); } + void SetTVScreen(TVScreen *tvScreen) { m_basebandSink->setTVScreen(tvScreen); } void SetVideoRender(DATVideoRender *objScreen) { m_basebandSink->SetVideoRender(objScreen); } DATVideostream *getVideoStream() { return m_basebandSink->getVideoStream(); } DATVUDPStream *getUDPStream() { return m_basebandSink->getUDPStream(); } diff --git a/plugins/channelrx/demoddatv/datvdemodgui.cpp b/plugins/channelrx/demoddatv/datvdemodgui.cpp index c2f6af455..b2d14a95d 100644 --- a/plugins/channelrx/demoddatv/datvdemodgui.cpp +++ b/plugins/channelrx/demoddatv/datvdemodgui.cpp @@ -167,7 +167,7 @@ void DATVDemodGUI::onMenuDialogCalled(const QPoint &p) else if ((m_contextMenuType == ContextMenuStreamSettings) && (m_deviceUISet->m_deviceMIMOEngine)) { DeviceStreamSelectionDialog dialog(this); - dialog.setNumberOfStreams(m_objDATVDemod->getNumberOfDeviceStreams()); + dialog.setNumberOfStreams(m_datvDemod->getNumberOfDeviceStreams()); dialog.setStreamIndex(m_settings.m_streamIndex); dialog.move(p); dialog.exec(); @@ -196,6 +196,7 @@ DATVDemodGUI::DATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, Ba { ui->setupUi(this); ui->screenTV->setColor(true); + ui->screenTV->resizeTVScreen(256,256); setAttribute(Qt::WA_DeleteOnClose, true); connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); connect(this, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(onMenuDialogCalled(const QPoint &))); @@ -209,16 +210,16 @@ DATVDemodGUI::DATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, Ba ui->cnrMeter->setRange(0, 30); ui->cnrMeter->setAverageSmoothing(2); - m_objDATVDemod = (DATVDemod*) rxChannel; - m_objDATVDemod->setMessageQueueToGUI(getInputMessageQueue()); + m_datvDemod = (DATVDemod*) rxChannel; + m_datvDemod->setMessageQueueToGUI(getInputMessageQueue()); - m_objDATVDemod->SetTVScreen(ui->screenTV); - m_objDATVDemod->SetVideoRender(ui->screenTV_2); + m_datvDemod->SetTVScreen(ui->screenTV); + m_datvDemod->SetVideoRender(ui->screenTV_2); if (m_settings.m_playerEnable) { - connect(m_objDATVDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); + connect(m_datvDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); } else { - connect(m_objDATVDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); + connect(m_datvDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); } connect(ui->screenTV_2, &DATVideoRender::onMetaDataChanged, this, &DATVDemodGUI::on_StreamMetaDataChanged); @@ -377,13 +378,13 @@ void DATVDemodGUI::displaySettings() if (m_settings.m_playerEnable) { - disconnect(m_objDATVDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); - connect(m_objDATVDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); + disconnect(m_datvDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); + connect(m_datvDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); } else { - disconnect(m_objDATVDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); - connect(m_objDATVDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); + disconnect(m_datvDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); + connect(m_datvDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); } blockApplySettings(false); @@ -454,7 +455,7 @@ void DATVDemodGUI::applySettings(bool force) m_settings.debug(msg); DATVDemod::MsgConfigureDATVDemod* message = DATVDemod::MsgConfigureDATVDemod::create(m_settings, force); - m_objDATVDemod->getInputMessageQueue()->push(message); + m_datvDemod->getInputMessageQueue()->push(message); } } @@ -502,16 +503,16 @@ void DATVDemodGUI::ldpcToolSelect() void DATVDemodGUI::tick() { - if (m_objDATVDemod) + if (m_datvDemod) { - m_objMagSqAverage(m_objDATVDemod->getMagSq()); + m_objMagSqAverage(m_datvDemod->getMagSq()); double magSqDB = CalcDb::dbPower(m_objMagSqAverage / (SDR_RX_SCALED*SDR_RX_SCALED)); ui->channePowerText->setText(tr("%1 dB").arg(magSqDB, 0, 'f', 1)); - if ((m_modcodModulationIndex != m_objDATVDemod->getModcodModulation()) || (m_modcodCodeRateIndex != m_objDATVDemod->getModcodCodeRate())) + if ((m_modcodModulationIndex != m_datvDemod->getModcodModulation()) || (m_modcodCodeRateIndex != m_datvDemod->getModcodCodeRate())) { - m_modcodModulationIndex = m_objDATVDemod->getModcodModulation(); - m_modcodCodeRateIndex = m_objDATVDemod->getModcodCodeRate(); + m_modcodModulationIndex = m_datvDemod->getModcodModulation(); + m_modcodCodeRateIndex = m_datvDemod->getModcodCodeRate(); DATVDemodSettings::DATVModulation modulation = DATVDemodSettings::getModulationFromLeanDVBCode(m_modcodModulationIndex); DATVDemodSettings::DATVCodeRate rate = DATVDemodSettings::getCodeRateFromLeanDVBCode(m_modcodCodeRateIndex); QString modcodModulationStr = DATVDemodSettings::getStrFromModulation(modulation); @@ -519,9 +520,9 @@ void DATVDemodGUI::tick() ui->statusText->setText(tr("MCOD %1 %2").arg(modcodModulationStr).arg(modcodCodeRateStr)); } - if (m_cstlnSetByModcod != m_objDATVDemod->isCstlnSetByModcod()) + if (m_cstlnSetByModcod != m_datvDemod->isCstlnSetByModcod()) { - m_cstlnSetByModcod = m_objDATVDemod->isCstlnSetByModcod(); + m_cstlnSetByModcod = m_datvDemod->isCstlnSetByModcod(); if (m_cstlnSetByModcod) { ui->statusText->setStyleSheet("QLabel { background-color : green; }"); @@ -537,9 +538,9 @@ void DATVDemodGUI::tick() ui->lblRate->setText(QString("Speed: %1b/s").arg(formatBytes(m_intLastSpeed))); } - if (m_objDATVDemod->audioActive()) + if (m_datvDemod->audioActive()) { - if (m_objDATVDemod->audioDecodeOK()) { + if (m_datvDemod->audioDecodeOK()) { ui->audioMute->setStyleSheet("QToolButton { background-color : green; }"); } else { ui->audioMute->setStyleSheet("QToolButton { background-color : red; }"); @@ -550,9 +551,9 @@ void DATVDemodGUI::tick() ui->audioMute->setStyleSheet("QToolButton { background:rgb(79,79,79); }"); } - if (m_objDATVDemod->videoActive()) + if (m_datvDemod->videoActive()) { - if (m_objDATVDemod->videoDecodeOK()) { + if (m_datvDemod->videoDecodeOK()) { ui->videoMute->setStyleSheet("QToolButton { background-color : green; }"); } else { ui->videoMute->setStyleSheet("QToolButton { background-color : red; }"); @@ -566,7 +567,7 @@ void DATVDemodGUI::tick() m_intPreviousDecodedData = m_intLastDecodedData; //Try to start video rendering - bool success = m_objDATVDemod->playVideo(); + bool success = m_datvDemod->playVideo(); if (success) { ui->playerIndicator->setStyleSheet("QLabel { background-color: rgb(85, 232, 85); border-radius: 8px; }"); // green @@ -574,7 +575,7 @@ void DATVDemodGUI::tick() ui->playerIndicator->setStyleSheet("QLabel { background-color: gray; border-radius: 8px; }"); } - if (m_objDATVDemod->udpRunning()) { + if (m_datvDemod->udpRunning()) { ui->udpIndicator->setStyleSheet("QLabel { background-color: rgb(85, 232, 85); border-radius: 8px; }"); // green } else { ui->udpIndicator->setStyleSheet("QLabel { background-color: gray; border-radius: 8px; }"); @@ -583,10 +584,10 @@ void DATVDemodGUI::tick() void DATVDemodGUI::tickMeter() { - ui->merMeter->levelChanged(m_objDATVDemod->getMERRMS(), m_objDATVDemod->getMERPeak(), m_objDATVDemod->getMERNbAvg()); - ui->cnrMeter->levelChanged(m_objDATVDemod->getCNRRMS(), m_objDATVDemod->getCNRPeak(), m_objDATVDemod->getCNRNbAvg()); - ui->merText->setText(QString("%1").arg(m_objDATVDemod->getMERAvg(), 0, 'f', 1)); - ui->cnrText->setText(QString("%1").arg(m_objDATVDemod->getCNRAvg(), 0, 'f', 1)); + ui->merMeter->levelChanged(m_datvDemod->getMERRMS(), m_datvDemod->getMERPeak(), m_datvDemod->getMERNbAvg()); + ui->cnrMeter->levelChanged(m_datvDemod->getCNRRMS(), m_datvDemod->getCNRPeak(), m_datvDemod->getCNRNbAvg()); + ui->merText->setText(QString("%1").arg(m_datvDemod->getMERAvg(), 0, 'f', 1)); + ui->cnrText->setText(QString("%1").arg(m_datvDemod->getCNRAvg(), 0, 'f', 1)); } void DATVDemodGUI::on_cmbStandard_currentIndexChanged(int index) @@ -844,13 +845,13 @@ void DATVDemodGUI::on_playerEnable_clicked() if (m_settings.m_playerEnable) { - disconnect(m_objDATVDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); - connect(m_objDATVDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); + disconnect(m_datvDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); + connect(m_datvDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); } else { - disconnect(m_objDATVDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); - connect(m_objDATVDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); + disconnect(m_datvDemod->getVideoStream(), &DATVideostream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); + connect(m_datvDemod->getUDPStream(), &DATVUDPStream::fifoData, this, &DATVDemodGUI::on_StreamDataAvailable); } applySettings(); diff --git a/plugins/channelrx/demoddatv/datvdemodgui.h b/plugins/channelrx/demoddatv/datvdemodgui.h index 512cc1c90..71afc7e9a 100644 --- a/plugins/channelrx/demoddatv/datvdemodgui.h +++ b/plugins/channelrx/demoddatv/datvdemodgui.h @@ -101,7 +101,7 @@ private: DeviceUISet* m_deviceUISet; ChannelMarker m_objChannelMarker; - DATVDemod* m_objDATVDemod; + DATVDemod* m_datvDemod; MessageQueue m_inputMessageQueue; DATVDemodSettings m_settings; diff --git a/plugins/channelrx/demoddatv/datvdemodsink.cpp b/plugins/channelrx/demoddatv/datvdemodsink.cpp index 1ac11b0e8..f0f584128 100644 --- a/plugins/channelrx/demoddatv/datvdemodsink.cpp +++ b/plugins/channelrx/demoddatv/datvdemodsink.cpp @@ -34,11 +34,11 @@ const unsigned int DATVDemodSink::m_rfFilterFftLength = 1024; DATVDemodSink::DATVDemodSink() : m_blnNeedConfigUpdate(false), - m_objRegisteredTVScreen(nullptr), - m_objRegisteredVideoRender(nullptr), - m_objVideoStream(new DATVideostream()), + m_tvScreen(nullptr), + m_videoRender(nullptr), + m_videoStream(new DATVideostream()), m_udpStream(leansdr::tspacket::SIZE), - m_objRenderThread(nullptr), + m_videoThread(nullptr), m_audioFifo(48000), m_blnRenderingVideo(false), m_cstlnSetByModcod(false), @@ -60,14 +60,14 @@ DATVDemodSink::~DATVDemodSink() m_blnInitialized = false; //Immediately exit from DATVideoStream if waiting for data before killing thread - m_objVideoStream->setThreadTimeout(0); - m_objVideoStream->deleteLater(); + m_videoStream->setThreadTimeout(0); + m_videoStream->deleteLater(); stopVideo(); CleanUpDATVFramework(); - if (m_objRenderThread) { - delete m_objRenderThread; + if (m_videoThread) { + delete m_videoThread; } delete m_objRFFilter; @@ -75,34 +75,33 @@ DATVDemodSink::~DATVDemodSink() void DATVDemodSink::stopVideo() { - if (m_objRenderThread) + if (m_videoThread) { - if (m_objRenderThread->isRunning()) + if (m_videoThread->isRunning()) { - m_objRenderThread->stopRendering(); - m_objRenderThread->quit(); - m_objRenderThread->wait(); + m_videoThread->stopRendering(); + m_videoThread->quit(); + m_videoThread->wait(); } } } -bool DATVDemodSink::setTVScreen(TVScreen *objScreen) +void DATVDemodSink::setTVScreen(TVScreen *tvScreen) { - m_objRegisteredTVScreen = objScreen; - return true; + m_tvScreen = tvScreen; } -void DATVDemodSink::SetVideoRender(DATVideoRender *objScreen) +void DATVDemodSink::SetVideoRender(DATVideoRender *screen) { - m_objRegisteredVideoRender = objScreen; - m_objRegisteredVideoRender->setAudioFIFO(&m_audioFifo); - m_objRenderThread = new DATVideoRenderThread(m_objRegisteredVideoRender, m_objVideoStream); + m_videoRender = screen; + m_videoRender->setAudioFIFO(&m_audioFifo); + m_videoThread = new DATVideoRenderThread(m_videoRender, m_videoStream); } bool DATVDemodSink::audioActive() { - if (m_objRegisteredVideoRender) { - return m_objRegisteredVideoRender->getAudioStreamIndex() >= 0; + if (m_videoRender) { + return m_videoRender->getAudioStreamIndex() >= 0; } else { return false; } @@ -110,8 +109,8 @@ bool DATVDemodSink::audioActive() bool DATVDemodSink::videoActive() { - if (m_objRegisteredVideoRender) { - return m_objRegisteredVideoRender->getVideoStreamIndex() >= 0; + if (m_videoRender) { + return m_videoRender->getVideoStreamIndex() >= 0; } else { return false; } @@ -119,8 +118,8 @@ bool DATVDemodSink::videoActive() bool DATVDemodSink::audioDecodeOK() { - if (m_objRegisteredVideoRender) { - return m_objRegisteredVideoRender->getAudioDecodeOK(); + if (m_videoRender) { + return m_videoRender->getAudioDecodeOK(); } else { return false; } @@ -128,8 +127,8 @@ bool DATVDemodSink::audioDecodeOK() bool DATVDemodSink::videoDecodeOK() { - if (m_objRegisteredVideoRender) { - return m_objRegisteredVideoRender->getVideoDecodeOK(); + if (m_videoRender) { + return m_videoRender->getVideoDecodeOK(); } else { return false; } @@ -151,27 +150,27 @@ bool DATVDemodSink::playVideo() { QMutexLocker mlock(&m_mutex); - if (m_objVideoStream == nullptr) { + if (m_videoStream == nullptr) { return false; } - if (m_objRegisteredVideoRender == nullptr) { + if (m_videoRender == nullptr) { return false; } - if (m_objRenderThread == nullptr) { + if (m_videoThread == nullptr) { return false; } - if (m_objRenderThread->isRunning()) { + if (m_videoThread->isRunning()) { return true; } - if (m_objVideoStream->bytesAvailable() > 0) + if (m_videoStream->bytesAvailable() > 0) { - m_objVideoStream->setMultiThreaded(true); - m_objVideoStream->setThreadTimeout(DATVideoRenderThread::videoThreadTimeoutMs); - m_objRenderThread->start(); + m_videoStream->setMultiThreaded(true); + m_videoStream->setThreadTimeout(DATVideoRenderThread::videoThreadTimeoutMs); + m_videoThread->start(); } return false; @@ -179,8 +178,8 @@ bool DATVDemodSink::playVideo() void DATVDemodSink::CleanUpDATVFramework() { - if (m_objVideoStream) { - m_objVideoStream->cleanUp(); + if (m_videoStream) { + m_videoStream->cleanUp(); } if (m_objScheduler != nullptr) @@ -556,7 +555,7 @@ void DATVDemodSink::InitDATVFramework() m_objCfg.rrc_rej = (float) m_settings.m_excursion; //dB m_objCfg.rrc_steps = 0; //auto - m_objVideoStream->resetTotalReceived(); + m_videoStream->resetTotalReceived(); m_udpStream.resetTotalReceived(); switch(m_settings.m_modulation) @@ -769,12 +768,11 @@ void DATVDemodSink::InitDATVFramework() //constellation - if (m_objRegisteredTVScreen) + if (m_tvScreen) { - qDebug("DATVDemodSink::InitDATVFramework: Register DVBSTVSCREEN"); + qDebug("DATVDemodSink::InitDATVFramework: Register DVB constellation TV screen"); - m_objRegisteredTVScreen->resizeTVScreen(256,256); - r_scope_symbols = new leansdr::datvconstellation<leansdr::f32>(m_objScheduler, *p_sampled, -128,128, nullptr, m_objRegisteredTVScreen); + r_scope_symbols = new leansdr::datvconstellation<leansdr::f32>(m_objScheduler, *p_sampled, -128,128, nullptr, m_tvScreen); r_scope_symbols->decimation = 1; r_scope_symbols->cstln = &m_objDemodulator->cstln; r_scope_symbols->calculate_cstln_points(); @@ -850,7 +848,7 @@ void DATVDemodSink::InitDATVFramework() // OUTPUT if (m_settings.m_playerEnable) { - r_videoplayer = new leansdr::datvvideoplayer<leansdr::tspacket>(m_objScheduler, *p_tspackets, m_objVideoStream, &m_udpStream); + r_videoplayer = new leansdr::datvvideoplayer<leansdr::tspacket>(m_objScheduler, *p_tspackets, m_videoStream, &m_udpStream); } else { r_videoplayer = new leansdr::datvvideoplayer<leansdr::tspacket>(m_objScheduler, *p_tspackets, nullptr, &m_udpStream); } @@ -895,7 +893,7 @@ void DATVDemodSink::InitDATVS2Framework() m_objCfg.rrc_rej = (float) m_settings.m_excursion; //dB m_objCfg.rrc_steps = 0; //auto - m_objVideoStream->resetTotalReceived(); + m_videoStream->resetTotalReceived(); m_udpStream.resetTotalReceived(); switch(m_settings.m_modulation) @@ -1075,11 +1073,10 @@ void DATVDemodSink::InitDATVS2Framework() //constellation - if (m_objRegisteredTVScreen) + if (m_tvScreen) { qDebug("DATVDemodSink::InitDATVS2Framework: Register DVBS 2 TVSCREEN"); - m_objRegisteredTVScreen->resizeTVScreen(256,256); - r_scope_symbols_dvbs2 = new leansdr::datvdvbs2constellation<leansdr::f32>(m_objScheduler, *p_cstln /* *p_sampled */ /* *p_cstln */, -128,128, nullptr, m_objRegisteredTVScreen); + r_scope_symbols_dvbs2 = new leansdr::datvdvbs2constellation<leansdr::f32>(m_objScheduler, *p_cstln /* *p_sampled */ /* *p_cstln */, -128,128, nullptr, m_tvScreen); r_scope_symbols_dvbs2->decimation = 1; r_scope_symbols_dvbs2->cstln = (leansdr::cstln_base**) &objDemodulatorDVBS2->cstln; r_scope_symbols_dvbs2->calculate_cstln_points(); @@ -1213,7 +1210,7 @@ void DATVDemodSink::InitDATVS2Framework() // OUTPUT if (m_settings.m_playerEnable) { - r_videoplayer = new leansdr::datvvideoplayer<leansdr::tspacket>(m_objScheduler, *p_tspackets, m_objVideoStream, &m_udpStream); + r_videoplayer = new leansdr::datvvideoplayer<leansdr::tspacket>(m_objScheduler, *p_tspackets, m_videoStream, &m_udpStream); } else { r_videoplayer = new leansdr::datvvideoplayer<leansdr::tspacket>(m_objScheduler, *p_tspackets, nullptr, &m_udpStream); } @@ -1410,22 +1407,22 @@ void DATVDemodSink::applySettings(const DATVDemodSettings& settings, bool force) if ((settings.m_audioVolume) != (m_settings.m_audioVolume) || force) { - if (m_objRegisteredVideoRender) { - m_objRegisteredVideoRender->setAudioVolume(settings.m_audioVolume); + if (m_videoRender) { + m_videoRender->setAudioVolume(settings.m_audioVolume); } } if ((settings.m_audioMute) != (m_settings.m_audioMute) || force) { - if (m_objRegisteredVideoRender) { - m_objRegisteredVideoRender->setAudioMute(settings.m_audioMute); + if (m_videoRender) { + m_videoRender->setAudioMute(settings.m_audioMute); } } if ((settings.m_videoMute) != (m_settings.m_videoMute) || force) { - if (m_objRegisteredVideoRender) { - m_objRegisteredVideoRender->setVideoMute(settings.m_videoMute); + if (m_videoRender) { + m_videoRender->setVideoMute(settings.m_videoMute); } } diff --git a/plugins/channelrx/demoddatv/datvdemodsink.h b/plugins/channelrx/demoddatv/datvdemodsink.h index a6287e414..d4dcd75b9 100644 --- a/plugins/channelrx/demoddatv/datvdemodsink.h +++ b/plugins/channelrx/demoddatv/datvdemodsink.h @@ -51,7 +51,6 @@ class TVScreen; class DATVideoRender; class QLabel; -class LevelMeterSignalDB; class DATVDemodSink : public ChannelSampleSink { public: @@ -60,9 +59,9 @@ public: virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end); - bool setTVScreen(TVScreen *objScreen); - void SetVideoRender(DATVideoRender *objScreen); - DATVideostream *getVideoStream() { return m_objVideoStream; } + void setTVScreen(TVScreen *tvScreen); + void SetVideoRender(DATVideoRender *screen); + DATVideostream *getVideoStream() { return m_videoStream; } DATVUDPStream *getUDPStream() { return &m_udpStream; } bool audioActive(); bool audioDecodeOK(); @@ -318,11 +317,11 @@ private: leansdr::datvmeter *r_cnrMeter; //*************** DATV PARAMETERS *************** - TVScreen *m_objRegisteredTVScreen; - DATVideoRender *m_objRegisteredVideoRender; - DATVideostream *m_objVideoStream; + TVScreen *m_tvScreen; + DATVideoRender *m_videoRender; + DATVideostream *m_videoStream; DATVUDPStream m_udpStream; - DATVideoRenderThread *m_objRenderThread; + DATVideoRenderThread *m_videoThread; // Audio AudioFifo m_audioFifo; diff --git a/plugins/channelrx/demoddatv/datvideorender.h b/plugins/channelrx/demoddatv/datvideorender.h index 84e797bce..ad131bc88 100644 --- a/plugins/channelrx/demoddatv/datvideorender.h +++ b/plugins/channelrx/demoddatv/datvideorender.h @@ -23,6 +23,8 @@ #include <QIODevice> #include <QThread> #include <QWidget> +#include <QTextStream> +#include <QDebug> #include "datvideostream.h" #include "gui/tvscreen.h" diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html index 890390b99..3d3009985 100644 --- a/sdrbase/resources/webapi/doc/html2/index.html +++ b/sdrbase/resources/webapi/doc/html2/index.html @@ -3799,15 +3799,23 @@ margin-bottom: 20px; }, "modcodModulation" : { "type" : "integer", - "description" : "Modulation set by DVB-S2 MODCOD\n * 0: BPSK\n * 1: QPSK\n * 2: PSK8\n * 3: APSK16\n * 4: APSK32\n * 5: APSK64E\n * 6: QAM16\n * 7: QAM64\n * 8: QAM256\n" + "description" : "Modulation set by DVB-S2 MODCOD\n * -1: Unset\n * 0: BPSK\n * 1: QPSK\n * 2: PSK8\n * 3: APSK16\n * 4: APSK32\n * 5: APSK64E\n * 6: QAM16\n * 7: QAM64\n * 8: QAM256\n" }, "modcodCodeRate" : { "type" : "integer", - "description" : "Code rate (FEC) set by DVB-S2 MODCOD\n * 0: 1/2\n * 1: 2/3\n * 2: 4/6\n * 3: 3/4\n * 4: 5/6\n * 5: 7/8\n * 6: 4/5\n * 7: 8/9\n * 8: 9/10\n * 9: 1/4\n * 10: 1/3\n * 11: 2/5\n * 12: 3/5\n" + "description" : "Code rate (FEC) set by DVB-S2 MODCOD\n * -1: Unset\n * 0: 1/2\n * 1: 2/3\n * 2: 4/6\n * 3: 3/4\n * 4: 5/6\n * 5: 7/8\n * 6: 4/5\n * 7: 8/9\n * 8: 9/10\n * 9: 1/4\n * 10: 1/3\n * 11: 2/5\n * 12: 3/5\n" }, "setByModcod" : { "type" : "integer", "description" : "Modulation and code rate set by DVB-S2 MODCOD (1 for yes, 0 for no)" + }, + "mer" : { + "type" : "number", + "format" : "float" + }, + "cnr" : { + "type" : "number", + "format" : "float" } }, "description" : "DATVDemod" @@ -3913,6 +3921,10 @@ margin-bottom: 20px; "type" : "integer", "description" : "boolean" }, + "playerEnable" : { + "type" : "integer", + "description" : "boolean" + }, "streamIndex" : { "type" : "integer", "description" : "MIMO channel. Not relevant when connected to SI (single Rx)." @@ -7905,14 +7917,15 @@ margin-bottom: 20px; "fftCount" : { "type" : "integer" }, - "frequencySpec" : { - "type" : "integer" + "sweepSpec" : { + "type" : "integer", + "description" : "(0 - Range, 1 - Step, 2 - List)" }, - "startFrequency" : { + "startValue" : { "type" : "number", "format" : "float" }, - "stopFrequency" : { + "stopValue" : { "type" : "number", "format" : "float" }, @@ -7923,9 +7936,13 @@ margin-bottom: 20px; "type" : "number", "format" : "float" }, - "frequencies" : { + "list" : { "type" : "string" }, + "setting" : { + "type" : "string", + "description" : "The device setting to sweep (E.g. centerFrequency or gain)" + }, "visaDevice" : { "type" : "string" }, @@ -51207,7 +51224,7 @@ except ApiException as e: </div> <div id="generator"> <div class="content"> - Generated 2021-10-26T22:25:01.367+02:00 + Generated 2021-10-29T08:40:21.343+02:00 </div> </div> </div> diff --git a/sdrbase/resources/webapi/doc/swagger/include/DATVDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/DATVDemod.yaml index d00ee6b96..1d4dbd076 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/DATVDemod.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/DATVDemod.yaml @@ -104,6 +104,9 @@ DATVDemodSettings: udpTS: description: boolean type: integer + playerEnable: + description: boolean + type: integer streamIndex: description: MIMO channel. Not relevant when connected to SI (single Rx). type: integer @@ -145,34 +148,40 @@ DATVDemodReport: type: integer description: > Modulation set by DVB-S2 MODCOD - * 0: BPSK - * 1: QPSK - * 2: PSK8 - * 3: APSK16 - * 4: APSK32 - * 5: APSK64E - * 6: QAM16 - * 7: QAM64 - * 8: QAM256 + * -1: Unset + * 0: BPSK + * 1: QPSK + * 2: PSK8 + * 3: APSK16 + * 4: APSK32 + * 5: APSK64E + * 6: QAM16 + * 7: QAM64 + * 8: QAM256 modcodCodeRate: type: integer description: > Code rate (FEC) set by DVB-S2 MODCOD - * 0: 1/2 - * 1: 2/3 - * 2: 4/6 - * 3: 3/4 - * 4: 5/6 - * 5: 7/8 - * 6: 4/5 - * 7: 8/9 - * 8: 9/10 - * 9: 1/4 + * -1: Unset + * 0: 1/2 + * 1: 2/3 + * 2: 4/6 + * 3: 3/4 + * 4: 5/6 + * 5: 7/8 + * 6: 4/5 + * 7: 8/9 + * 8: 9/10 + * 9: 1/4 * 10: 1/3 * 11: 2/5 * 12: 3/5 setByModcod: type: integer description: Modulation and code rate set by DVB-S2 MODCOD (1 for yes, 0 for no) - - + mer: + type: number + format: float + cnr: + type: number + format: float diff --git a/sdrbase/resources/webapi/doc/swagger/include/NoiseFigure.yaml b/sdrbase/resources/webapi/doc/swagger/include/NoiseFigure.yaml index 1d26b3266..fa5c1c27e 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/NoiseFigure.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/NoiseFigure.yaml @@ -8,12 +8,13 @@ NoiseFigureSettings: type: integer fftCount: type: integer - frequencySpec: + sweepSpec: + description: "(0 - Range, 1 - Step, 2 - List)" type: integer - startFrequency: + startValue: type: number format: float - stopFrequency: + stopValue: type: number format: float steps: @@ -21,7 +22,10 @@ NoiseFigureSettings: step: type: number format: float - frequencies: + list: + type: string + setting: + description: "The device setting to sweep (E.g. centerFrequency or gain)" type: string visaDevice: type: string diff --git a/swagger/sdrangel/api/swagger/include/DATVDemod.yaml b/swagger/sdrangel/api/swagger/include/DATVDemod.yaml index 3aed4b127..1d4dbd076 100644 --- a/swagger/sdrangel/api/swagger/include/DATVDemod.yaml +++ b/swagger/sdrangel/api/swagger/include/DATVDemod.yaml @@ -104,6 +104,9 @@ DATVDemodSettings: udpTS: description: boolean type: integer + playerEnable: + description: boolean + type: integer streamIndex: description: MIMO channel. Not relevant when connected to SI (single Rx). type: integer @@ -176,5 +179,9 @@ DATVDemodReport: setByModcod: type: integer description: Modulation and code rate set by DVB-S2 MODCOD (1 for yes, 0 for no) - - + mer: + type: number + format: float + cnr: + type: number + format: float diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index 890390b99..3d3009985 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -3799,15 +3799,23 @@ margin-bottom: 20px; }, "modcodModulation" : { "type" : "integer", - "description" : "Modulation set by DVB-S2 MODCOD\n * 0: BPSK\n * 1: QPSK\n * 2: PSK8\n * 3: APSK16\n * 4: APSK32\n * 5: APSK64E\n * 6: QAM16\n * 7: QAM64\n * 8: QAM256\n" + "description" : "Modulation set by DVB-S2 MODCOD\n * -1: Unset\n * 0: BPSK\n * 1: QPSK\n * 2: PSK8\n * 3: APSK16\n * 4: APSK32\n * 5: APSK64E\n * 6: QAM16\n * 7: QAM64\n * 8: QAM256\n" }, "modcodCodeRate" : { "type" : "integer", - "description" : "Code rate (FEC) set by DVB-S2 MODCOD\n * 0: 1/2\n * 1: 2/3\n * 2: 4/6\n * 3: 3/4\n * 4: 5/6\n * 5: 7/8\n * 6: 4/5\n * 7: 8/9\n * 8: 9/10\n * 9: 1/4\n * 10: 1/3\n * 11: 2/5\n * 12: 3/5\n" + "description" : "Code rate (FEC) set by DVB-S2 MODCOD\n * -1: Unset\n * 0: 1/2\n * 1: 2/3\n * 2: 4/6\n * 3: 3/4\n * 4: 5/6\n * 5: 7/8\n * 6: 4/5\n * 7: 8/9\n * 8: 9/10\n * 9: 1/4\n * 10: 1/3\n * 11: 2/5\n * 12: 3/5\n" }, "setByModcod" : { "type" : "integer", "description" : "Modulation and code rate set by DVB-S2 MODCOD (1 for yes, 0 for no)" + }, + "mer" : { + "type" : "number", + "format" : "float" + }, + "cnr" : { + "type" : "number", + "format" : "float" } }, "description" : "DATVDemod" @@ -3913,6 +3921,10 @@ margin-bottom: 20px; "type" : "integer", "description" : "boolean" }, + "playerEnable" : { + "type" : "integer", + "description" : "boolean" + }, "streamIndex" : { "type" : "integer", "description" : "MIMO channel. Not relevant when connected to SI (single Rx)." @@ -7905,14 +7917,15 @@ margin-bottom: 20px; "fftCount" : { "type" : "integer" }, - "frequencySpec" : { - "type" : "integer" + "sweepSpec" : { + "type" : "integer", + "description" : "(0 - Range, 1 - Step, 2 - List)" }, - "startFrequency" : { + "startValue" : { "type" : "number", "format" : "float" }, - "stopFrequency" : { + "stopValue" : { "type" : "number", "format" : "float" }, @@ -7923,9 +7936,13 @@ margin-bottom: 20px; "type" : "number", "format" : "float" }, - "frequencies" : { + "list" : { "type" : "string" }, + "setting" : { + "type" : "string", + "description" : "The device setting to sweep (E.g. centerFrequency or gain)" + }, "visaDevice" : { "type" : "string" }, @@ -51207,7 +51224,7 @@ except ApiException as e: </div> <div id="generator"> <div class="content"> - Generated 2021-10-26T22:25:01.367+02:00 + Generated 2021-10-29T08:40:21.343+02:00 </div> </div> </div> diff --git a/swagger/sdrangel/code/qt5/client/SWGDATVDemodReport.cpp b/swagger/sdrangel/code/qt5/client/SWGDATVDemodReport.cpp index 053332355..a5679d7b3 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDATVDemodReport.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGDATVDemodReport.cpp @@ -46,6 +46,10 @@ SWGDATVDemodReport::SWGDATVDemodReport() { m_modcod_code_rate_isSet = false; set_by_modcod = 0; m_set_by_modcod_isSet = false; + mer = 0.0f; + m_mer_isSet = false; + cnr = 0.0f; + m_cnr_isSet = false; } SWGDATVDemodReport::~SWGDATVDemodReport() { @@ -72,6 +76,10 @@ SWGDATVDemodReport::init() { m_modcod_code_rate_isSet = false; set_by_modcod = 0; m_set_by_modcod_isSet = false; + mer = 0.0f; + m_mer_isSet = false; + cnr = 0.0f; + m_cnr_isSet = false; } void @@ -85,6 +93,8 @@ SWGDATVDemodReport::cleanup() { + + } SWGDATVDemodReport* @@ -116,6 +126,10 @@ SWGDATVDemodReport::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&set_by_modcod, pJson["setByModcod"], "qint32", ""); + ::SWGSDRangel::setValue(&mer, pJson["mer"], "float", ""); + + ::SWGSDRangel::setValue(&cnr, pJson["cnr"], "float", ""); + } QString @@ -159,6 +173,12 @@ SWGDATVDemodReport::asJsonObject() { if(m_set_by_modcod_isSet){ obj->insert("setByModcod", QJsonValue(set_by_modcod)); } + if(m_mer_isSet){ + obj->insert("mer", QJsonValue(mer)); + } + if(m_cnr_isSet){ + obj->insert("cnr", QJsonValue(cnr)); + } return obj; } @@ -253,6 +273,26 @@ SWGDATVDemodReport::setSetByModcod(qint32 set_by_modcod) { this->m_set_by_modcod_isSet = true; } +float +SWGDATVDemodReport::getMer() { + return mer; +} +void +SWGDATVDemodReport::setMer(float mer) { + this->mer = mer; + this->m_mer_isSet = true; +} + +float +SWGDATVDemodReport::getCnr() { + return cnr; +} +void +SWGDATVDemodReport::setCnr(float cnr) { + this->cnr = cnr; + this->m_cnr_isSet = true; +} + bool SWGDATVDemodReport::isSet(){ @@ -285,6 +325,12 @@ SWGDATVDemodReport::isSet(){ if(m_set_by_modcod_isSet){ isObjectUpdated = true; break; } + if(m_mer_isSet){ + isObjectUpdated = true; break; + } + if(m_cnr_isSet){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGDATVDemodReport.h b/swagger/sdrangel/code/qt5/client/SWGDATVDemodReport.h index cd9b1f7f0..55cb6f1df 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDATVDemodReport.h +++ b/swagger/sdrangel/code/qt5/client/SWGDATVDemodReport.h @@ -68,6 +68,12 @@ public: qint32 getSetByModcod(); void setSetByModcod(qint32 set_by_modcod); + float getMer(); + void setMer(float mer); + + float getCnr(); + void setCnr(float cnr); + virtual bool isSet() override; @@ -99,6 +105,12 @@ private: qint32 set_by_modcod; bool m_set_by_modcod_isSet; + float mer; + bool m_mer_isSet; + + float cnr; + bool m_cnr_isSet; + }; } diff --git a/swagger/sdrangel/code/qt5/client/SWGDATVDemodSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGDATVDemodSettings.cpp index 9d21fb144..ca35f5791 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDATVDemodSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGDATVDemodSettings.cpp @@ -82,6 +82,8 @@ SWGDATVDemodSettings::SWGDATVDemodSettings() { m_udp_ts_port_isSet = false; udp_ts = 0; m_udp_ts_isSet = false; + player_enable = 0; + m_player_enable_isSet = false; stream_index = 0; m_stream_index_isSet = false; use_reverse_api = 0; @@ -156,6 +158,8 @@ SWGDATVDemodSettings::init() { m_udp_ts_port_isSet = false; udp_ts = 0; m_udp_ts_isSet = false; + player_enable = 0; + m_player_enable_isSet = false; stream_index = 0; m_stream_index_isSet = false; use_reverse_api = 0; @@ -209,6 +213,7 @@ SWGDATVDemodSettings::cleanup() { + if(reverse_api_address != nullptr) { delete reverse_api_address; } @@ -282,6 +287,8 @@ SWGDATVDemodSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&udp_ts, pJson["udpTS"], "qint32", ""); + ::SWGSDRangel::setValue(&player_enable, pJson["playerEnable"], "qint32", ""); + ::SWGSDRangel::setValue(&stream_index, pJson["streamIndex"], "qint32", ""); ::SWGSDRangel::setValue(&use_reverse_api, pJson["useReverseAPI"], "qint32", ""); @@ -391,6 +398,9 @@ SWGDATVDemodSettings::asJsonObject() { if(m_udp_ts_isSet){ obj->insert("udpTS", QJsonValue(udp_ts)); } + if(m_player_enable_isSet){ + obj->insert("playerEnable", QJsonValue(player_enable)); + } if(m_stream_index_isSet){ obj->insert("streamIndex", QJsonValue(stream_index)); } @@ -683,6 +693,16 @@ SWGDATVDemodSettings::setUdpTs(qint32 udp_ts) { this->m_udp_ts_isSet = true; } +qint32 +SWGDATVDemodSettings::getPlayerEnable() { + return player_enable; +} +void +SWGDATVDemodSettings::setPlayerEnable(qint32 player_enable) { + this->player_enable = player_enable; + this->m_player_enable_isSet = true; +} + qint32 SWGDATVDemodSettings::getStreamIndex() { return stream_index; @@ -829,6 +849,9 @@ SWGDATVDemodSettings::isSet(){ if(m_udp_ts_isSet){ isObjectUpdated = true; break; } + if(m_player_enable_isSet){ + isObjectUpdated = true; break; + } if(m_stream_index_isSet){ isObjectUpdated = true; break; } diff --git a/swagger/sdrangel/code/qt5/client/SWGDATVDemodSettings.h b/swagger/sdrangel/code/qt5/client/SWGDATVDemodSettings.h index ce3e99355..7c2f0598a 100644 --- a/swagger/sdrangel/code/qt5/client/SWGDATVDemodSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGDATVDemodSettings.h @@ -123,6 +123,9 @@ public: qint32 getUdpTs(); void setUdpTs(qint32 udp_ts); + qint32 getPlayerEnable(); + void setPlayerEnable(qint32 player_enable); + qint32 getStreamIndex(); void setStreamIndex(qint32 stream_index); @@ -226,6 +229,9 @@ private: qint32 udp_ts; bool m_udp_ts_isSet; + qint32 player_enable; + bool m_player_enable_isSet; + qint32 stream_index; bool m_stream_index_isSet;