mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-06-13 03:52:30 -04:00
DATV demod server plugin
This commit is contained in:
parent
fc82606e6e
commit
ce007419e8
@ -211,6 +211,26 @@ else()
|
||||
message(STATUS "Not building wdsprx (ENABLE_CHANNELRX_WDSPRX=${ENABLE_CHANNELRX_WDSPRX} WDSP_SUPPORT=${WDSP_SUPPORT})")
|
||||
endif()
|
||||
|
||||
# need ffmpeg 3.1 that correstonds to
|
||||
# libavutil 55.27.100
|
||||
# libavcodec 57.48.101
|
||||
# libavformat 57.40.101
|
||||
find_package(FFmpeg COMPONENTS AVCODEC AVFORMAT AVUTIL SWSCALE)
|
||||
|
||||
if (ENABLE_CHANNELRX_DEMODDATV AND FFMPEG_FOUND)
|
||||
if(WIN32)
|
||||
add_subdirectory(demoddatv)
|
||||
else()
|
||||
if(((AVUTIL_VERSION VERSION_GREATER "55.27.99") AND (AVCODEC_VERSION VERSION_GREATER "57.48.101")) OR FFMPEG_EXTERNAL OR FFMPEG_SKIP_CHECK)
|
||||
message(STATUS "Include demoddatv")
|
||||
add_subdirectory(demoddatv)
|
||||
else()
|
||||
message(STATUS "FFmpeg too old to compile demoddatv; needs at least avutil: 55.27.100, avcodec/avformat: 57.48.101")
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "Not building demoddatv (ENABLE_CHANNELRX_DEMODDATV=${ENABLE_CHANNELRX_DEMODDATV} FFMPEG_FOUND=${FFMPEG_FOUND})")
|
||||
endif()
|
||||
|
||||
if(NOT SERVER_MODE)
|
||||
if (ENABLE_CHANNELRX_HEATMAP)
|
||||
@ -230,25 +250,4 @@ if(NOT SERVER_MODE)
|
||||
else()
|
||||
message(STATUS "Not building demodatv (ENABLE_CHANNELRX_DEMODATV=${ENABLE_CHANNELRX_DEMODATV})")
|
||||
endif()
|
||||
|
||||
# need ffmpeg 3.1 that correstonds to
|
||||
# libavutil 55.27.100
|
||||
# libavcodec 57.48.101
|
||||
# libavformat 57.40.101
|
||||
find_package(FFmpeg COMPONENTS AVCODEC AVFORMAT AVUTIL SWSCALE)
|
||||
|
||||
if (ENABLE_CHANNELRX_DEMODDATV AND FFMPEG_FOUND)
|
||||
if(WIN32)
|
||||
add_subdirectory(demoddatv)
|
||||
else()
|
||||
if(((AVUTIL_VERSION VERSION_GREATER "55.27.99") AND (AVCODEC_VERSION VERSION_GREATER "57.48.101")) OR FFMPEG_EXTERNAL OR FFMPEG_SKIP_CHECK)
|
||||
message(STATUS "Include demoddatv")
|
||||
add_subdirectory(demoddatv)
|
||||
else()
|
||||
message(STATUS "FFmpeg too old to compile demoddatv; needs at least avutil: 55.27.100, avcodec/avformat: 57.48.101")
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
message(STATUS "Not building demoddatv (ENABLE_CHANNELRX_DEMODDATV=${ENABLE_CHANNELRX_DEMODDATV} FFMPEG_FOUND=${FFMPEG_FOUND})")
|
||||
endif()
|
||||
endif()
|
||||
|
@ -31,84 +31,6 @@ namespace leansdr {
|
||||
|
||||
static const int DEFAULT_GUI_DECIMATION = 64;
|
||||
|
||||
static inline cstln_lut<eucl_ss, 256> * make_dvbs_constellation(cstln_lut<eucl_ss, 256>::predef c,
|
||||
code_rate r)
|
||||
{
|
||||
float gamma1 = 1, gamma2 = 1, gamma3 = 1;
|
||||
switch (c)
|
||||
{
|
||||
case cstln_lut<eucl_ss, 256>::APSK16:
|
||||
// EN 302 307, section 5.4.3, Table 9
|
||||
switch (r)
|
||||
{
|
||||
case FEC23:
|
||||
case FEC46:
|
||||
gamma1 = 3.15;
|
||||
break;
|
||||
case FEC34:
|
||||
gamma1 = 2.85;
|
||||
break;
|
||||
case FEC45:
|
||||
gamma1 = 2.75;
|
||||
break;
|
||||
case FEC56:
|
||||
gamma1 = 2.70;
|
||||
break;
|
||||
case FEC89:
|
||||
gamma1 = 2.60;
|
||||
break;
|
||||
case FEC910:
|
||||
gamma1 = 2.57;
|
||||
break;
|
||||
default:
|
||||
fail("cstln_lut<256>::make_dvbs_constellation: Code rate not supported with APSK16");
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case cstln_lut<eucl_ss, 256>::APSK32:
|
||||
// EN 302 307, section 5.4.4, Table 10
|
||||
switch (r)
|
||||
{
|
||||
case FEC34:
|
||||
gamma1 = 2.84;
|
||||
gamma2 = 5.27;
|
||||
break;
|
||||
case FEC45:
|
||||
gamma1 = 2.72;
|
||||
gamma2 = 4.87;
|
||||
break;
|
||||
case FEC56:
|
||||
gamma1 = 2.64;
|
||||
gamma2 = 4.64;
|
||||
break;
|
||||
case FEC89:
|
||||
gamma1 = 2.54;
|
||||
gamma2 = 4.33;
|
||||
break;
|
||||
case FEC910:
|
||||
gamma1 = 2.53;
|
||||
gamma2 = 4.30;
|
||||
break;
|
||||
default:
|
||||
fail("cstln_lut<eucl_ss, 256>::make_dvbs_constellation: Code rate not supported with APSK32");
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case cstln_lut<eucl_ss, 256>::APSK64E:
|
||||
// EN 302 307-2, section 5.4.5, Table 13f
|
||||
gamma1 = 2.4;
|
||||
gamma2 = 4.3;
|
||||
gamma3 = 7;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
cstln_lut<eucl_ss, 256> *newCstln = new cstln_lut<eucl_ss, 256>(c, 10, gamma1, gamma2, gamma3);
|
||||
newCstln->m_rateCode = (int) r;
|
||||
newCstln->m_typeCode = (int) c;
|
||||
newCstln->m_setByModcod = false;
|
||||
return newCstln;
|
||||
}
|
||||
|
||||
template<typename T> struct datvconstellation: runnable
|
||||
{
|
||||
|
194
plugins/channelrx/demoddatv/datvcstlnlut.h
Normal file
194
plugins/channelrx/demoddatv/datvcstlnlut.h
Normal file
@ -0,0 +1,194 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright (C) 2025 Edouard Griffiths, F4EXB <f4exb06@gmail.com> //
|
||||
// using LeanSDR Framework (C) 2016 F4DAV //
|
||||
// //
|
||||
// This program is free software; you can redistribute it and/or modify //
|
||||
// it under the terms of the GNU General Public License as published by //
|
||||
// the Free Software Foundation as version 3 of the License, or //
|
||||
// (at your option) any later version. //
|
||||
// //
|
||||
// This program is distributed in the hope that it will be useful, //
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
|
||||
// GNU General Public License V3 for more details. //
|
||||
// //
|
||||
// You should have received a copy of the GNU General Public License //
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef DATV_CSTLN_LUT_H
|
||||
#define DATV_CSTLN_LUT_H
|
||||
|
||||
#include "leansdr/dvb.h"
|
||||
#include "leansdr/framework.h"
|
||||
|
||||
namespace leansdr {
|
||||
|
||||
static cstln_lut<eucl_ss, 256> * make_dvbs_constellation(
|
||||
cstln_lut<eucl_ss, 256>::predef c,
|
||||
code_rate r
|
||||
)
|
||||
{
|
||||
float gamma1 = 1, gamma2 = 1, gamma3 = 1;
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case cstln_lut<eucl_ss, 256>::APSK16:
|
||||
// EN 302 307, section 5.4.3, Table 9
|
||||
switch (r)
|
||||
{
|
||||
case FEC23:
|
||||
case FEC46:
|
||||
gamma1 = 3.15;
|
||||
break;
|
||||
case FEC34:
|
||||
gamma1 = 2.85;
|
||||
break;
|
||||
case FEC45:
|
||||
gamma1 = 2.75;
|
||||
break;
|
||||
case FEC56:
|
||||
gamma1 = 2.70;
|
||||
break;
|
||||
case FEC89:
|
||||
gamma1 = 2.60;
|
||||
break;
|
||||
case FEC910:
|
||||
gamma1 = 2.57;
|
||||
break;
|
||||
default:
|
||||
fail("cstln_lut<256>::make_dvbs_constellation: Code rate not supported with APSK16");
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case cstln_lut<eucl_ss, 256>::APSK32:
|
||||
// EN 302 307, section 5.4.4, Table 10
|
||||
switch (r)
|
||||
{
|
||||
case FEC34:
|
||||
gamma1 = 2.84;
|
||||
gamma2 = 5.27;
|
||||
break;
|
||||
case FEC45:
|
||||
gamma1 = 2.72;
|
||||
gamma2 = 4.87;
|
||||
break;
|
||||
case FEC56:
|
||||
gamma1 = 2.64;
|
||||
gamma2 = 4.64;
|
||||
break;
|
||||
case FEC89:
|
||||
gamma1 = 2.54;
|
||||
gamma2 = 4.33;
|
||||
break;
|
||||
case FEC910:
|
||||
gamma1 = 2.53;
|
||||
gamma2 = 4.30;
|
||||
break;
|
||||
default:
|
||||
fail("cstln_lut<eucl_ss, 256>::make_dvbs_constellation: Code rate not supported with APSK32");
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case cstln_lut<eucl_ss, 256>::APSK64E:
|
||||
// EN 302 307-2, section 5.4.5, Table 13f
|
||||
gamma1 = 2.4;
|
||||
gamma2 = 4.3;
|
||||
gamma3 = 7;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
cstln_lut<eucl_ss, 256> *newCstln = new cstln_lut<eucl_ss, 256>(c, 10, gamma1, gamma2, gamma3);
|
||||
newCstln->m_rateCode = (int) r;
|
||||
newCstln->m_typeCode = (int) c;
|
||||
newCstln->m_setByModcod = false;
|
||||
return newCstln;
|
||||
}
|
||||
|
||||
static cstln_lut<llr_ss, 256> * make_dvbs2_constellation(
|
||||
cstln_lut<llr_ss, 256>::predef c,
|
||||
code_rate r
|
||||
)
|
||||
{
|
||||
float gamma1 = 1, gamma2 = 1, gamma3 = 1;
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case cstln_lut<llr_ss, 256>::APSK16:
|
||||
// EN 302 307, section 5.4.3, Table 9
|
||||
switch (r)
|
||||
{
|
||||
case FEC23:
|
||||
case FEC46:
|
||||
gamma1 = 3.15;
|
||||
break;
|
||||
case FEC34:
|
||||
gamma1 = 2.85;
|
||||
break;
|
||||
case FEC45:
|
||||
gamma1 = 2.75;
|
||||
break;
|
||||
case FEC56:
|
||||
gamma1 = 2.70;
|
||||
break;
|
||||
case FEC89:
|
||||
gamma1 = 2.60;
|
||||
break;
|
||||
case FEC910:
|
||||
gamma1 = 2.57;
|
||||
break;
|
||||
default:
|
||||
fail("cstln_lut<256>::make_dvbs2_constellation: Code rate not supported with APSK16");
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case cstln_lut<llr_ss, 256>::APSK32:
|
||||
// EN 302 307, section 5.4.4, Table 10
|
||||
switch (r)
|
||||
{
|
||||
case FEC34:
|
||||
gamma1 = 2.84;
|
||||
gamma2 = 5.27;
|
||||
break;
|
||||
case FEC45:
|
||||
gamma1 = 2.72;
|
||||
gamma2 = 4.87;
|
||||
break;
|
||||
case FEC56:
|
||||
gamma1 = 2.64;
|
||||
gamma2 = 4.64;
|
||||
break;
|
||||
case FEC89:
|
||||
gamma1 = 2.54;
|
||||
gamma2 = 4.33;
|
||||
break;
|
||||
case FEC910:
|
||||
gamma1 = 2.53;
|
||||
gamma2 = 4.30;
|
||||
break;
|
||||
default:
|
||||
fail("cstln_lut<llr_ss, 256>::make_dvbs2_constellation: Code rate not supported with APSK32");
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case cstln_lut<llr_ss, 256>::APSK64E:
|
||||
// EN 302 307-2, section 5.4.5, Table 13f
|
||||
gamma1 = 2.4;
|
||||
gamma2 = 4.3;
|
||||
gamma3 = 7;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
cstln_lut<llr_ss, 256> *newCstln = new cstln_lut<llr_ss, 256>(c, 10, gamma1, gamma2, gamma3);
|
||||
newCstln->m_rateCode = r < code_rate::FEC_COUNT ? r : -1;
|
||||
newCstln->m_typeCode = c < cstln_lut<llr_ss, 256>::predef::COUNT ? c : -1;
|
||||
newCstln->m_setByModcod = false;
|
||||
return newCstln;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif // DATV_CSTLN_LUT_H
|
@ -20,10 +20,12 @@
|
||||
|
||||
|
||||
#include <QtPlugin>
|
||||
#include <QAction>
|
||||
#include "plugin/pluginapi.h"
|
||||
|
||||
#ifndef SERVER_MODE
|
||||
#include "datvdemodgui.h"
|
||||
#endif
|
||||
#include "datvdemod.h"
|
||||
#include "datvdemodplugin.h"
|
||||
#include "datvdemodwebapiadapter.h"
|
||||
|
||||
@ -75,10 +77,21 @@ void DATVDemodPlugin::createRxChannel(DeviceAPI *deviceAPI, BasebandSampleSink *
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef SERVER_MODE
|
||||
ChannelGUI* DATVDemodPlugin::createRxChannelGUI(
|
||||
DeviceUISet *deviceUISet,
|
||||
BasebandSampleSink *rxChannel) const
|
||||
{
|
||||
(void) deviceUISet;
|
||||
(void) rxChannel;
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
ChannelGUI* DATVDemodPlugin::createRxChannelGUI(DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) const
|
||||
{
|
||||
return DATVDemodGUI::create(m_ptrPluginAPI, deviceUISet, rxChannel);
|
||||
}
|
||||
#endif
|
||||
|
||||
ChannelWebAPIAdapter* DATVDemodPlugin::createChannelWebAPIAdapter() const
|
||||
{
|
||||
|
@ -17,7 +17,10 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef SERVER_MODE
|
||||
#include "datvideorender.h"
|
||||
#endif
|
||||
#include "datvcstlnlut.h"
|
||||
#include "datvdemodsink.h"
|
||||
|
||||
#include "leansdr/dvbs2.h"
|
||||
@ -34,7 +37,9 @@ const unsigned int DATVDemodSink::m_rfFilterFftLength = 512;
|
||||
DATVDemodSink::DATVDemodSink() :
|
||||
m_blnNeedConfigUpdate(false),
|
||||
m_tvScreen(nullptr),
|
||||
#ifndef SERVER_MODE
|
||||
m_videoRender(nullptr),
|
||||
#endif
|
||||
m_videoStream(new DATVideostream()),
|
||||
m_udpStream(leansdr::tspacket::SIZE),
|
||||
m_videoThread(nullptr),
|
||||
@ -70,6 +75,7 @@ DATVDemodSink::~DATVDemodSink()
|
||||
|
||||
void DATVDemodSink::stopVideo()
|
||||
{
|
||||
#ifndef SERVER_MODE
|
||||
if (m_videoThread)
|
||||
{
|
||||
if (m_videoThread->isRunning())
|
||||
@ -79,6 +85,7 @@ void DATVDemodSink::stopVideo()
|
||||
m_videoThread->wait();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void DATVDemodSink::setTVScreen(TVScreen *tvScreen)
|
||||
@ -88,46 +95,64 @@ void DATVDemodSink::setTVScreen(TVScreen *tvScreen)
|
||||
|
||||
void DATVDemodSink::SetVideoRender(DATVideoRender *screen)
|
||||
{
|
||||
#ifndef SERVER_MODE
|
||||
m_videoRender = screen;
|
||||
m_videoRender->setAudioFIFO(&m_audioFifo);
|
||||
m_videoThread = new DATVideoRenderThread(m_videoRender, m_videoStream);
|
||||
m_videoThread->setObjectName("vtDATVDemodSink");
|
||||
#endif
|
||||
}
|
||||
|
||||
bool DATVDemodSink::audioActive()
|
||||
{
|
||||
#ifndef SERVER_MODE
|
||||
if (m_videoRender) {
|
||||
return m_videoRender->getAudioStreamIndex() >= 0;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool DATVDemodSink::videoActive()
|
||||
{
|
||||
#ifndef SERVER_MODE
|
||||
if (m_videoRender) {
|
||||
return m_videoRender->getVideoStreamIndex() >= 0;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool DATVDemodSink::audioDecodeOK()
|
||||
{
|
||||
#ifndef SERVER_MODE
|
||||
if (m_videoRender) {
|
||||
return m_videoRender->getAudioDecodeOK();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool DATVDemodSink::videoDecodeOK()
|
||||
{
|
||||
#ifndef SERVER_MODE
|
||||
if (m_videoRender) {
|
||||
return m_videoRender->getVideoDecodeOK();
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool DATVDemodSink::udpRunning()
|
||||
@ -146,6 +171,7 @@ bool DATVDemodSink::playVideo()
|
||||
{
|
||||
QMutexLocker mlock(&m_mutex);
|
||||
|
||||
#ifndef SERVER_MODE
|
||||
if (m_videoStream == nullptr) {
|
||||
return false;
|
||||
}
|
||||
@ -168,7 +194,7 @@ bool DATVDemodSink::playVideo()
|
||||
m_videoStream->setThreadTimeout(DATVideoRenderThread::videoThreadTimeoutMs);
|
||||
m_videoThread->start();
|
||||
}
|
||||
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1360,6 +1386,7 @@ void DATVDemodSink::applySettings(const DATVDemodSettings& settings, bool force)
|
||||
return;
|
||||
}
|
||||
|
||||
#ifndef SERVER_MODE
|
||||
if ((settings.m_audioVolume) != (m_settings.m_audioVolume) || force)
|
||||
{
|
||||
if (m_videoRender) {
|
||||
@ -1380,6 +1407,7 @@ void DATVDemodSink::applySettings(const DATVDemodSettings& settings, bool force)
|
||||
m_videoRender->setVideoMute(settings.m_videoMute);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if ((m_settings.m_rfBandwidth != settings.m_rfBandwidth)
|
||||
|| (m_settings.m_symbolRate != settings.m_symbolRate)
|
||||
|
@ -31,88 +31,6 @@ namespace leansdr {
|
||||
|
||||
static const int DEFAULT_GUI_DVBS2_DECIMATION = 64;
|
||||
|
||||
static inline cstln_lut<llr_ss, 256> * make_dvbs2_constellation(
|
||||
cstln_lut<llr_ss, 256>::predef c,
|
||||
code_rate r
|
||||
)
|
||||
{
|
||||
float gamma1 = 1, gamma2 = 1, gamma3 = 1;
|
||||
|
||||
switch (c)
|
||||
{
|
||||
case cstln_lut<llr_ss, 256>::APSK16:
|
||||
// EN 302 307, section 5.4.3, Table 9
|
||||
switch (r)
|
||||
{
|
||||
case FEC23:
|
||||
case FEC46:
|
||||
gamma1 = 3.15;
|
||||
break;
|
||||
case FEC34:
|
||||
gamma1 = 2.85;
|
||||
break;
|
||||
case FEC45:
|
||||
gamma1 = 2.75;
|
||||
break;
|
||||
case FEC56:
|
||||
gamma1 = 2.70;
|
||||
break;
|
||||
case FEC89:
|
||||
gamma1 = 2.60;
|
||||
break;
|
||||
case FEC910:
|
||||
gamma1 = 2.57;
|
||||
break;
|
||||
default:
|
||||
fail("cstln_lut<256>::make_dvbs2_constellation: Code rate not supported with APSK16");
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case cstln_lut<llr_ss, 256>::APSK32:
|
||||
// EN 302 307, section 5.4.4, Table 10
|
||||
switch (r)
|
||||
{
|
||||
case FEC34:
|
||||
gamma1 = 2.84;
|
||||
gamma2 = 5.27;
|
||||
break;
|
||||
case FEC45:
|
||||
gamma1 = 2.72;
|
||||
gamma2 = 4.87;
|
||||
break;
|
||||
case FEC56:
|
||||
gamma1 = 2.64;
|
||||
gamma2 = 4.64;
|
||||
break;
|
||||
case FEC89:
|
||||
gamma1 = 2.54;
|
||||
gamma2 = 4.33;
|
||||
break;
|
||||
case FEC910:
|
||||
gamma1 = 2.53;
|
||||
gamma2 = 4.30;
|
||||
break;
|
||||
default:
|
||||
fail("cstln_lut<llr_ss, 256>::make_dvbs2_constellation: Code rate not supported with APSK32");
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case cstln_lut<llr_ss, 256>::APSK64E:
|
||||
// EN 302 307-2, section 5.4.5, Table 13f
|
||||
gamma1 = 2.4;
|
||||
gamma2 = 4.3;
|
||||
gamma3 = 7;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
cstln_lut<llr_ss, 256> *newCstln = new cstln_lut<llr_ss, 256>(c, 10, gamma1, gamma2, gamma3);
|
||||
newCstln->m_rateCode = r < code_rate::FEC_COUNT ? r : -1;
|
||||
newCstln->m_typeCode = c < cstln_lut<llr_ss, 256>::predef::COUNT ? c : -1;
|
||||
newCstln->m_setByModcod = false;
|
||||
return newCstln;
|
||||
}
|
||||
|
||||
template<typename T> struct datvdvbs2constellation: runnable
|
||||
{
|
||||
|
@ -4930,10 +4930,6 @@ margin-bottom: 20px;
|
||||
"type" : "integer",
|
||||
"description" : "(boolean) engage sodt LDPC with LDPC tool sub processes (Linux only)"
|
||||
},
|
||||
"softLDPCToolPath" : {
|
||||
"type" : "string",
|
||||
"description" : "O/S path to the LDPC tool binary"
|
||||
},
|
||||
"softLDPCMaxTrials" : {
|
||||
"type" : "integer",
|
||||
"description" : "maximum number of trials in the soft LDPC algorithm (LDPC tool parameter)"
|
||||
@ -8962,6 +8958,9 @@ margin-bottom: 20px;
|
||||
"dcBlock" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"splitFreq" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"iqCorrection" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
@ -59469,7 +59468,7 @@ except ApiException as e:
|
||||
</div>
|
||||
<div id="generator">
|
||||
<div class="content">
|
||||
Generated 2024-12-24T11:56:24.260+01:00
|
||||
Generated 2025-05-03T03:12:21.688+02:00
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -48,9 +48,6 @@ DATVDemodSettings:
|
||||
softLDPC:
|
||||
description: (boolean) engage sodt LDPC with LDPC tool sub processes (Linux only)
|
||||
type: integer
|
||||
softLDPCToolPath:
|
||||
description: O/S path to the LDPC tool binary
|
||||
type: string
|
||||
softLDPCMaxTrials:
|
||||
description: maximum number of trials in the soft LDPC algorithm (LDPC tool parameter)
|
||||
type: integer
|
||||
|
@ -10,6 +10,8 @@ LimeSdrInputSettings:
|
||||
type: integer
|
||||
dcBlock:
|
||||
type: integer
|
||||
splitFreq:
|
||||
type: integer
|
||||
iqCorrection:
|
||||
type: integer
|
||||
log2SoftDecim:
|
||||
|
@ -48,9 +48,6 @@ DATVDemodSettings:
|
||||
softLDPC:
|
||||
description: (boolean) engage sodt LDPC with LDPC tool sub processes (Linux only)
|
||||
type: integer
|
||||
softLDPCToolPath:
|
||||
description: O/S path to the LDPC tool binary
|
||||
type: string
|
||||
softLDPCMaxTrials:
|
||||
description: maximum number of trials in the soft LDPC algorithm (LDPC tool parameter)
|
||||
type: integer
|
||||
|
@ -4930,10 +4930,6 @@ margin-bottom: 20px;
|
||||
"type" : "integer",
|
||||
"description" : "(boolean) engage sodt LDPC with LDPC tool sub processes (Linux only)"
|
||||
},
|
||||
"softLDPCToolPath" : {
|
||||
"type" : "string",
|
||||
"description" : "O/S path to the LDPC tool binary"
|
||||
},
|
||||
"softLDPCMaxTrials" : {
|
||||
"type" : "integer",
|
||||
"description" : "maximum number of trials in the soft LDPC algorithm (LDPC tool parameter)"
|
||||
@ -8962,6 +8958,9 @@ margin-bottom: 20px;
|
||||
"dcBlock" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"splitFreq" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
"iqCorrection" : {
|
||||
"type" : "integer"
|
||||
},
|
||||
@ -59469,7 +59468,7 @@ except ApiException as e:
|
||||
</div>
|
||||
<div id="generator">
|
||||
<div class="content">
|
||||
Generated 2024-12-24T11:56:24.260+01:00
|
||||
Generated 2025-05-03T03:12:21.688+02:00
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -44,8 +44,6 @@ SWGDATVDemodSettings::SWGDATVDemodSettings() {
|
||||
m_fec_isSet = false;
|
||||
soft_ldpc = 0;
|
||||
m_soft_ldpc_isSet = false;
|
||||
soft_ldpc_tool_path = nullptr;
|
||||
m_soft_ldpc_tool_path_isSet = false;
|
||||
soft_ldpc_max_trials = 0;
|
||||
m_soft_ldpc_max_trials_isSet = false;
|
||||
max_bitflips = 0;
|
||||
@ -124,8 +122,6 @@ SWGDATVDemodSettings::init() {
|
||||
m_fec_isSet = false;
|
||||
soft_ldpc = 0;
|
||||
m_soft_ldpc_isSet = false;
|
||||
soft_ldpc_tool_path = new QString("");
|
||||
m_soft_ldpc_tool_path_isSet = false;
|
||||
soft_ldpc_max_trials = 0;
|
||||
m_soft_ldpc_max_trials_isSet = false;
|
||||
max_bitflips = 0;
|
||||
@ -194,9 +190,6 @@ SWGDATVDemodSettings::cleanup() {
|
||||
|
||||
|
||||
|
||||
if(soft_ldpc_tool_path != nullptr) {
|
||||
delete soft_ldpc_tool_path;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -263,8 +256,6 @@ SWGDATVDemodSettings::fromJsonObject(QJsonObject &pJson) {
|
||||
|
||||
::SWGSDRangel::setValue(&soft_ldpc, pJson["softLDPC"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&soft_ldpc_tool_path, pJson["softLDPCToolPath"], "QString", "QString");
|
||||
|
||||
::SWGSDRangel::setValue(&soft_ldpc_max_trials, pJson["softLDPCMaxTrials"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&max_bitflips, pJson["maxBitflips"], "qint32", "");
|
||||
@ -359,9 +350,6 @@ SWGDATVDemodSettings::asJsonObject() {
|
||||
if(m_soft_ldpc_isSet){
|
||||
obj->insert("softLDPC", QJsonValue(soft_ldpc));
|
||||
}
|
||||
if(soft_ldpc_tool_path != nullptr && *soft_ldpc_tool_path != QString("")){
|
||||
toJsonValue(QString("softLDPCToolPath"), soft_ldpc_tool_path, obj, QString("QString"));
|
||||
}
|
||||
if(m_soft_ldpc_max_trials_isSet){
|
||||
obj->insert("softLDPCMaxTrials", QJsonValue(soft_ldpc_max_trials));
|
||||
}
|
||||
@ -527,16 +515,6 @@ SWGDATVDemodSettings::setSoftLdpc(qint32 soft_ldpc) {
|
||||
this->m_soft_ldpc_isSet = true;
|
||||
}
|
||||
|
||||
QString*
|
||||
SWGDATVDemodSettings::getSoftLdpcToolPath() {
|
||||
return soft_ldpc_tool_path;
|
||||
}
|
||||
void
|
||||
SWGDATVDemodSettings::setSoftLdpcToolPath(QString* soft_ldpc_tool_path) {
|
||||
this->soft_ldpc_tool_path = soft_ldpc_tool_path;
|
||||
this->m_soft_ldpc_tool_path_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
SWGDATVDemodSettings::getSoftLdpcMaxTrials() {
|
||||
return soft_ldpc_max_trials;
|
||||
@ -836,9 +814,6 @@ SWGDATVDemodSettings::isSet(){
|
||||
if(m_soft_ldpc_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(soft_ldpc_tool_path && *soft_ldpc_tool_path != QString("")){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_soft_ldpc_max_trials_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
|
@ -68,9 +68,6 @@ public:
|
||||
qint32 getSoftLdpc();
|
||||
void setSoftLdpc(qint32 soft_ldpc);
|
||||
|
||||
QString* getSoftLdpcToolPath();
|
||||
void setSoftLdpcToolPath(QString* soft_ldpc_tool_path);
|
||||
|
||||
qint32 getSoftLdpcMaxTrials();
|
||||
void setSoftLdpcMaxTrials(qint32 soft_ldpc_max_trials);
|
||||
|
||||
@ -180,9 +177,6 @@ private:
|
||||
qint32 soft_ldpc;
|
||||
bool m_soft_ldpc_isSet;
|
||||
|
||||
QString* soft_ldpc_tool_path;
|
||||
bool m_soft_ldpc_tool_path_isSet;
|
||||
|
||||
qint32 soft_ldpc_max_trials;
|
||||
bool m_soft_ldpc_max_trials_isSet;
|
||||
|
||||
|
@ -35,9 +35,9 @@ SWGLimeSdrInputSettings::SWGLimeSdrInputSettings() {
|
||||
log2_hard_decim = 0;
|
||||
m_log2_hard_decim_isSet = false;
|
||||
dc_block = 0;
|
||||
splitFreq = 0;
|
||||
m_dc_block_isSet = false;
|
||||
m_splitFreq_isSet = false;
|
||||
split_freq = 0;
|
||||
m_split_freq_isSet = false;
|
||||
iq_correction = 0;
|
||||
m_iq_correction_isSet = false;
|
||||
log2_soft_decim = 0;
|
||||
@ -102,8 +102,8 @@ SWGLimeSdrInputSettings::init() {
|
||||
m_log2_hard_decim_isSet = false;
|
||||
dc_block = 0;
|
||||
m_dc_block_isSet = false;
|
||||
splitFreq = 0;
|
||||
m_splitFreq_isSet = false;
|
||||
split_freq = 0;
|
||||
m_split_freq_isSet = false;
|
||||
iq_correction = 0;
|
||||
m_iq_correction_isSet = false;
|
||||
log2_soft_decim = 0;
|
||||
@ -179,6 +179,7 @@ SWGLimeSdrInputSettings::cleanup() {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if(reverse_api_address != nullptr) {
|
||||
@ -206,8 +207,8 @@ SWGLimeSdrInputSettings::fromJsonObject(QJsonObject &pJson) {
|
||||
::SWGSDRangel::setValue(&log2_hard_decim, pJson["log2HardDecim"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&dc_block, pJson["dcBlock"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&splitFreq, pJson["splitFreq"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&split_freq, pJson["splitFreq"], "qint32", "");
|
||||
|
||||
::SWGSDRangel::setValue(&iq_correction, pJson["iqCorrection"], "qint32", "");
|
||||
|
||||
@ -285,8 +286,8 @@ SWGLimeSdrInputSettings::asJsonObject() {
|
||||
if(m_dc_block_isSet){
|
||||
obj->insert("dcBlock", QJsonValue(dc_block));
|
||||
}
|
||||
if(m_splitFreq_isSet){
|
||||
obj->insert("splitFreq", QJsonValue(splitFreq));
|
||||
if(m_split_freq_isSet){
|
||||
obj->insert("splitFreq", QJsonValue(split_freq));
|
||||
}
|
||||
if(m_iq_correction_isSet){
|
||||
obj->insert("iqCorrection", QJsonValue(iq_correction));
|
||||
@ -406,12 +407,12 @@ SWGLimeSdrInputSettings::setDcBlock(qint32 dc_block) {
|
||||
|
||||
qint32
|
||||
SWGLimeSdrInputSettings::getSplitFreq() {
|
||||
return splitFreq;
|
||||
return split_freq;
|
||||
}
|
||||
void
|
||||
SWGLimeSdrInputSettings::setSplitFreq(qint32 splitFreq) {
|
||||
this->splitFreq = splitFreq;
|
||||
this->m_splitFreq_isSet = true;
|
||||
SWGLimeSdrInputSettings::setSplitFreq(qint32 split_freq) {
|
||||
this->split_freq = split_freq;
|
||||
this->m_split_freq_isSet = true;
|
||||
}
|
||||
|
||||
qint32
|
||||
@ -671,7 +672,7 @@ SWGLimeSdrInputSettings::isSet(){
|
||||
if(m_dc_block_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_splitFreq_isSet){
|
||||
if(m_split_freq_isSet){
|
||||
isObjectUpdated = true; break;
|
||||
}
|
||||
if(m_iq_correction_isSet){
|
||||
|
@ -52,10 +52,10 @@ public:
|
||||
void setLog2HardDecim(qint32 log2_hard_decim);
|
||||
|
||||
qint32 getDcBlock();
|
||||
void setDcBlock(qint32 splitFreq);
|
||||
void setDcBlock(qint32 dc_block);
|
||||
|
||||
qint32 getSplitFreq();
|
||||
void setSplitFreq(qint32 splitFreq);
|
||||
void setSplitFreq(qint32 split_freq);
|
||||
|
||||
qint32 getIqCorrection();
|
||||
void setIqCorrection(qint32 iq_correction);
|
||||
@ -145,8 +145,8 @@ private:
|
||||
qint32 dc_block;
|
||||
bool m_dc_block_isSet;
|
||||
|
||||
qint32 splitFreq;
|
||||
bool m_splitFreq_isSet;
|
||||
qint32 split_freq;
|
||||
bool m_split_freq_isSet;
|
||||
|
||||
qint32 iq_correction;
|
||||
bool m_iq_correction_isSet;
|
||||
|
Loading…
x
Reference in New Issue
Block a user