mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-06-13 20:12:29 -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})")
|
message(STATUS "Not building wdsprx (ENABLE_CHANNELRX_WDSPRX=${ENABLE_CHANNELRX_WDSPRX} WDSP_SUPPORT=${WDSP_SUPPORT})")
|
||||||
endif()
|
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(NOT SERVER_MODE)
|
||||||
if (ENABLE_CHANNELRX_HEATMAP)
|
if (ENABLE_CHANNELRX_HEATMAP)
|
||||||
@ -230,25 +250,4 @@ if(NOT SERVER_MODE)
|
|||||||
else()
|
else()
|
||||||
message(STATUS "Not building demodatv (ENABLE_CHANNELRX_DEMODATV=${ENABLE_CHANNELRX_DEMODATV})")
|
message(STATUS "Not building demodatv (ENABLE_CHANNELRX_DEMODATV=${ENABLE_CHANNELRX_DEMODATV})")
|
||||||
endif()
|
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()
|
endif()
|
||||||
|
@ -31,84 +31,6 @@ namespace leansdr {
|
|||||||
|
|
||||||
static const int DEFAULT_GUI_DECIMATION = 64;
|
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
|
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 <QtPlugin>
|
||||||
#include <QAction>
|
|
||||||
#include "plugin/pluginapi.h"
|
#include "plugin/pluginapi.h"
|
||||||
|
|
||||||
|
#ifndef SERVER_MODE
|
||||||
#include "datvdemodgui.h"
|
#include "datvdemodgui.h"
|
||||||
|
#endif
|
||||||
|
#include "datvdemod.h"
|
||||||
#include "datvdemodplugin.h"
|
#include "datvdemodplugin.h"
|
||||||
#include "datvdemodwebapiadapter.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
|
ChannelGUI* DATVDemodPlugin::createRxChannelGUI(DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) const
|
||||||
{
|
{
|
||||||
return DATVDemodGUI::create(m_ptrPluginAPI, deviceUISet, rxChannel);
|
return DATVDemodGUI::create(m_ptrPluginAPI, deviceUISet, rxChannel);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
ChannelWebAPIAdapter* DATVDemodPlugin::createChannelWebAPIAdapter() const
|
ChannelWebAPIAdapter* DATVDemodPlugin::createChannelWebAPIAdapter() const
|
||||||
{
|
{
|
||||||
|
@ -17,7 +17,10 @@
|
|||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||||
///////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef SERVER_MODE
|
||||||
#include "datvideorender.h"
|
#include "datvideorender.h"
|
||||||
|
#endif
|
||||||
|
#include "datvcstlnlut.h"
|
||||||
#include "datvdemodsink.h"
|
#include "datvdemodsink.h"
|
||||||
|
|
||||||
#include "leansdr/dvbs2.h"
|
#include "leansdr/dvbs2.h"
|
||||||
@ -34,7 +37,9 @@ const unsigned int DATVDemodSink::m_rfFilterFftLength = 512;
|
|||||||
DATVDemodSink::DATVDemodSink() :
|
DATVDemodSink::DATVDemodSink() :
|
||||||
m_blnNeedConfigUpdate(false),
|
m_blnNeedConfigUpdate(false),
|
||||||
m_tvScreen(nullptr),
|
m_tvScreen(nullptr),
|
||||||
|
#ifndef SERVER_MODE
|
||||||
m_videoRender(nullptr),
|
m_videoRender(nullptr),
|
||||||
|
#endif
|
||||||
m_videoStream(new DATVideostream()),
|
m_videoStream(new DATVideostream()),
|
||||||
m_udpStream(leansdr::tspacket::SIZE),
|
m_udpStream(leansdr::tspacket::SIZE),
|
||||||
m_videoThread(nullptr),
|
m_videoThread(nullptr),
|
||||||
@ -70,6 +75,7 @@ DATVDemodSink::~DATVDemodSink()
|
|||||||
|
|
||||||
void DATVDemodSink::stopVideo()
|
void DATVDemodSink::stopVideo()
|
||||||
{
|
{
|
||||||
|
#ifndef SERVER_MODE
|
||||||
if (m_videoThread)
|
if (m_videoThread)
|
||||||
{
|
{
|
||||||
if (m_videoThread->isRunning())
|
if (m_videoThread->isRunning())
|
||||||
@ -79,6 +85,7 @@ void DATVDemodSink::stopVideo()
|
|||||||
m_videoThread->wait();
|
m_videoThread->wait();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void DATVDemodSink::setTVScreen(TVScreen *tvScreen)
|
void DATVDemodSink::setTVScreen(TVScreen *tvScreen)
|
||||||
@ -88,46 +95,64 @@ void DATVDemodSink::setTVScreen(TVScreen *tvScreen)
|
|||||||
|
|
||||||
void DATVDemodSink::SetVideoRender(DATVideoRender *screen)
|
void DATVDemodSink::SetVideoRender(DATVideoRender *screen)
|
||||||
{
|
{
|
||||||
|
#ifndef SERVER_MODE
|
||||||
m_videoRender = screen;
|
m_videoRender = screen;
|
||||||
m_videoRender->setAudioFIFO(&m_audioFifo);
|
m_videoRender->setAudioFIFO(&m_audioFifo);
|
||||||
m_videoThread = new DATVideoRenderThread(m_videoRender, m_videoStream);
|
m_videoThread = new DATVideoRenderThread(m_videoRender, m_videoStream);
|
||||||
m_videoThread->setObjectName("vtDATVDemodSink");
|
m_videoThread->setObjectName("vtDATVDemodSink");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DATVDemodSink::audioActive()
|
bool DATVDemodSink::audioActive()
|
||||||
{
|
{
|
||||||
|
#ifndef SERVER_MODE
|
||||||
if (m_videoRender) {
|
if (m_videoRender) {
|
||||||
return m_videoRender->getAudioStreamIndex() >= 0;
|
return m_videoRender->getAudioStreamIndex() >= 0;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DATVDemodSink::videoActive()
|
bool DATVDemodSink::videoActive()
|
||||||
{
|
{
|
||||||
|
#ifndef SERVER_MODE
|
||||||
if (m_videoRender) {
|
if (m_videoRender) {
|
||||||
return m_videoRender->getVideoStreamIndex() >= 0;
|
return m_videoRender->getVideoStreamIndex() >= 0;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DATVDemodSink::audioDecodeOK()
|
bool DATVDemodSink::audioDecodeOK()
|
||||||
{
|
{
|
||||||
|
#ifndef SERVER_MODE
|
||||||
if (m_videoRender) {
|
if (m_videoRender) {
|
||||||
return m_videoRender->getAudioDecodeOK();
|
return m_videoRender->getAudioDecodeOK();
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DATVDemodSink::videoDecodeOK()
|
bool DATVDemodSink::videoDecodeOK()
|
||||||
{
|
{
|
||||||
|
#ifndef SERVER_MODE
|
||||||
if (m_videoRender) {
|
if (m_videoRender) {
|
||||||
return m_videoRender->getVideoDecodeOK();
|
return m_videoRender->getVideoDecodeOK();
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
return false;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool DATVDemodSink::udpRunning()
|
bool DATVDemodSink::udpRunning()
|
||||||
@ -146,6 +171,7 @@ bool DATVDemodSink::playVideo()
|
|||||||
{
|
{
|
||||||
QMutexLocker mlock(&m_mutex);
|
QMutexLocker mlock(&m_mutex);
|
||||||
|
|
||||||
|
#ifndef SERVER_MODE
|
||||||
if (m_videoStream == nullptr) {
|
if (m_videoStream == nullptr) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -168,7 +194,7 @@ bool DATVDemodSink::playVideo()
|
|||||||
m_videoStream->setThreadTimeout(DATVideoRenderThread::videoThreadTimeoutMs);
|
m_videoStream->setThreadTimeout(DATVideoRenderThread::videoThreadTimeoutMs);
|
||||||
m_videoThread->start();
|
m_videoThread->start();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1360,6 +1386,7 @@ void DATVDemodSink::applySettings(const DATVDemodSettings& settings, bool force)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef SERVER_MODE
|
||||||
if ((settings.m_audioVolume) != (m_settings.m_audioVolume) || force)
|
if ((settings.m_audioVolume) != (m_settings.m_audioVolume) || force)
|
||||||
{
|
{
|
||||||
if (m_videoRender) {
|
if (m_videoRender) {
|
||||||
@ -1380,6 +1407,7 @@ void DATVDemodSink::applySettings(const DATVDemodSettings& settings, bool force)
|
|||||||
m_videoRender->setVideoMute(settings.m_videoMute);
|
m_videoRender->setVideoMute(settings.m_videoMute);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if ((m_settings.m_rfBandwidth != settings.m_rfBandwidth)
|
if ((m_settings.m_rfBandwidth != settings.m_rfBandwidth)
|
||||||
|| (m_settings.m_symbolRate != settings.m_symbolRate)
|
|| (m_settings.m_symbolRate != settings.m_symbolRate)
|
||||||
|
@ -31,88 +31,6 @@ namespace leansdr {
|
|||||||
|
|
||||||
static const int DEFAULT_GUI_DVBS2_DECIMATION = 64;
|
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
|
template<typename T> struct datvdvbs2constellation: runnable
|
||||||
{
|
{
|
||||||
|
@ -4930,10 +4930,6 @@ margin-bottom: 20px;
|
|||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "(boolean) engage sodt LDPC with LDPC tool sub processes (Linux only)"
|
"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" : {
|
"softLDPCMaxTrials" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "maximum number of trials in the soft LDPC algorithm (LDPC tool parameter)"
|
"description" : "maximum number of trials in the soft LDPC algorithm (LDPC tool parameter)"
|
||||||
@ -8962,6 +8958,9 @@ margin-bottom: 20px;
|
|||||||
"dcBlock" : {
|
"dcBlock" : {
|
||||||
"type" : "integer"
|
"type" : "integer"
|
||||||
},
|
},
|
||||||
|
"splitFreq" : {
|
||||||
|
"type" : "integer"
|
||||||
|
},
|
||||||
"iqCorrection" : {
|
"iqCorrection" : {
|
||||||
"type" : "integer"
|
"type" : "integer"
|
||||||
},
|
},
|
||||||
@ -59469,7 +59468,7 @@ except ApiException as e:
|
|||||||
</div>
|
</div>
|
||||||
<div id="generator">
|
<div id="generator">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
Generated 2024-12-24T11:56:24.260+01:00
|
Generated 2025-05-03T03:12:21.688+02:00
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -48,9 +48,6 @@ DATVDemodSettings:
|
|||||||
softLDPC:
|
softLDPC:
|
||||||
description: (boolean) engage sodt LDPC with LDPC tool sub processes (Linux only)
|
description: (boolean) engage sodt LDPC with LDPC tool sub processes (Linux only)
|
||||||
type: integer
|
type: integer
|
||||||
softLDPCToolPath:
|
|
||||||
description: O/S path to the LDPC tool binary
|
|
||||||
type: string
|
|
||||||
softLDPCMaxTrials:
|
softLDPCMaxTrials:
|
||||||
description: maximum number of trials in the soft LDPC algorithm (LDPC tool parameter)
|
description: maximum number of trials in the soft LDPC algorithm (LDPC tool parameter)
|
||||||
type: integer
|
type: integer
|
||||||
|
@ -10,6 +10,8 @@ LimeSdrInputSettings:
|
|||||||
type: integer
|
type: integer
|
||||||
dcBlock:
|
dcBlock:
|
||||||
type: integer
|
type: integer
|
||||||
|
splitFreq:
|
||||||
|
type: integer
|
||||||
iqCorrection:
|
iqCorrection:
|
||||||
type: integer
|
type: integer
|
||||||
log2SoftDecim:
|
log2SoftDecim:
|
||||||
|
@ -48,9 +48,6 @@ DATVDemodSettings:
|
|||||||
softLDPC:
|
softLDPC:
|
||||||
description: (boolean) engage sodt LDPC with LDPC tool sub processes (Linux only)
|
description: (boolean) engage sodt LDPC with LDPC tool sub processes (Linux only)
|
||||||
type: integer
|
type: integer
|
||||||
softLDPCToolPath:
|
|
||||||
description: O/S path to the LDPC tool binary
|
|
||||||
type: string
|
|
||||||
softLDPCMaxTrials:
|
softLDPCMaxTrials:
|
||||||
description: maximum number of trials in the soft LDPC algorithm (LDPC tool parameter)
|
description: maximum number of trials in the soft LDPC algorithm (LDPC tool parameter)
|
||||||
type: integer
|
type: integer
|
||||||
|
@ -4930,10 +4930,6 @@ margin-bottom: 20px;
|
|||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "(boolean) engage sodt LDPC with LDPC tool sub processes (Linux only)"
|
"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" : {
|
"softLDPCMaxTrials" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "maximum number of trials in the soft LDPC algorithm (LDPC tool parameter)"
|
"description" : "maximum number of trials in the soft LDPC algorithm (LDPC tool parameter)"
|
||||||
@ -8962,6 +8958,9 @@ margin-bottom: 20px;
|
|||||||
"dcBlock" : {
|
"dcBlock" : {
|
||||||
"type" : "integer"
|
"type" : "integer"
|
||||||
},
|
},
|
||||||
|
"splitFreq" : {
|
||||||
|
"type" : "integer"
|
||||||
|
},
|
||||||
"iqCorrection" : {
|
"iqCorrection" : {
|
||||||
"type" : "integer"
|
"type" : "integer"
|
||||||
},
|
},
|
||||||
@ -59469,7 +59468,7 @@ except ApiException as e:
|
|||||||
</div>
|
</div>
|
||||||
<div id="generator">
|
<div id="generator">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
Generated 2024-12-24T11:56:24.260+01:00
|
Generated 2025-05-03T03:12:21.688+02:00
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -44,8 +44,6 @@ SWGDATVDemodSettings::SWGDATVDemodSettings() {
|
|||||||
m_fec_isSet = false;
|
m_fec_isSet = false;
|
||||||
soft_ldpc = 0;
|
soft_ldpc = 0;
|
||||||
m_soft_ldpc_isSet = false;
|
m_soft_ldpc_isSet = false;
|
||||||
soft_ldpc_tool_path = nullptr;
|
|
||||||
m_soft_ldpc_tool_path_isSet = false;
|
|
||||||
soft_ldpc_max_trials = 0;
|
soft_ldpc_max_trials = 0;
|
||||||
m_soft_ldpc_max_trials_isSet = false;
|
m_soft_ldpc_max_trials_isSet = false;
|
||||||
max_bitflips = 0;
|
max_bitflips = 0;
|
||||||
@ -124,8 +122,6 @@ SWGDATVDemodSettings::init() {
|
|||||||
m_fec_isSet = false;
|
m_fec_isSet = false;
|
||||||
soft_ldpc = 0;
|
soft_ldpc = 0;
|
||||||
m_soft_ldpc_isSet = false;
|
m_soft_ldpc_isSet = false;
|
||||||
soft_ldpc_tool_path = new QString("");
|
|
||||||
m_soft_ldpc_tool_path_isSet = false;
|
|
||||||
soft_ldpc_max_trials = 0;
|
soft_ldpc_max_trials = 0;
|
||||||
m_soft_ldpc_max_trials_isSet = false;
|
m_soft_ldpc_max_trials_isSet = false;
|
||||||
max_bitflips = 0;
|
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, pJson["softLDPC"], "qint32", "");
|
||||||
|
|
||||||
::SWGSDRangel::setValue(&soft_ldpc_tool_path, pJson["softLDPCToolPath"], "QString", "QString");
|
|
||||||
|
|
||||||
::SWGSDRangel::setValue(&soft_ldpc_max_trials, pJson["softLDPCMaxTrials"], "qint32", "");
|
::SWGSDRangel::setValue(&soft_ldpc_max_trials, pJson["softLDPCMaxTrials"], "qint32", "");
|
||||||
|
|
||||||
::SWGSDRangel::setValue(&max_bitflips, pJson["maxBitflips"], "qint32", "");
|
::SWGSDRangel::setValue(&max_bitflips, pJson["maxBitflips"], "qint32", "");
|
||||||
@ -359,9 +350,6 @@ SWGDATVDemodSettings::asJsonObject() {
|
|||||||
if(m_soft_ldpc_isSet){
|
if(m_soft_ldpc_isSet){
|
||||||
obj->insert("softLDPC", QJsonValue(soft_ldpc));
|
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){
|
if(m_soft_ldpc_max_trials_isSet){
|
||||||
obj->insert("softLDPCMaxTrials", QJsonValue(soft_ldpc_max_trials));
|
obj->insert("softLDPCMaxTrials", QJsonValue(soft_ldpc_max_trials));
|
||||||
}
|
}
|
||||||
@ -527,16 +515,6 @@ SWGDATVDemodSettings::setSoftLdpc(qint32 soft_ldpc) {
|
|||||||
this->m_soft_ldpc_isSet = true;
|
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
|
qint32
|
||||||
SWGDATVDemodSettings::getSoftLdpcMaxTrials() {
|
SWGDATVDemodSettings::getSoftLdpcMaxTrials() {
|
||||||
return soft_ldpc_max_trials;
|
return soft_ldpc_max_trials;
|
||||||
@ -836,9 +814,6 @@ SWGDATVDemodSettings::isSet(){
|
|||||||
if(m_soft_ldpc_isSet){
|
if(m_soft_ldpc_isSet){
|
||||||
isObjectUpdated = true; break;
|
isObjectUpdated = true; break;
|
||||||
}
|
}
|
||||||
if(soft_ldpc_tool_path && *soft_ldpc_tool_path != QString("")){
|
|
||||||
isObjectUpdated = true; break;
|
|
||||||
}
|
|
||||||
if(m_soft_ldpc_max_trials_isSet){
|
if(m_soft_ldpc_max_trials_isSet){
|
||||||
isObjectUpdated = true; break;
|
isObjectUpdated = true; break;
|
||||||
}
|
}
|
||||||
|
@ -68,9 +68,6 @@ public:
|
|||||||
qint32 getSoftLdpc();
|
qint32 getSoftLdpc();
|
||||||
void setSoftLdpc(qint32 soft_ldpc);
|
void setSoftLdpc(qint32 soft_ldpc);
|
||||||
|
|
||||||
QString* getSoftLdpcToolPath();
|
|
||||||
void setSoftLdpcToolPath(QString* soft_ldpc_tool_path);
|
|
||||||
|
|
||||||
qint32 getSoftLdpcMaxTrials();
|
qint32 getSoftLdpcMaxTrials();
|
||||||
void setSoftLdpcMaxTrials(qint32 soft_ldpc_max_trials);
|
void setSoftLdpcMaxTrials(qint32 soft_ldpc_max_trials);
|
||||||
|
|
||||||
@ -180,9 +177,6 @@ private:
|
|||||||
qint32 soft_ldpc;
|
qint32 soft_ldpc;
|
||||||
bool m_soft_ldpc_isSet;
|
bool m_soft_ldpc_isSet;
|
||||||
|
|
||||||
QString* soft_ldpc_tool_path;
|
|
||||||
bool m_soft_ldpc_tool_path_isSet;
|
|
||||||
|
|
||||||
qint32 soft_ldpc_max_trials;
|
qint32 soft_ldpc_max_trials;
|
||||||
bool m_soft_ldpc_max_trials_isSet;
|
bool m_soft_ldpc_max_trials_isSet;
|
||||||
|
|
||||||
|
@ -35,9 +35,9 @@ SWGLimeSdrInputSettings::SWGLimeSdrInputSettings() {
|
|||||||
log2_hard_decim = 0;
|
log2_hard_decim = 0;
|
||||||
m_log2_hard_decim_isSet = false;
|
m_log2_hard_decim_isSet = false;
|
||||||
dc_block = 0;
|
dc_block = 0;
|
||||||
splitFreq = 0;
|
|
||||||
m_dc_block_isSet = false;
|
m_dc_block_isSet = false;
|
||||||
m_splitFreq_isSet = false;
|
split_freq = 0;
|
||||||
|
m_split_freq_isSet = false;
|
||||||
iq_correction = 0;
|
iq_correction = 0;
|
||||||
m_iq_correction_isSet = false;
|
m_iq_correction_isSet = false;
|
||||||
log2_soft_decim = 0;
|
log2_soft_decim = 0;
|
||||||
@ -102,8 +102,8 @@ SWGLimeSdrInputSettings::init() {
|
|||||||
m_log2_hard_decim_isSet = false;
|
m_log2_hard_decim_isSet = false;
|
||||||
dc_block = 0;
|
dc_block = 0;
|
||||||
m_dc_block_isSet = false;
|
m_dc_block_isSet = false;
|
||||||
splitFreq = 0;
|
split_freq = 0;
|
||||||
m_splitFreq_isSet = false;
|
m_split_freq_isSet = false;
|
||||||
iq_correction = 0;
|
iq_correction = 0;
|
||||||
m_iq_correction_isSet = false;
|
m_iq_correction_isSet = false;
|
||||||
log2_soft_decim = 0;
|
log2_soft_decim = 0;
|
||||||
@ -179,6 +179,7 @@ SWGLimeSdrInputSettings::cleanup() {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(reverse_api_address != nullptr) {
|
if(reverse_api_address != nullptr) {
|
||||||
@ -206,8 +207,8 @@ SWGLimeSdrInputSettings::fromJsonObject(QJsonObject &pJson) {
|
|||||||
::SWGSDRangel::setValue(&log2_hard_decim, pJson["log2HardDecim"], "qint32", "");
|
::SWGSDRangel::setValue(&log2_hard_decim, pJson["log2HardDecim"], "qint32", "");
|
||||||
|
|
||||||
::SWGSDRangel::setValue(&dc_block, pJson["dcBlock"], "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", "");
|
::SWGSDRangel::setValue(&iq_correction, pJson["iqCorrection"], "qint32", "");
|
||||||
|
|
||||||
@ -285,8 +286,8 @@ SWGLimeSdrInputSettings::asJsonObject() {
|
|||||||
if(m_dc_block_isSet){
|
if(m_dc_block_isSet){
|
||||||
obj->insert("dcBlock", QJsonValue(dc_block));
|
obj->insert("dcBlock", QJsonValue(dc_block));
|
||||||
}
|
}
|
||||||
if(m_splitFreq_isSet){
|
if(m_split_freq_isSet){
|
||||||
obj->insert("splitFreq", QJsonValue(splitFreq));
|
obj->insert("splitFreq", QJsonValue(split_freq));
|
||||||
}
|
}
|
||||||
if(m_iq_correction_isSet){
|
if(m_iq_correction_isSet){
|
||||||
obj->insert("iqCorrection", QJsonValue(iq_correction));
|
obj->insert("iqCorrection", QJsonValue(iq_correction));
|
||||||
@ -406,12 +407,12 @@ SWGLimeSdrInputSettings::setDcBlock(qint32 dc_block) {
|
|||||||
|
|
||||||
qint32
|
qint32
|
||||||
SWGLimeSdrInputSettings::getSplitFreq() {
|
SWGLimeSdrInputSettings::getSplitFreq() {
|
||||||
return splitFreq;
|
return split_freq;
|
||||||
}
|
}
|
||||||
void
|
void
|
||||||
SWGLimeSdrInputSettings::setSplitFreq(qint32 splitFreq) {
|
SWGLimeSdrInputSettings::setSplitFreq(qint32 split_freq) {
|
||||||
this->splitFreq = splitFreq;
|
this->split_freq = split_freq;
|
||||||
this->m_splitFreq_isSet = true;
|
this->m_split_freq_isSet = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
qint32
|
qint32
|
||||||
@ -671,7 +672,7 @@ SWGLimeSdrInputSettings::isSet(){
|
|||||||
if(m_dc_block_isSet){
|
if(m_dc_block_isSet){
|
||||||
isObjectUpdated = true; break;
|
isObjectUpdated = true; break;
|
||||||
}
|
}
|
||||||
if(m_splitFreq_isSet){
|
if(m_split_freq_isSet){
|
||||||
isObjectUpdated = true; break;
|
isObjectUpdated = true; break;
|
||||||
}
|
}
|
||||||
if(m_iq_correction_isSet){
|
if(m_iq_correction_isSet){
|
||||||
|
@ -52,10 +52,10 @@ public:
|
|||||||
void setLog2HardDecim(qint32 log2_hard_decim);
|
void setLog2HardDecim(qint32 log2_hard_decim);
|
||||||
|
|
||||||
qint32 getDcBlock();
|
qint32 getDcBlock();
|
||||||
void setDcBlock(qint32 splitFreq);
|
void setDcBlock(qint32 dc_block);
|
||||||
|
|
||||||
qint32 getSplitFreq();
|
qint32 getSplitFreq();
|
||||||
void setSplitFreq(qint32 splitFreq);
|
void setSplitFreq(qint32 split_freq);
|
||||||
|
|
||||||
qint32 getIqCorrection();
|
qint32 getIqCorrection();
|
||||||
void setIqCorrection(qint32 iq_correction);
|
void setIqCorrection(qint32 iq_correction);
|
||||||
@ -145,8 +145,8 @@ private:
|
|||||||
qint32 dc_block;
|
qint32 dc_block;
|
||||||
bool m_dc_block_isSet;
|
bool m_dc_block_isSet;
|
||||||
|
|
||||||
qint32 splitFreq;
|
qint32 split_freq;
|
||||||
bool m_splitFreq_isSet;
|
bool m_split_freq_isSet;
|
||||||
|
|
||||||
qint32 iq_correction;
|
qint32 iq_correction;
|
||||||
bool m_iq_correction_isSet;
|
bool m_iq_correction_isSet;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user