SDRAngel  4.11.5
Developer docs for <a href="https://github.com/f4exb/sdrangel">SDRangel<\a>, an Open Source Qt5 / OpenGL 3.0+ SDR and signal analyzer frontend to various hardware.
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
DATVDemodSettings Struct Reference

#include <datvdemodsettings.h>

+ Collaboration diagram for DATVDemodSettings:

Public Types

enum  dvb_version { DVB_S, DVB_S2 }
 
enum  DATVModulation {
  BPSK, QPSK, PSK8, APSK16,
  APSK32, APSK64E, QAM16, QAM64,
  QAM256, MOD_UNSET
}
 
enum  DATVCodeRate {
  FEC12, FEC23, FEC46, FEC34,
  FEC56, FEC78, FEC45, FEC89,
  FEC910, FEC14, FEC13, FEC25,
  FEC35, RATE_UNSET
}
 
enum  dvb_sampler { SAMP_NEAREST, SAMP_LINEAR, SAMP_RRC }
 

Public Member Functions

 DATVDemodSettings ()
 
void resetToDefaults ()
 
void setChannelMarker (Serializable *channelMarker)
 
QByteArray serialize () const
 
bool deserialize (const QByteArray &data)
 
void debug (const QString &msg) const
 
bool isDifferent (const DATVDemodSettings &other)
 
void validateSystemConfiguration ()
 

Static Public Member Functions

static DATVModulation getModulationFromStr (const QString &str)
 
static DATVCodeRate getCodeRateFromStr (const QString &str)
 
static QString getStrFromModulation (const DATVModulation modulation)
 
static QString getStrFromCodeRate (const DATVCodeRate codeRate)
 
static void getAvailableModulations (dvb_version dvbStandard, std::vector< DATVModulation > &modulations)
 
static void getAvailableCodeRates (dvb_version dvbStandard, DATVModulation modulation, std::vector< DATVCodeRate > &codeRates)
 

Public Attributes

quint32 m_rgbColor
 
QString m_title
 
Serializablem_channelMarker
 
int m_rfBandwidth
 
int m_centerFrequency
 
dvb_version m_standard
 
DATVModulation m_modulation
 
DATVCodeRate m_fec
 
bool m_audioMute
 
QString m_audioDeviceName
 
int m_symbolRate
 
int m_notchFilters
 
bool m_allowDrift
 
bool m_fastLock
 
dvb_sampler m_filter
 
bool m_hardMetric
 
float m_rollOff
 
bool m_viterbi
 
int m_excursion
 
int m_audioVolume
 
bool m_videoMute
 
QString m_udpTSAddress
 
quint32 m_udpTSPort
 
bool m_udpTS
 

Detailed Description

Definition at line 28 of file datvdemodsettings.h.

Member Enumeration Documentation

◆ DATVCodeRate

◆ DATVModulation

Enumerator
BPSK 
QPSK 
PSK8 
APSK16 
APSK32 
APSK64E 
QAM16 
QAM64 
QAM256 
MOD_UNSET 

Definition at line 36 of file datvdemodsettings.h.

◆ dvb_sampler

Enumerator
SAMP_NEAREST 
SAMP_LINEAR 
SAMP_RRC 

Definition at line 68 of file datvdemodsettings.h.

◆ dvb_version

Enumerator
DVB_S 
DVB_S2 

Definition at line 30 of file datvdemodsettings.h.

Constructor & Destructor Documentation

◆ DATVDemodSettings()

DATVDemodSettings::DATVDemodSettings ( )

Definition at line 27 of file datvdemodsettings.cpp.

References resetToDefaults().

27  :
29 {
31 }
Serializable * m_channelMarker
+ Here is the call graph for this function:

Member Function Documentation

◆ debug()

void DATVDemodSettings::debug ( const QString &  msg) const

Definition at line 169 of file datvdemodsettings.cpp.

References m_allowDrift, m_audioDeviceName, m_audioMute, m_audioVolume, m_centerFrequency, m_excursion, m_fastLock, m_fec, m_filter, m_hardMetric, m_modulation, m_notchFilters, m_rfBandwidth, m_rollOff, m_standard, m_symbolRate, m_videoMute, and m_viterbi.

Referenced by DATVDemodGUI::applySettings(), DATVDemod::applySettings(), and setChannelMarker().

170 {
171  qDebug() << msg
172  << " m_standard: " << m_standard
173  << " m_allowDrift: " << m_allowDrift
174  << " m_rfBandwidth: " << m_rfBandwidth
175  << " m_centerFrequency: " << m_centerFrequency
176  << " m_fastLock: " << m_fastLock
177  << " m_hardMetric: " << m_hardMetric
178  << " m_filter: " << m_filter
179  << " m_rollOff: " << m_rollOff
180  << " m_viterbi: " << m_viterbi
181  << " m_fec: " << m_fec
182  << " m_modulation: " << m_modulation
183  << " m_standard: " << m_standard
184  << " m_notchFilters: " << m_notchFilters
185  << " m_symbolRate: " << m_symbolRate
186  << " m_excursion: " << m_excursion
187  << " m_audioMute: " << m_audioMute
188  << " m_audioDeviceName: " << m_audioDeviceName
189  << " m_audioVolume: " << m_audioVolume
190  << " m_videoMute: " << m_videoMute;
191 }
DATVModulation m_modulation
dvb_version m_standard
+ Here is the caller graph for this function:

◆ deserialize()

bool DATVDemodSettings::deserialize ( const QByteArray &  data)

Definition at line 95 of file datvdemodsettings.cpp.

References BPSK, Serializable::deserialize(), DVB_S, DVB_S2, FEC12, SimpleDeserializer::getVersion(), SimpleDeserializer::isValid(), m_allowDrift, m_audioDeviceName, m_audioMute, m_audioVolume, m_centerFrequency, m_channelMarker, AudioDeviceManager::m_defaultDeviceName, m_excursion, m_fastLock, m_fec, m_filter, m_hardMetric, m_modulation, m_notchFilters, m_rfBandwidth, m_rgbColor, m_rollOff, m_standard, m_symbolRate, m_title, m_udpTS, m_udpTSAddress, m_udpTSPort, m_videoMute, m_viterbi, MOD_UNSET, RATE_UNSET, SimpleDeserializer::readBlob(), SimpleDeserializer::readBool(), SimpleDeserializer::readFloat(), SimpleDeserializer::readS32(), SimpleDeserializer::readString(), SimpleDeserializer::readU32(), resetToDefaults(), SAMP_LINEAR, SAMP_RRC, and validateSystemConfiguration().

Referenced by DATVDemodGUI::deserialize(), and setChannelMarker().

96 {
97  SimpleDeserializer d(data);
98 
99  if(!d.isValid())
100  {
101  resetToDefaults();
102  return false;
103  }
104 
105  if(d.getVersion() == 1)
106  {
107  QByteArray bytetmp;
108  qint32 tmp;
109  quint32 utmp;
110  QString strtmp;
111 
112  d.readS32(2, &m_rfBandwidth, 512000);
113  d.readS32(3, &m_centerFrequency, 0);
114 
115  d.readS32(4, &tmp, (int) DVB_S);
116  tmp = tmp < 0 ? 0 : tmp > (int) DVB_S2 ? (int) DVB_S2 : tmp;
117  m_standard = (dvb_version) tmp;
118 
119  d.readS32(5, &tmp, (int) BPSK);
120  tmp = tmp < 0 ? 0 : tmp >= (int) MOD_UNSET ? (int) MOD_UNSET - 1 : tmp;
122 
123  d.readBlob(6, &bytetmp);
124 
125  if (m_channelMarker) {
126  m_channelMarker->deserialize(bytetmp);
127  }
128 
129  d.readU32(7, &m_rgbColor, QColor(Qt::magenta).rgb());
130  d.readString(8, &m_title, "DATV Demodulator");
131 
132  d.readS32(9, &tmp, (int) FEC12);
133  tmp = tmp < 0 ? 0 : tmp >= (int) RATE_UNSET ? (int) RATE_UNSET - 1 : tmp;
134  m_fec = (DATVCodeRate) tmp;
135 
136  d.readBool(10, &m_audioMute, false);
137  d.readS32(11, &m_symbolRate, 250000);
138  d.readS32(12, &m_notchFilters, 0);
139  d.readBool(13, &m_allowDrift, false);
140  d.readBool(14, &m_fastLock, false);
141 
142  d.readS32(15, &tmp, (int) SAMP_LINEAR);
143  tmp = tmp < 0 ? 0 : tmp > (int) SAMP_RRC ? (int) SAMP_RRC : tmp;
144  m_filter = (dvb_sampler) tmp;
145 
146  d.readBool(16, &m_hardMetric, false);
147  d.readFloat(17, &m_rollOff, 0.35);
148  d.readBool(18, &m_viterbi, false);
149  d.readS32(19, &m_excursion, 10);
151  d.readS32(21, &m_audioVolume, 0);
152  d.readBool(22, &m_videoMute, false);
153  d.readString(23, &m_udpTSAddress, "127.0.0.1");
154  d.readU32(24, &utmp, 8882);
155  m_udpTSPort = utmp < 1024 ? 1024 : utmp > 65536 ? 65535 : utmp;
156  d.readBool(25, &m_udpTS, false);
157 
159 
160  return true;
161  }
162  else
163  {
164  resetToDefaults();
165  return false;
166  }
167 }
static const QString m_defaultDeviceName
DATVModulation m_modulation
virtual bool deserialize(const QByteArray &data)=0
Serializable * m_channelMarker
dvb_version m_standard
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAvailableCodeRates()

void DATVDemodSettings::getAvailableCodeRates ( dvb_version  dvbStandard,
DATVModulation  modulation,
std::vector< DATVCodeRate > &  codeRates 
)
static

Definition at line 412 of file datvdemodsettings.cpp.

References APSK16, APSK32, APSK64E, DVB_S, DVB_S2, FEC12, FEC13, FEC14, FEC23, FEC25, FEC34, FEC35, FEC45, FEC56, FEC78, FEC89, FEC910, PSK8, and QPSK.

Referenced by DATVDemodGUI::displaySystemConfiguration(), and setChannelMarker().

413 {
414  codeRates.clear();
415 
416  if (dvbStandard == DVB_S)
417  {
418  codeRates.push_back(FEC12);
419  codeRates.push_back(FEC23);
420  codeRates.push_back(FEC34);
421  codeRates.push_back(FEC56);
422  codeRates.push_back(FEC78);
423  }
424  else if (dvbStandard == DVB_S2)
425  {
426  if (modulation == QPSK)
427  {
428  codeRates.push_back(FEC14);
429  codeRates.push_back(FEC13);
430  codeRates.push_back(FEC25);
431  codeRates.push_back(FEC12);
432  }
433  if ((modulation == QPSK) || (modulation == PSK8))
434  {
435  codeRates.push_back(FEC35);
436  }
437  if ((modulation == QPSK) || (modulation == PSK8) || (modulation == APSK16))
438  {
439  codeRates.push_back(FEC23);
440  }
441  if ((modulation == QPSK) || (modulation == PSK8) || (modulation == APSK16) || (modulation == APSK32))
442  {
443  codeRates.push_back(FEC34);
444  }
445  if ((modulation == QPSK) || (modulation == APSK16) || (modulation == APSK32) || (modulation == APSK64E))
446  {
447  codeRates.push_back(FEC45);
448  }
449  if ((modulation == QPSK) || (modulation == PSK8) || (modulation == APSK16) || (modulation == APSK32) || (modulation == APSK64E))
450  {
451  codeRates.push_back(FEC56);
452  }
453  if ((modulation == QPSK) || (modulation == PSK8) || (modulation == APSK16) || (modulation == APSK32))
454  {
455  codeRates.push_back(FEC89);
456  codeRates.push_back(FEC910);
457  }
458  }
459 }
+ Here is the caller graph for this function:

◆ getAvailableModulations()

void DATVDemodSettings::getAvailableModulations ( dvb_version  dvbStandard,
std::vector< DATVModulation > &  modulations 
)
static

Definition at line 389 of file datvdemodsettings.cpp.

References APSK16, APSK32, APSK64E, BPSK, DVB_S, DVB_S2, PSK8, QAM16, QAM256, QAM64, and QPSK.

Referenced by DATVDemodGUI::displaySystemConfiguration(), and setChannelMarker().

390 {
391  modulations.clear();
392 
393  if (dvbStandard == DVB_S)
394  {
395  modulations.push_back(BPSK);
396  modulations.push_back(QPSK);
397  modulations.push_back(PSK8);
398  modulations.push_back(QAM16);
399  modulations.push_back(QAM64);
400  modulations.push_back(QAM256);
401  }
402  else if (dvbStandard == DVB_S2)
403  {
404  modulations.push_back(QPSK);
405  modulations.push_back(PSK8);
406  modulations.push_back(APSK16);
407  modulations.push_back(APSK32);
408  modulations.push_back(APSK64E);
409  }
410 }
+ Here is the caller graph for this function:

◆ getCodeRateFromStr()

DATVDemodSettings::DATVCodeRate DATVDemodSettings::getCodeRateFromStr ( const QString &  str)
static

Definition at line 302 of file datvdemodsettings.cpp.

References FEC12, FEC13, FEC14, FEC23, FEC25, FEC34, FEC35, FEC45, FEC56, FEC78, FEC89, FEC910, and RATE_UNSET.

Referenced by DATVDemodGUI::on_cmbFEC_currentIndexChanged(), and setChannelMarker().

303 {
304  if (str == "1/4") {
305  return FEC14;
306  } else if (str == "1/3") {
307  return FEC13;
308  } else if (str == "2/5") {
309  return FEC25;
310  } else if (str == "1/2") {
311  return FEC12;
312  } else if (str == "3/5") {
313  return FEC35;
314  } else if (str == "2/3") {
315  return FEC23;
316  } else if (str == "3/4") {
317  return FEC34;
318  } else if (str == "4/5") {
319  return FEC45;
320  } else if (str == "5/6") {
321  return FEC56;
322  } else if (str == "7/8") {
323  return FEC78;
324  } else if (str == "8/9") {
325  return FEC89;
326  } else if (str == "9/10") {
327  return FEC910;
328  } else {
329  return RATE_UNSET;
330  }
331 }
+ Here is the caller graph for this function:

◆ getModulationFromStr()

DATVDemodSettings::DATVModulation DATVDemodSettings::getModulationFromStr ( const QString &  str)
static

Definition at line 276 of file datvdemodsettings.cpp.

References APSK16, APSK32, APSK64E, BPSK, MOD_UNSET, PSK8, QAM16, QAM256, QAM64, and QPSK.

Referenced by DATVDemodGUI::on_cmbModulation_currentIndexChanged(), and setChannelMarker().

277 {
278  if (str == "BPSK") {
279  return BPSK;
280  } else if (str == "QPSK") {
281  return QPSK;
282  } else if (str == "PSK8") {
283  return PSK8;
284  } else if (str == "APSK16") {
285  return APSK16;
286  } else if (str == "APSK32") {
287  return APSK32;
288  } else if (str == "APSK64E") {
289  return APSK64E;
290  } else if (str == "QAM16") {
291  return QAM16;
292  } else if (str == "QAM64") {
293  return QAM64;
294  } else if (str == "QAM256") {
295  return QAM256;
296  } else {
297  return MOD_UNSET;
298  }
299 
300 }
+ Here is the caller graph for this function:

◆ getStrFromCodeRate()

QString DATVDemodSettings::getStrFromCodeRate ( const DATVCodeRate  codeRate)
static

Definition at line 358 of file datvdemodsettings.cpp.

References FEC12, FEC13, FEC14, FEC23, FEC25, FEC34, FEC35, FEC45, FEC56, FEC78, FEC89, and FEC910.

Referenced by DATVDemodGUI::displaySystemConfiguration(), setChannelMarker(), and DATVDemodGUI::tick().

359 {
360  if (codeRate == FEC14) {
361  return "1/4";
362  } else if (codeRate == FEC13) {
363  return "1/3";
364  } else if (codeRate == FEC25) {
365  return "2/5";
366  } else if (codeRate == FEC12) {
367  return "1/2";
368  } else if (codeRate == FEC35) {
369  return "3/5";
370  } else if (codeRate == FEC23) {
371  return "2/3";
372  } else if (codeRate == FEC34) {
373  return "3/4";
374  } else if (codeRate == FEC45) {
375  return "4/5";
376  } else if (codeRate == FEC56) {
377  return "5/6";
378  } else if (codeRate == FEC78) {
379  return "7/8";
380  } else if (codeRate == FEC89) {
381  return "8/9";
382  } else if (codeRate == FEC910) {
383  return "9/10";
384  } else {
385  return "N/A";
386  }
387 }
+ Here is the caller graph for this function:

◆ getStrFromModulation()

QString DATVDemodSettings::getStrFromModulation ( const DATVModulation  modulation)
static

Definition at line 333 of file datvdemodsettings.cpp.

References APSK16, APSK32, APSK64E, BPSK, PSK8, QAM16, QAM256, QAM64, and QPSK.

Referenced by DATVDemodGUI::displaySystemConfiguration(), setChannelMarker(), and DATVDemodGUI::tick().

334 {
335  if (modulation == BPSK) {
336  return "BPSK";
337  } else if (modulation == QPSK) {
338  return "QPSK";
339  } else if (modulation == PSK8) {
340  return "PSK8";
341  } else if (modulation == APSK16) {
342  return "APSK16";
343  } else if (modulation == APSK32) {
344  return "APSK32";
345  } else if (modulation == APSK64E) {
346  return "APSK64E";
347  } else if (modulation == QAM16) {
348  return "QAM16";
349  } else if (modulation == QAM64) {
350  return "QAM64";
351  } else if (modulation == QAM256) {
352  return "QAM256";
353  } else {
354  return "N/A";
355  }
356 }
+ Here is the caller graph for this function:

◆ isDifferent()

bool DATVDemodSettings::isDifferent ( const DATVDemodSettings other)

Definition at line 193 of file datvdemodsettings.cpp.

References m_allowDrift, m_excursion, m_fastLock, m_fec, m_filter, m_hardMetric, m_modulation, m_notchFilters, m_rollOff, m_standard, m_symbolRate, and m_viterbi.

Referenced by DATVDemod::applySettings(), and setChannelMarker().

194 {
195  return ((m_allowDrift != other.m_allowDrift)
196  || (m_fastLock != other.m_fastLock)
197  || (m_hardMetric != other.m_hardMetric)
198  || (m_filter != other.m_filter)
199  || (m_rollOff != other.m_rollOff)
200  || (m_viterbi != other.m_viterbi)
201  || (m_fec != other.m_fec)
202  || (m_modulation != other.m_modulation)
203  || (m_standard != other.m_standard)
204  || (m_notchFilters != other.m_notchFilters)
205  || (m_symbolRate != other.m_symbolRate)
206  || (m_excursion != other.m_excursion)
207  || (m_standard != other.m_standard));
208 }
DATVModulation m_modulation
dvb_version m_standard
+ Here is the caller graph for this function:

◆ resetToDefaults()

void DATVDemodSettings::resetToDefaults ( )

Definition at line 33 of file datvdemodsettings.cpp.

References BPSK, DVB_S, FEC12, m_allowDrift, m_audioDeviceName, m_audioMute, m_audioVolume, m_centerFrequency, AudioDeviceManager::m_defaultDeviceName, m_excursion, m_fastLock, m_fec, m_filter, m_hardMetric, m_modulation, m_notchFilters, m_rfBandwidth, m_rgbColor, m_rollOff, m_standard, m_symbolRate, m_title, m_udpTS, m_udpTSAddress, m_udpTSPort, m_videoMute, m_viterbi, and SAMP_LINEAR.

Referenced by DATVDemodSettings(), deserialize(), and DATVDemodGUI::resetToDefaults().

34 {
35  m_rgbColor = QColor(Qt::magenta).rgb();
36  m_title = "DATV Demodulator";
37  m_rfBandwidth = 512000;
39  m_standard = DVB_S;
41  m_fec = FEC12;
42  m_symbolRate = 250000;
43  m_notchFilters = 0;
44  m_allowDrift = false;
45  m_fastLock = false;
47  m_hardMetric = false;
48  m_rollOff = 0.35;
49  m_viterbi = false;
50  m_excursion = 10;
51  m_audioMute = false;
53  m_audioVolume = 0;
54  m_videoMute = false;
55  m_udpTSAddress = "127.0.0.1";
56  m_udpTSPort = 8882;
57  m_udpTS = false;
58 }
static const QString m_defaultDeviceName
DATVModulation m_modulation
dvb_version m_standard
+ Here is the caller graph for this function:

◆ serialize()

QByteArray DATVDemodSettings::serialize ( ) const

Definition at line 60 of file datvdemodsettings.cpp.

References SimpleSerializer::final(), m_allowDrift, m_audioDeviceName, m_audioMute, m_audioVolume, m_centerFrequency, m_channelMarker, m_excursion, m_fastLock, m_fec, m_filter, m_hardMetric, m_modulation, m_notchFilters, m_rfBandwidth, m_rgbColor, m_rollOff, m_standard, m_symbolRate, m_title, m_udpTS, m_udpTSAddress, m_udpTSPort, m_videoMute, m_viterbi, Serializable::serialize(), SimpleSerializer::writeBlob(), SimpleSerializer::writeBool(), SimpleSerializer::writeFloat(), SimpleSerializer::writeS32(), SimpleSerializer::writeString(), and SimpleSerializer::writeU32().

Referenced by DATVDemodGUI::serialize(), and setChannelMarker().

61 {
62  SimpleSerializer s(1);
63  s.writeS32(2, m_rfBandwidth);
64  s.writeS32(3, m_centerFrequency);
65  s.writeS32(4, (int) m_standard);
66  s.writeS32(5, (int) m_modulation);
67 
68  if (m_channelMarker) {
69  s.writeBlob(6, m_channelMarker->serialize());
70  }
71 
72  s.writeU32(7, m_rgbColor);
73  s.writeString(8, m_title);
74  s.writeS32(9, (int) m_fec);
75  s.writeBool(10, m_audioMute);
76  s.writeS32(11, m_symbolRate);
77  s.writeS32(12, m_notchFilters);
78  s.writeBool(13, m_allowDrift);
79  s.writeBool(14, m_fastLock);
80  s.writeS32(15, (int) m_filter);
81  s.writeBool(16, m_hardMetric);
82  s.writeFloat(17, m_rollOff);
83  s.writeBool(18, m_viterbi);
84  s.writeS32(19, m_excursion);
85  s.writeString(20, m_audioDeviceName);
86  s.writeS32(21, m_audioVolume);
87  s.writeBool(22, m_videoMute);
88  s.writeString(23, m_udpTSAddress);
89  s.writeU32(24, m_udpTSPort);
90  s.writeBool(25, m_udpTS);
91 
92  return s.final();
93 }
DATVModulation m_modulation
Serializable * m_channelMarker
virtual QByteArray serialize() const =0
dvb_version m_standard
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setChannelMarker()

void DATVDemodSettings::setChannelMarker ( Serializable channelMarker)
inline

◆ validateSystemConfiguration()

void DATVDemodSettings::validateSystemConfiguration ( )

Definition at line 210 of file datvdemodsettings.cpp.

References APSK16, APSK32, APSK64E, BPSK, DVB_S, DVB_S2, FEC12, FEC13, FEC14, FEC23, FEC25, FEC34, FEC35, FEC45, FEC56, FEC78, FEC89, FEC910, m_fec, m_modulation, m_standard, PSK8, QAM16, QAM256, QAM64, and QPSK.

Referenced by deserialize(), DATVDemodGUI::handleMessage(), DATVDemodGUI::on_cmbModulation_currentIndexChanged(), DATVDemodGUI::on_cmbStandard_currentIndexChanged(), and setChannelMarker().

211 {
212  qDebug("DATVDemodSettings::validateSystemConfiguration: m_standard: %d m_modulation: %d m_fec: %d",
213  (int) m_standard, (int) m_modulation, (int) m_fec);
214 
215  if (m_standard == DVB_S)
216  {
217  // The ETSI standard for DVB-S specify only QPSK (EN 300 421) with a later extension to BPSK (TR 101 198)
218  // but amateur radio also use extra modes thus only the modes very specific to DVB-S2(X) are restricted
219  if ((m_modulation == APSK16) || (m_modulation == APSK32) || (m_modulation == APSK64E))
220  {
221  m_modulation = QPSK; // Fall back to QPSK
222  }
223  // Here we follow ETSI standard for DVB-S retaining only the valod code rates
224  if ((m_fec != FEC12) && (m_fec!= FEC23) && (m_fec!= FEC34) && (m_fec!= FEC56) && (m_fec!= FEC78)) {
225  m_fec = FEC12;
226  }
227  }
228  else if (m_standard == DVB_S2)
229  {
230  // Here we try to follow ETSI standard for DVB-S2 (EN 300 307 1) and DVB-S2X (EN 302 307 2) together for the available modes
231  if ((m_modulation == BPSK) || (m_modulation == QAM16) || (m_modulation == QAM64) || (m_modulation == QAM256))
232  {
233  m_modulation = QPSK; // Fall back to QPSK
234  }
235  // Here we also try to follow ETSI standard depending on the modulation (EN 300 307 1 Table 1)
236  if (m_modulation == QPSK)
237  {
238  if ((m_fec != FEC14) && (m_fec != FEC13) && (m_fec != FEC25)
239  && (m_fec != FEC12) && (m_fec != FEC35) && (m_fec != FEC23)
240  && (m_fec != FEC34) && (m_fec != FEC45) && (m_fec != FEC56)
241  && (m_fec != FEC89) && (m_fec != FEC910)) {
242  m_fec = FEC12;
243  }
244  }
245  else if (m_modulation == PSK8)
246  {
247  if ((m_fec != FEC35) && (m_fec != FEC23) && (m_fec != FEC34)
248  && (m_fec != FEC56) && (m_fec != FEC89) && (m_fec != FEC910)) {
249  m_fec = FEC34;
250  }
251  }
252  else if (m_modulation == APSK16)
253  {
254  if ((m_fec != FEC23) && (m_fec != FEC34) && (m_fec != FEC45)
255  && (m_fec != FEC56) && (m_fec != FEC89) && (m_fec != FEC910)) {
256  m_fec = FEC34;
257  }
258  }
259  else if (m_modulation == APSK32)
260  {
261  if ((m_fec != FEC34) && (m_fec != FEC45) && (m_fec != FEC56)
262  && (m_fec != FEC89) && (m_fec != FEC910)) {
263  m_fec = FEC34;
264  }
265  }
266  // DVB-S2X has many mode code rates but here we deal only with the ones available
267  else if (m_modulation == APSK64E)
268  {
269  if ((m_fec != FEC45) && (m_fec != FEC56)) {
270  m_fec = FEC45;
271  }
272  }
273  }
274 }
DATVModulation m_modulation
dvb_version m_standard
+ Here is the caller graph for this function:

Member Data Documentation

◆ m_allowDrift

bool DATVDemodSettings::m_allowDrift

◆ m_audioDeviceName

QString DATVDemodSettings::m_audioDeviceName

◆ m_audioMute

bool DATVDemodSettings::m_audioMute

◆ m_audioVolume

int DATVDemodSettings::m_audioVolume

◆ m_centerFrequency

int DATVDemodSettings::m_centerFrequency

◆ m_channelMarker

Serializable* DATVDemodSettings::m_channelMarker

Definition at line 77 of file datvdemodsettings.h.

Referenced by deserialize(), and serialize().

◆ m_excursion

int DATVDemodSettings::m_excursion

◆ m_fastLock

bool DATVDemodSettings::m_fastLock

◆ m_fec

DATVCodeRate DATVDemodSettings::m_fec

◆ m_filter

dvb_sampler DATVDemodSettings::m_filter

◆ m_hardMetric

bool DATVDemodSettings::m_hardMetric

◆ m_modulation

DATVModulation DATVDemodSettings::m_modulation

◆ m_notchFilters

int DATVDemodSettings::m_notchFilters

◆ m_rfBandwidth

int DATVDemodSettings::m_rfBandwidth

◆ m_rgbColor

quint32 DATVDemodSettings::m_rgbColor

◆ m_rollOff

float DATVDemodSettings::m_rollOff

◆ m_standard

dvb_version DATVDemodSettings::m_standard

◆ m_symbolRate

int DATVDemodSettings::m_symbolRate

◆ m_title

QString DATVDemodSettings::m_title

Definition at line 76 of file datvdemodsettings.h.

Referenced by deserialize(), resetToDefaults(), and serialize().

◆ m_udpTS

bool DATVDemodSettings::m_udpTS

◆ m_udpTSAddress

QString DATVDemodSettings::m_udpTSAddress

◆ m_udpTSPort

quint32 DATVDemodSettings::m_udpTSPort

◆ m_videoMute

bool DATVDemodSettings::m_videoMute

◆ m_viterbi

bool DATVDemodSettings::m_viterbi

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