mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-11-14 04:03:25 -05:00
ChirpChat demod: added option to change FFT window. Added more narrower bandwidths
This commit is contained in:
parent
22a668394e
commit
cfe726bcfa
@ -297,6 +297,9 @@ void ChirpChatDemod::applySettings(const ChirpChatDemodSettings& settings, bool
|
|||||||
if ((settings.m_deBits != m_settings.m_deBits) || force) {
|
if ((settings.m_deBits != m_settings.m_deBits) || force) {
|
||||||
reverseAPIKeys.append("deBits");
|
reverseAPIKeys.append("deBits");
|
||||||
}
|
}
|
||||||
|
if ((settings.m_fftWindow != m_settings.m_fftWindow) || force) {
|
||||||
|
reverseAPIKeys.append("fftWindow");
|
||||||
|
}
|
||||||
|
|
||||||
if ((settings.m_spreadFactor != m_settings.m_spreadFactor)
|
if ((settings.m_spreadFactor != m_settings.m_spreadFactor)
|
||||||
|| (settings.m_deBits != m_settings.m_deBits) || force) {
|
|| (settings.m_deBits != m_settings.m_deBits) || force) {
|
||||||
@ -453,6 +456,9 @@ void ChirpChatDemod::webapiUpdateChannelSettings(
|
|||||||
if (channelSettingsKeys.contains("deBits")) {
|
if (channelSettingsKeys.contains("deBits")) {
|
||||||
settings.m_deBits = response.getChirpChatDemodSettings()->getDeBits();
|
settings.m_deBits = response.getChirpChatDemodSettings()->getDeBits();
|
||||||
}
|
}
|
||||||
|
if (channelSettingsKeys.contains("fftWindow")) {
|
||||||
|
settings.m_fftWindow = (FFTWindow::Function) response.getChirpChatDemodSettings()->getFftWindow();
|
||||||
|
}
|
||||||
if (channelSettingsKeys.contains("codingScheme")) {
|
if (channelSettingsKeys.contains("codingScheme")) {
|
||||||
settings.m_codingScheme = (ChirpChatDemodSettings::CodingScheme) response.getChirpChatDemodSettings()->getCodingScheme();
|
settings.m_codingScheme = (ChirpChatDemodSettings::CodingScheme) response.getChirpChatDemodSettings()->getCodingScheme();
|
||||||
}
|
}
|
||||||
@ -537,6 +543,7 @@ void ChirpChatDemod::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings
|
|||||||
response.getChirpChatDemodSettings()->setBandwidthIndex(settings.m_bandwidthIndex);
|
response.getChirpChatDemodSettings()->setBandwidthIndex(settings.m_bandwidthIndex);
|
||||||
response.getChirpChatDemodSettings()->setSpreadFactor(settings.m_spreadFactor);
|
response.getChirpChatDemodSettings()->setSpreadFactor(settings.m_spreadFactor);
|
||||||
response.getChirpChatDemodSettings()->setDeBits(settings.m_deBits);
|
response.getChirpChatDemodSettings()->setDeBits(settings.m_deBits);
|
||||||
|
response.getChirpChatDemodSettings()->setFftWindow((int) settings.m_fftWindow);
|
||||||
response.getChirpChatDemodSettings()->setCodingScheme((int) settings.m_codingScheme);
|
response.getChirpChatDemodSettings()->setCodingScheme((int) settings.m_codingScheme);
|
||||||
response.getChirpChatDemodSettings()->setDecodeActive(settings.m_decodeActive ? 1 : 0);
|
response.getChirpChatDemodSettings()->setDecodeActive(settings.m_decodeActive ? 1 : 0);
|
||||||
response.getChirpChatDemodSettings()->setEomSquelchTenths(settings.m_eomSquelchTenths);
|
response.getChirpChatDemodSettings()->setEomSquelchTenths(settings.m_eomSquelchTenths);
|
||||||
@ -629,6 +636,9 @@ void ChirpChatDemod::webapiReverseSendSettings(QList<QString>& channelSettingsKe
|
|||||||
if (channelSettingsKeys.contains("deBits") || force) {
|
if (channelSettingsKeys.contains("deBits") || force) {
|
||||||
swgChirpChatDemodSettings->setDeBits(settings.m_deBits);
|
swgChirpChatDemodSettings->setDeBits(settings.m_deBits);
|
||||||
}
|
}
|
||||||
|
if (channelSettingsKeys.contains("fftWindow") || force) {
|
||||||
|
swgChirpChatDemodSettings->setFftWindow((int) settings.m_fftWindow);
|
||||||
|
}
|
||||||
if (channelSettingsKeys.contains("codingScheme") || force) {
|
if (channelSettingsKeys.contains("codingScheme") || force) {
|
||||||
swgChirpChatDemodSettings->setCodingScheme((int) settings.m_codingScheme);
|
swgChirpChatDemodSettings->setCodingScheme((int) settings.m_codingScheme);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -211,6 +211,12 @@ void ChirpChatDemodGUI::on_deBits_valueChanged(int value)
|
|||||||
applySettings();
|
applySettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ChirpChatDemodGUI::on_fftWindow_currentIndexChanged(int index)
|
||||||
|
{
|
||||||
|
m_settings.m_fftWindow = (FFTWindow::Function) index;
|
||||||
|
applySettings();
|
||||||
|
}
|
||||||
|
|
||||||
void ChirpChatDemodGUI::on_preambleChirps_valueChanged(int value)
|
void ChirpChatDemodGUI::on_preambleChirps_valueChanged(int value)
|
||||||
{
|
{
|
||||||
m_settings.m_preambleChirps = value;
|
m_settings.m_preambleChirps = value;
|
||||||
@ -484,6 +490,7 @@ void ChirpChatDemodGUI::displaySettings()
|
|||||||
ui->Spread->setValue(m_settings.m_spreadFactor);
|
ui->Spread->setValue(m_settings.m_spreadFactor);
|
||||||
ui->SpreadText->setText(tr("%1").arg(m_settings.m_spreadFactor));
|
ui->SpreadText->setText(tr("%1").arg(m_settings.m_spreadFactor));
|
||||||
ui->deBits->setValue(m_settings.m_deBits);
|
ui->deBits->setValue(m_settings.m_deBits);
|
||||||
|
ui->fftWindow->setCurrentIndex((int) m_settings.m_fftWindow);
|
||||||
ui->deBitsText->setText(tr("%1").arg(m_settings.m_deBits));
|
ui->deBitsText->setText(tr("%1").arg(m_settings.m_deBits));
|
||||||
ui->preambleChirps->setValue(m_settings.m_preambleChirps);
|
ui->preambleChirps->setValue(m_settings.m_preambleChirps);
|
||||||
ui->preambleChirpsText->setText(tr("%1").arg(m_settings.m_preambleChirps));
|
ui->preambleChirpsText->setText(tr("%1").arg(m_settings.m_preambleChirps));
|
||||||
|
|||||||
@ -59,6 +59,7 @@ private slots:
|
|||||||
void on_BW_valueChanged(int value);
|
void on_BW_valueChanged(int value);
|
||||||
void on_Spread_valueChanged(int value);
|
void on_Spread_valueChanged(int value);
|
||||||
void on_deBits_valueChanged(int value);
|
void on_deBits_valueChanged(int value);
|
||||||
|
void on_fftWindow_currentIndexChanged(int index);
|
||||||
void on_preambleChirps_valueChanged(int value);
|
void on_preambleChirps_valueChanged(int value);
|
||||||
void on_scheme_currentIndexChanged(int index);
|
void on_scheme_currentIndexChanged(int index);
|
||||||
void on_mute_toggled(bool checked);
|
void on_mute_toggled(bool checked);
|
||||||
|
|||||||
@ -59,7 +59,7 @@
|
|||||||
<widget class="QLabel" name="spreadLabel">
|
<widget class="QLabel" name="spreadLabel">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>2</x>
|
<x>130</x>
|
||||||
<y>70</y>
|
<y>70</y>
|
||||||
<width>22</width>
|
<width>22</width>
|
||||||
<height>16</height>
|
<height>16</height>
|
||||||
@ -100,9 +100,9 @@
|
|||||||
<widget class="QSlider" name="Spread">
|
<widget class="QSlider" name="Spread">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>30</x>
|
<x>150</x>
|
||||||
<y>70</y>
|
<y>70</y>
|
||||||
<width>101</width>
|
<width>70</width>
|
||||||
<height>16</height>
|
<height>16</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -131,7 +131,7 @@
|
|||||||
<widget class="QLabel" name="SpreadText">
|
<widget class="QLabel" name="SpreadText">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>140</x>
|
<x>220</x>
|
||||||
<y>70</y>
|
<y>70</y>
|
||||||
<width>20</width>
|
<width>20</width>
|
||||||
<height>16</height>
|
<height>16</height>
|
||||||
@ -169,7 +169,7 @@
|
|||||||
<widget class="QLabel" name="deBitsLabel">
|
<widget class="QLabel" name="deBitsLabel">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>190</x>
|
<x>260</x>
|
||||||
<y>70</y>
|
<y>70</y>
|
||||||
<width>22</width>
|
<width>22</width>
|
||||||
<height>16</height>
|
<height>16</height>
|
||||||
@ -182,7 +182,7 @@
|
|||||||
<widget class="QLabel" name="deBitsText">
|
<widget class="QLabel" name="deBitsText">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>320</x>
|
<x>360</x>
|
||||||
<y>70</y>
|
<y>70</y>
|
||||||
<width>15</width>
|
<width>15</width>
|
||||||
<height>16</height>
|
<height>16</height>
|
||||||
@ -204,9 +204,9 @@
|
|||||||
<widget class="QSlider" name="deBits">
|
<widget class="QSlider" name="deBits">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>220</x>
|
<x>290</x>
|
||||||
<y>70</y>
|
<y>70</y>
|
||||||
<width>91</width>
|
<width>70</width>
|
||||||
<height>16</height>
|
<height>16</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -340,7 +340,7 @@
|
|||||||
<widget class="QLabel" name="preambleChirpsText">
|
<widget class="QLabel" name="preambleChirpsText">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>480</x>
|
<x>490</x>
|
||||||
<y>70</y>
|
<y>70</y>
|
||||||
<width>20</width>
|
<width>20</width>
|
||||||
<height>16</height>
|
<height>16</height>
|
||||||
@ -362,9 +362,9 @@
|
|||||||
<widget class="QLabel" name="preambleChirpsLabel">
|
<widget class="QLabel" name="preambleChirpsLabel">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>350</x>
|
<x>390</x>
|
||||||
<y>70</y>
|
<y>70</y>
|
||||||
<width>32</width>
|
<width>25</width>
|
||||||
<height>16</height>
|
<height>16</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@ -375,10 +375,10 @@
|
|||||||
<widget class="QSlider" name="preambleChirps">
|
<widget class="QSlider" name="preambleChirps">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>380</x>
|
<x>420</x>
|
||||||
<y>70</y>
|
<y>70</y>
|
||||||
<width>91</width>
|
<width>60</width>
|
||||||
<height>16</height>
|
<height>20</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
@ -530,6 +530,69 @@
|
|||||||
<string>N</string>
|
<string>N</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QComboBox" name="fftWindow">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>50</x>
|
||||||
|
<y>70</y>
|
||||||
|
<width>60</width>
|
||||||
|
<height>18</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>8</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Bart</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>B-H</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>FT</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Ham</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Han</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Rec</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>Kai</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="fftWindowLabel">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>2</x>
|
||||||
|
<y>70</y>
|
||||||
|
<width>41</width>
|
||||||
|
<height>16</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>FFTW</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="payloadContainer" native="true">
|
<widget class="QWidget" name="payloadContainer" native="true">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
|
|||||||
@ -24,6 +24,9 @@
|
|||||||
#include "chirpchatdemodsettings.h"
|
#include "chirpchatdemodsettings.h"
|
||||||
|
|
||||||
const int ChirpChatDemodSettings::bandwidths[] = {
|
const int ChirpChatDemodSettings::bandwidths[] = {
|
||||||
|
325, // 384k / 1024
|
||||||
|
750, // 384k / 512
|
||||||
|
1500, // 384k / 256
|
||||||
2604, // 333k / 128
|
2604, // 333k / 128
|
||||||
3125, // 400k / 128
|
3125, // 400k / 128
|
||||||
3906, // 500k / 128
|
3906, // 500k / 128
|
||||||
@ -49,7 +52,7 @@ const int ChirpChatDemodSettings::bandwidths[] = {
|
|||||||
400000, // 400k / 1
|
400000, // 400k / 1
|
||||||
500000 // 500k / 1
|
500000 // 500k / 1
|
||||||
};
|
};
|
||||||
const int ChirpChatDemodSettings::nbBandwidths = 3*8;
|
const int ChirpChatDemodSettings::nbBandwidths = 3*8 + 3;
|
||||||
const int ChirpChatDemodSettings::oversampling = 2;
|
const int ChirpChatDemodSettings::oversampling = 2;
|
||||||
|
|
||||||
ChirpChatDemodSettings::ChirpChatDemodSettings() :
|
ChirpChatDemodSettings::ChirpChatDemodSettings() :
|
||||||
@ -67,6 +70,7 @@ void ChirpChatDemodSettings::resetToDefaults()
|
|||||||
m_deBits = 0;
|
m_deBits = 0;
|
||||||
m_codingScheme = CodingLoRa;
|
m_codingScheme = CodingLoRa;
|
||||||
m_decodeActive = true;
|
m_decodeActive = true;
|
||||||
|
m_fftWindow = FFTWindow::Rectangle;
|
||||||
m_eomSquelchTenths = 60;
|
m_eomSquelchTenths = 60;
|
||||||
m_nbSymbolsMax = 255;
|
m_nbSymbolsMax = 255;
|
||||||
m_preambleChirps = 8;
|
m_preambleChirps = 8;
|
||||||
@ -113,6 +117,7 @@ QByteArray ChirpChatDemodSettings::serialize() const
|
|||||||
s.writeBool(14, m_hasCRC);
|
s.writeBool(14, m_hasCRC);
|
||||||
s.writeBool(15, m_hasHeader);
|
s.writeBool(15, m_hasHeader);
|
||||||
s.writeS32(17, m_preambleChirps);
|
s.writeS32(17, m_preambleChirps);
|
||||||
|
s.writeS32(18, (int) m_fftWindow);
|
||||||
s.writeBool(20, m_useReverseAPI);
|
s.writeBool(20, m_useReverseAPI);
|
||||||
s.writeString(21, m_reverseAPIAddress);
|
s.writeString(21, m_reverseAPIAddress);
|
||||||
s.writeU32(22, m_reverseAPIPort);
|
s.writeU32(22, m_reverseAPIPort);
|
||||||
@ -168,7 +173,8 @@ bool ChirpChatDemodSettings::deserialize(const QByteArray& data)
|
|||||||
d.readBool(14, &m_hasCRC, true);
|
d.readBool(14, &m_hasCRC, true);
|
||||||
d.readBool(15, &m_hasHeader, true);
|
d.readBool(15, &m_hasHeader, true);
|
||||||
d.readS32(17, &m_preambleChirps, 8);
|
d.readS32(17, &m_preambleChirps, 8);
|
||||||
|
d.readS32(18, &tmp, (int) FFTWindow::Rectangle);
|
||||||
|
m_fftWindow = (FFTWindow::Function) tmp;
|
||||||
d.readBool(20, &m_useReverseAPI, false);
|
d.readBool(20, &m_useReverseAPI, false);
|
||||||
d.readString(21, &m_reverseAPIAddress, "127.0.0.1");
|
d.readString(21, &m_reverseAPIAddress, "127.0.0.1");
|
||||||
d.readU32(22, &utmp, 0);
|
d.readU32(22, &utmp, 0);
|
||||||
|
|||||||
@ -24,6 +24,8 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
#include "dsp/fftwindow.h"
|
||||||
|
|
||||||
class Serializable;
|
class Serializable;
|
||||||
|
|
||||||
struct ChirpChatDemodSettings
|
struct ChirpChatDemodSettings
|
||||||
@ -38,7 +40,8 @@ struct ChirpChatDemodSettings
|
|||||||
int m_inputFrequencyOffset;
|
int m_inputFrequencyOffset;
|
||||||
int m_bandwidthIndex;
|
int m_bandwidthIndex;
|
||||||
int m_spreadFactor;
|
int m_spreadFactor;
|
||||||
int m_deBits; //!< Low data rate optmize (DE) bits
|
int m_deBits; //!< Low data rate optmize (DE) bits
|
||||||
|
FFTWindow::Function m_fftWindow;
|
||||||
CodingScheme m_codingScheme;
|
CodingScheme m_codingScheme;
|
||||||
bool m_decodeActive;
|
bool m_decodeActive;
|
||||||
int m_eomSquelchTenths; //!< Squelch factor to trigger end of message (/10)
|
int m_eomSquelchTenths; //!< Squelch factor to trigger end of message (/10)
|
||||||
|
|||||||
@ -52,7 +52,7 @@ ChirpChatDemodSink::ChirpChatDemodSink() :
|
|||||||
m_fft = FFTEngine::create();
|
m_fft = FFTEngine::create();
|
||||||
m_fftSFD = FFTEngine::create();
|
m_fftSFD = FFTEngine::create();
|
||||||
|
|
||||||
initSF(m_settings.m_spreadFactor, m_settings.m_deBits);
|
initSF(m_settings.m_spreadFactor, m_settings.m_deBits, m_settings.m_fftWindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
ChirpChatDemodSink::~ChirpChatDemodSink()
|
ChirpChatDemodSink::~ChirpChatDemodSink()
|
||||||
@ -65,7 +65,7 @@ ChirpChatDemodSink::~ChirpChatDemodSink()
|
|||||||
delete[] m_spectrumLine;
|
delete[] m_spectrumLine;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChirpChatDemodSink::initSF(unsigned int sf, unsigned int deBits)
|
void ChirpChatDemodSink::initSF(unsigned int sf, unsigned int deBits, FFTWindow::Function fftWindow)
|
||||||
{
|
{
|
||||||
if (m_downChirps) {
|
if (m_downChirps) {
|
||||||
delete[] m_downChirps;
|
delete[] m_downChirps;
|
||||||
@ -84,14 +84,14 @@ void ChirpChatDemodSink::initSF(unsigned int sf, unsigned int deBits)
|
|||||||
m_nbSymbolsEff = 1 << (sf - deBits);
|
m_nbSymbolsEff = 1 << (sf - deBits);
|
||||||
m_deLength = 1 << deBits;
|
m_deLength = 1 << deBits;
|
||||||
m_fftLength = m_nbSymbols;
|
m_fftLength = m_nbSymbols;
|
||||||
|
m_fftWindow.create(fftWindow, m_fftLength);
|
||||||
|
m_fftWindow.setKaiserAlpha(M_PI);
|
||||||
m_interpolatedFFTLength = m_fftInterpolation*m_fftLength;
|
m_interpolatedFFTLength = m_fftInterpolation*m_fftLength;
|
||||||
m_preambleTolerance = (m_deLength*m_fftInterpolation)/2;
|
m_preambleTolerance = (m_deLength*m_fftInterpolation)/2;
|
||||||
m_fft->configure(m_interpolatedFFTLength, false);
|
m_fft->configure(m_interpolatedFFTLength, false);
|
||||||
m_fftSFD->configure(m_interpolatedFFTLength, false);
|
m_fftSFD->configure(m_interpolatedFFTLength, false);
|
||||||
m_state = ChirpChatStateReset;
|
m_state = ChirpChatStateReset;
|
||||||
m_sfdSkip = m_fftLength / 4;
|
m_sfdSkip = m_fftLength / 4;
|
||||||
m_fftWindow.create(FFTWindow::Function::Kaiser, m_fftLength);
|
|
||||||
m_fftWindow.setKaiserAlpha(M_PI);
|
|
||||||
m_downChirps = new Complex[2*m_nbSymbols]; // Each table is 2 chirps long to allow processing from arbitrary offsets.
|
m_downChirps = new Complex[2*m_nbSymbols]; // Each table is 2 chirps long to allow processing from arbitrary offsets.
|
||||||
m_upChirps = new Complex[2*m_nbSymbols];
|
m_upChirps = new Complex[2*m_nbSymbols];
|
||||||
m_spectrumBuffer = new Complex[m_nbSymbols];
|
m_spectrumBuffer = new Complex[m_nbSymbols];
|
||||||
@ -233,7 +233,7 @@ void ChirpChatDemodSink::processSample(const Complex& ci)
|
|||||||
else if (m_state == ChirpChatStatePreamble) // preamble found look for SFD start
|
else if (m_state == ChirpChatStatePreamble) // preamble found look for SFD start
|
||||||
{
|
{
|
||||||
m_fft->in()[m_fftCounter] = ci * m_downChirps[m_chirp]; // de-chirp the up ramp
|
m_fft->in()[m_fftCounter] = ci * m_downChirps[m_chirp]; // de-chirp the up ramp
|
||||||
m_fftSFD->in()[m_fftCounter] = ci * m_upChirps[m_chirp]; // de-chiro the down ramp
|
m_fftSFD->in()[m_fftCounter] = ci * m_upChirps[m_chirp]; // de-chirp the down ramp
|
||||||
m_fftCounter++;
|
m_fftCounter++;
|
||||||
|
|
||||||
if (m_fftCounter == m_fftLength)
|
if (m_fftCounter == m_fftLength)
|
||||||
@ -620,8 +620,9 @@ void ChirpChatDemodSink::applySettings(const ChirpChatDemodSettings& settings, b
|
|||||||
<< " force: " << force;
|
<< " force: " << force;
|
||||||
|
|
||||||
if ((settings.m_spreadFactor != m_settings.m_spreadFactor)
|
if ((settings.m_spreadFactor != m_settings.m_spreadFactor)
|
||||||
|| (settings.m_deBits != m_settings.m_deBits) || force) {
|
|| (settings.m_deBits != m_settings.m_deBits)
|
||||||
initSF(settings.m_spreadFactor, settings.m_deBits);
|
|| (settings.m_fftWindow != m_settings.m_fftWindow) || force) {
|
||||||
|
initSF(settings.m_spreadFactor, settings.m_deBits, settings.m_fftWindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_settings = settings;
|
m_settings = settings;
|
||||||
|
|||||||
@ -115,7 +115,7 @@ private:
|
|||||||
int m_preambleTolerance; //!< Number of FFT bins to collate when looking for preamble
|
int m_preambleTolerance; //!< Number of FFT bins to collate when looking for preamble
|
||||||
|
|
||||||
void processSample(const Complex& ci);
|
void processSample(const Complex& ci);
|
||||||
void initSF(unsigned int sf, unsigned int deBits); //!< Init tables, FFTs, depending on spread factor
|
void initSF(unsigned int sf, unsigned int deBits, FFTWindow::Function fftWindow); //!< Init tables, FFTs, depending on spread factor
|
||||||
void reset();
|
void reset();
|
||||||
unsigned int argmax(
|
unsigned int argmax(
|
||||||
const Complex *fftBins,
|
const Complex *fftBins,
|
||||||
|
|||||||
@ -24,6 +24,9 @@
|
|||||||
#include "chirpchatmodsettings.h"
|
#include "chirpchatmodsettings.h"
|
||||||
|
|
||||||
const int ChirpChatModSettings::bandwidths[] = {
|
const int ChirpChatModSettings::bandwidths[] = {
|
||||||
|
325, // 384k / 1024
|
||||||
|
750, // 384k / 512
|
||||||
|
1500, // 384k / 256
|
||||||
2604, // 333k / 128
|
2604, // 333k / 128
|
||||||
3125, // 400k / 128
|
3125, // 400k / 128
|
||||||
3906, // 500k / 128
|
3906, // 500k / 128
|
||||||
@ -49,7 +52,7 @@ const int ChirpChatModSettings::bandwidths[] = {
|
|||||||
400000, // 400k / 1
|
400000, // 400k / 1
|
||||||
500000 // 500k / 1
|
500000 // 500k / 1
|
||||||
};
|
};
|
||||||
const int ChirpChatModSettings::nbBandwidths = 3*8;
|
const int ChirpChatModSettings::nbBandwidths = 3*8 + 3;
|
||||||
const int ChirpChatModSettings::oversampling = 4;
|
const int ChirpChatModSettings::oversampling = 4;
|
||||||
|
|
||||||
ChirpChatModSettings::ChirpChatModSettings() :
|
ChirpChatModSettings::ChirpChatModSettings() :
|
||||||
|
|||||||
@ -2435,7 +2435,7 @@ margin-bottom: 20px;
|
|||||||
},
|
},
|
||||||
"bandwidthIndex" : {
|
"bandwidthIndex" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "standard bandwidths index:\n * 0 - 2604 Hz (333333 / 128)\n * 1 - 3125 Hz (400000 / 128)\n * 2 - 3906 Hz (500000 / 128)\n * 3 - 5208 Hz (333333 / 64)\n * 4 - 6250 Hz (400000 / 64)\n * 5 - 7813 Hz (500000 / 64)\n * 6 - 10417 Hz (333333 / 32)\n * 7 - 12500 Hz (400000 / 32)\n * 8 - 15625 Hz (500000 / 32)\n * 9 - 20833 Hz (333333 / 16)\n * 10 - 25000 Hz (400000 / 16)\n * 11 - 31250 Hz (500000 / 16)\n * 12 - 41667 Hz (333333 / 8)\n * 13 - 50000 Hz (400000 / 8)\n * 14 - 62500 Hz (500000 / 8)\n * 15 - 83333 Hz (333333 / 4)\n * 16 - 100000 Hz (400000 / 4)\n * 17 - 125000 Hz (500000 / 4)\n * 18 - 166667 Hz (333333 / 2)\n * 19 - 200000 Hz (400000 / 2)\n * 20 - 250000 Hz (500000 / 2)\n * 21 - 333333 Hz (333333 / 1)\n * 22 - 400000 Hz (400000 / 1)\n * 23 - 500000 Hz (500000 / 1)\n"
|
"description" : "standard bandwidths index:\n * 0 - 375 Hz (384000 / 1024)\n * 1 - 750 Hz (384000 / 512)\n * 2 - 1500 Hz (384000 / 256)\n * 3 - 2604 Hz (333333 / 128)\n * 4 - 3125 Hz (400000 / 128)\n * 5 - 3906 Hz (500000 / 128)\n * 6 - 5208 Hz (333333 / 64)\n * 7 - 6250 Hz (400000 / 64)\n * 8 - 7813 Hz (500000 / 64)\n * 9 - 10417 Hz (333333 / 32)\n * 10 - 12500 Hz (400000 / 32)\n * 11 - 15625 Hz (500000 / 32)\n * 12 - 20833 Hz (333333 / 16)\n * 13 - 25000 Hz (400000 / 16)\n * 14 - 31250 Hz (500000 / 16)\n * 15 - 41667 Hz (333333 / 8)\n * 16 - 50000 Hz (400000 / 8)\n * 17 - 62500 Hz (500000 / 8)\n * 18 - 83333 Hz (333333 / 4)\n * 19 - 100000 Hz (400000 / 4)\n * 20 - 125000 Hz (500000 / 4)\n * 21 - 166667 Hz (333333 / 2)\n * 22 - 200000 Hz (400000 / 2)\n * 23 - 250000 Hz (500000 / 2)\n * 24 - 333333 Hz (333333 / 1)\n * 25 - 400000 Hz (400000 / 1)\n * 26 - 500000 Hz (500000 / 1)\n"
|
||||||
},
|
},
|
||||||
"spreadFactor" : {
|
"spreadFactor" : {
|
||||||
"type" : "integer"
|
"type" : "integer"
|
||||||
@ -2444,9 +2444,13 @@ margin-bottom: 20px;
|
|||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "Low data rate optmize (DE) bits i.e. nb of FFT bins per effective symbol"
|
"description" : "Low data rate optmize (DE) bits i.e. nb of FFT bins per effective symbol"
|
||||||
},
|
},
|
||||||
|
"fftWindow" : {
|
||||||
|
"type" : "integer",
|
||||||
|
"description" : "FFT Window index (FFTWindow::Function):\n * 0 - Bartlett\n * 1 - BlackmanHarris\n * 2 - Flattop\n * 3 - Hamming\n * 4 - Hanning\n * 5 - Rectangle\n * 6 - Kaiser\n"
|
||||||
|
},
|
||||||
"codingScheme" : {
|
"codingScheme" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "message encoding scheme (LoRaModSettings::CodingScheme):\n * 0 - LoRa\n * 1 - Plain ASCII (7 bit)\n * 2 - Teletype (5 bit Baudot) a.k.a TTY\n"
|
"description" : "message encoding scheme (ChirpChatDemodSettings::CodingScheme):\n * 0 - LoRa\n * 1 - Plain ASCII (7 bit)\n * 2 - Teletype (5 bit Baudot) a.k.a TTY\n"
|
||||||
},
|
},
|
||||||
"decodeActive" : {
|
"decodeActive" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
@ -2561,7 +2565,7 @@ margin-bottom: 20px;
|
|||||||
},
|
},
|
||||||
"bandwidthIndex" : {
|
"bandwidthIndex" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "standard bandwidths index:\n * 0 - 2604 Hz (333333 / 128)\n * 1 - 3125 Hz (400000 / 128)\n * 2 - 3906 Hz (500000 / 128)\n * 3 - 5208 Hz (333333 / 64)\n * 4 - 6250 Hz (400000 / 64)\n * 5 - 7813 Hz (500000 / 64)\n * 6 - 10417 Hz (333333 / 32)\n * 7 - 12500 Hz (400000 / 32)\n * 8 - 15625 Hz (500000 / 32)\n * 9 - 20833 Hz (333333 / 16)\n * 10 - 25000 Hz (400000 / 16)\n * 11 - 31250 Hz (500000 / 16)\n * 12 - 41667 Hz (333333 / 8)\n * 13 - 50000 Hz (400000 / 8)\n * 14 - 62500 Hz (500000 / 8)\n * 15 - 83333 Hz (333333 / 4)\n * 16 - 100000 Hz (400000 / 4)\n * 17 - 125000 Hz (500000 / 4)\n * 18 - 166667 Hz (333333 / 2)\n * 19 - 200000 Hz (400000 / 2)\n * 20 - 250000 Hz (500000 / 2)\n * 21 - 333333 Hz (333333 / 1)\n * 22 - 400000 Hz (400000 / 1)\n * 23 - 500000 Hz (500000 / 1)\n"
|
"description" : "standard bandwidths index:\n * 0 - 375 Hz (384000 / 1024)\n * 1 - 750 Hz (384000 / 512)\n * 2 - 1500 Hz (384000 / 256)\n * 3 - 2604 Hz (333333 / 128)\n * 4 - 3125 Hz (400000 / 128)\n * 5 - 3906 Hz (500000 / 128)\n * 6 - 5208 Hz (333333 / 64)\n * 7 - 6250 Hz (400000 / 64)\n * 8 - 7813 Hz (500000 / 64)\n * 9 - 10417 Hz (333333 / 32)\n * 10 - 12500 Hz (400000 / 32)\n * 11 - 15625 Hz (500000 / 32)\n * 12 - 20833 Hz (333333 / 16)\n * 13 - 25000 Hz (400000 / 16)\n * 14 - 31250 Hz (500000 / 16)\n * 15 - 41667 Hz (333333 / 8)\n * 16 - 50000 Hz (400000 / 8)\n * 17 - 62500 Hz (500000 / 8)\n * 18 - 83333 Hz (333333 / 4)\n * 19 - 100000 Hz (400000 / 4)\n * 20 - 125000 Hz (500000 / 4)\n * 21 - 166667 Hz (333333 / 2)\n * 22 - 200000 Hz (400000 / 2)\n * 23 - 250000 Hz (500000 / 2)\n * 24 - 333333 Hz (333333 / 1)\n * 25 - 400000 Hz (400000 / 1)\n * 26 - 500000 Hz (500000 / 1)\n"
|
||||||
},
|
},
|
||||||
"spreadFactor" : {
|
"spreadFactor" : {
|
||||||
"type" : "integer"
|
"type" : "integer"
|
||||||
@ -2588,7 +2592,7 @@ margin-bottom: 20px;
|
|||||||
},
|
},
|
||||||
"codingScheme" : {
|
"codingScheme" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "message encoding scheme (LoRaModSettings::CodingScheme):\n * 0 - LoRa\n * 1 - Plain ASCII (7 bit)\n * 2 - Teletype (5 bit Baudot) a.k.a TTY\n"
|
"description" : "message encoding scheme (ChirpChatModSettings::CodingScheme):\n * 0 - LoRa\n * 1 - Plain ASCII (7 bit)\n * 2 - Teletype (5 bit Baudot) a.k.a TTY\n"
|
||||||
},
|
},
|
||||||
"nbParityBits" : {
|
"nbParityBits" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
@ -2620,7 +2624,7 @@ margin-bottom: 20px;
|
|||||||
},
|
},
|
||||||
"messageType" : {
|
"messageType" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "type of message to send (LoRaModSettings::MessageType):\n * 0 - No message i.e no output. Use this as a transition to resend the same message.\n * 1 - Beacon. Sends message specified in beaconMessage\n * 2 - CQ call. Sends message specified in cqMessage\n * 3 - Reply to CQ call. Sends message specified in replyMessage\n * 4 - Report to callee. Sends message specified in reportMessage\n * 5 - Report to caller. Sends message specified in replyReportMessage\n * 6 - RRR to callee. Sends message specified in rrrMessage\n * 7 - 73 to caller. Sends message specified in message73\n * 8 - Random message with callsigns. Sends message specified in qsoTextMessage\n * 9 - Plain text. Sends message specified in textMessage\n * 10 - Binary payload. Sends bytes specified in bytesMessage\n"
|
"description" : "type of message to send (ChirpChatModSettings::MessageType):\n * 0 - No message i.e no output. Use this as a transition to resend the same message.\n * 1 - Beacon. Sends message specified in beaconMessage\n * 2 - CQ call. Sends message specified in cqMessage\n * 3 - Reply to CQ call. Sends message specified in replyMessage\n * 4 - Report to callee. Sends message specified in reportMessage\n * 5 - Report to caller. Sends message specified in replyReportMessage\n * 6 - RRR to callee. Sends message specified in rrrMessage\n * 7 - 73 to caller. Sends message specified in message73\n * 8 - Random message with callsigns. Sends message specified in qsoTextMessage\n * 9 - Plain text. Sends message specified in textMessage\n * 10 - Binary payload. Sends bytes specified in bytesMessage\n"
|
||||||
},
|
},
|
||||||
"beaconMessage" : {
|
"beaconMessage" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
@ -32618,7 +32622,7 @@ except ApiException as e:
|
|||||||
</div>
|
</div>
|
||||||
<div id="generator">
|
<div id="generator">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
Generated 2020-03-03T23:14:21.625+01:00
|
Generated 2020-03-07T09:49:57.763+01:00
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -8,39 +8,53 @@ ChirpChatDemodSettings:
|
|||||||
type: integer
|
type: integer
|
||||||
description: >
|
description: >
|
||||||
standard bandwidths index:
|
standard bandwidths index:
|
||||||
* 0 - 2604 Hz (333333 / 128)
|
* 0 - 375 Hz (384000 / 1024)
|
||||||
* 1 - 3125 Hz (400000 / 128)
|
* 1 - 750 Hz (384000 / 512)
|
||||||
* 2 - 3906 Hz (500000 / 128)
|
* 2 - 1500 Hz (384000 / 256)
|
||||||
* 3 - 5208 Hz (333333 / 64)
|
* 3 - 2604 Hz (333333 / 128)
|
||||||
* 4 - 6250 Hz (400000 / 64)
|
* 4 - 3125 Hz (400000 / 128)
|
||||||
* 5 - 7813 Hz (500000 / 64)
|
* 5 - 3906 Hz (500000 / 128)
|
||||||
* 6 - 10417 Hz (333333 / 32)
|
* 6 - 5208 Hz (333333 / 64)
|
||||||
* 7 - 12500 Hz (400000 / 32)
|
* 7 - 6250 Hz (400000 / 64)
|
||||||
* 8 - 15625 Hz (500000 / 32)
|
* 8 - 7813 Hz (500000 / 64)
|
||||||
* 9 - 20833 Hz (333333 / 16)
|
* 9 - 10417 Hz (333333 / 32)
|
||||||
* 10 - 25000 Hz (400000 / 16)
|
* 10 - 12500 Hz (400000 / 32)
|
||||||
* 11 - 31250 Hz (500000 / 16)
|
* 11 - 15625 Hz (500000 / 32)
|
||||||
* 12 - 41667 Hz (333333 / 8)
|
* 12 - 20833 Hz (333333 / 16)
|
||||||
* 13 - 50000 Hz (400000 / 8)
|
* 13 - 25000 Hz (400000 / 16)
|
||||||
* 14 - 62500 Hz (500000 / 8)
|
* 14 - 31250 Hz (500000 / 16)
|
||||||
* 15 - 83333 Hz (333333 / 4)
|
* 15 - 41667 Hz (333333 / 8)
|
||||||
* 16 - 100000 Hz (400000 / 4)
|
* 16 - 50000 Hz (400000 / 8)
|
||||||
* 17 - 125000 Hz (500000 / 4)
|
* 17 - 62500 Hz (500000 / 8)
|
||||||
* 18 - 166667 Hz (333333 / 2)
|
* 18 - 83333 Hz (333333 / 4)
|
||||||
* 19 - 200000 Hz (400000 / 2)
|
* 19 - 100000 Hz (400000 / 4)
|
||||||
* 20 - 250000 Hz (500000 / 2)
|
* 20 - 125000 Hz (500000 / 4)
|
||||||
* 21 - 333333 Hz (333333 / 1)
|
* 21 - 166667 Hz (333333 / 2)
|
||||||
* 22 - 400000 Hz (400000 / 1)
|
* 22 - 200000 Hz (400000 / 2)
|
||||||
* 23 - 500000 Hz (500000 / 1)
|
* 23 - 250000 Hz (500000 / 2)
|
||||||
|
* 24 - 333333 Hz (333333 / 1)
|
||||||
|
* 25 - 400000 Hz (400000 / 1)
|
||||||
|
* 26 - 500000 Hz (500000 / 1)
|
||||||
spreadFactor:
|
spreadFactor:
|
||||||
type: integer
|
type: integer
|
||||||
deBits:
|
deBits:
|
||||||
description: Low data rate optmize (DE) bits i.e. nb of FFT bins per effective symbol
|
description: Low data rate optmize (DE) bits i.e. nb of FFT bins per effective symbol
|
||||||
type: integer
|
type: integer
|
||||||
|
fftWindow:
|
||||||
|
type: integer
|
||||||
|
description: >
|
||||||
|
FFT Window index (FFTWindow::Function):
|
||||||
|
* 0 - Bartlett
|
||||||
|
* 1 - BlackmanHarris
|
||||||
|
* 2 - Flattop
|
||||||
|
* 3 - Hamming
|
||||||
|
* 4 - Hanning
|
||||||
|
* 5 - Rectangle
|
||||||
|
* 6 - Kaiser
|
||||||
codingScheme:
|
codingScheme:
|
||||||
type: integer
|
type: integer
|
||||||
description: >
|
description: >
|
||||||
message encoding scheme (ChirpChatModSettings::CodingScheme):
|
message encoding scheme (ChirpChatDemodSettings::CodingScheme):
|
||||||
* 0 - LoRa
|
* 0 - LoRa
|
||||||
* 1 - Plain ASCII (7 bit)
|
* 1 - Plain ASCII (7 bit)
|
||||||
* 2 - Teletype (5 bit Baudot) a.k.a TTY
|
* 2 - Teletype (5 bit Baudot) a.k.a TTY
|
||||||
|
|||||||
@ -8,30 +8,33 @@ ChirpChatModSettings:
|
|||||||
type: integer
|
type: integer
|
||||||
description: >
|
description: >
|
||||||
standard bandwidths index:
|
standard bandwidths index:
|
||||||
* 0 - 2604 Hz (333333 / 128)
|
* 0 - 375 Hz (384000 / 1024)
|
||||||
* 1 - 3125 Hz (400000 / 128)
|
* 1 - 750 Hz (384000 / 512)
|
||||||
* 2 - 3906 Hz (500000 / 128)
|
* 2 - 1500 Hz (384000 / 256)
|
||||||
* 3 - 5208 Hz (333333 / 64)
|
* 3 - 2604 Hz (333333 / 128)
|
||||||
* 4 - 6250 Hz (400000 / 64)
|
* 4 - 3125 Hz (400000 / 128)
|
||||||
* 5 - 7813 Hz (500000 / 64)
|
* 5 - 3906 Hz (500000 / 128)
|
||||||
* 6 - 10417 Hz (333333 / 32)
|
* 6 - 5208 Hz (333333 / 64)
|
||||||
* 7 - 12500 Hz (400000 / 32)
|
* 7 - 6250 Hz (400000 / 64)
|
||||||
* 8 - 15625 Hz (500000 / 32)
|
* 8 - 7813 Hz (500000 / 64)
|
||||||
* 9 - 20833 Hz (333333 / 16)
|
* 9 - 10417 Hz (333333 / 32)
|
||||||
* 10 - 25000 Hz (400000 / 16)
|
* 10 - 12500 Hz (400000 / 32)
|
||||||
* 11 - 31250 Hz (500000 / 16)
|
* 11 - 15625 Hz (500000 / 32)
|
||||||
* 12 - 41667 Hz (333333 / 8)
|
* 12 - 20833 Hz (333333 / 16)
|
||||||
* 13 - 50000 Hz (400000 / 8)
|
* 13 - 25000 Hz (400000 / 16)
|
||||||
* 14 - 62500 Hz (500000 / 8)
|
* 14 - 31250 Hz (500000 / 16)
|
||||||
* 15 - 83333 Hz (333333 / 4)
|
* 15 - 41667 Hz (333333 / 8)
|
||||||
* 16 - 100000 Hz (400000 / 4)
|
* 16 - 50000 Hz (400000 / 8)
|
||||||
* 17 - 125000 Hz (500000 / 4)
|
* 17 - 62500 Hz (500000 / 8)
|
||||||
* 18 - 166667 Hz (333333 / 2)
|
* 18 - 83333 Hz (333333 / 4)
|
||||||
* 19 - 200000 Hz (400000 / 2)
|
* 19 - 100000 Hz (400000 / 4)
|
||||||
* 20 - 250000 Hz (500000 / 2)
|
* 20 - 125000 Hz (500000 / 4)
|
||||||
* 21 - 333333 Hz (333333 / 1)
|
* 21 - 166667 Hz (333333 / 2)
|
||||||
* 22 - 400000 Hz (400000 / 1)
|
* 22 - 200000 Hz (400000 / 2)
|
||||||
* 23 - 500000 Hz (500000 / 1)
|
* 23 - 250000 Hz (500000 / 2)
|
||||||
|
* 24 - 333333 Hz (333333 / 1)
|
||||||
|
* 25 - 400000 Hz (400000 / 1)
|
||||||
|
* 26 - 500000 Hz (500000 / 1)
|
||||||
spreadFactor:
|
spreadFactor:
|
||||||
type: integer
|
type: integer
|
||||||
deBits:
|
deBits:
|
||||||
|
|||||||
@ -8,35 +8,49 @@ ChirpChatDemodSettings:
|
|||||||
type: integer
|
type: integer
|
||||||
description: >
|
description: >
|
||||||
standard bandwidths index:
|
standard bandwidths index:
|
||||||
* 0 - 2604 Hz (333333 / 128)
|
* 0 - 375 Hz (384000 / 1024)
|
||||||
* 1 - 3125 Hz (400000 / 128)
|
* 1 - 750 Hz (384000 / 512)
|
||||||
* 2 - 3906 Hz (500000 / 128)
|
* 2 - 1500 Hz (384000 / 256)
|
||||||
* 3 - 5208 Hz (333333 / 64)
|
* 3 - 2604 Hz (333333 / 128)
|
||||||
* 4 - 6250 Hz (400000 / 64)
|
* 4 - 3125 Hz (400000 / 128)
|
||||||
* 5 - 7813 Hz (500000 / 64)
|
* 5 - 3906 Hz (500000 / 128)
|
||||||
* 6 - 10417 Hz (333333 / 32)
|
* 6 - 5208 Hz (333333 / 64)
|
||||||
* 7 - 12500 Hz (400000 / 32)
|
* 7 - 6250 Hz (400000 / 64)
|
||||||
* 8 - 15625 Hz (500000 / 32)
|
* 8 - 7813 Hz (500000 / 64)
|
||||||
* 9 - 20833 Hz (333333 / 16)
|
* 9 - 10417 Hz (333333 / 32)
|
||||||
* 10 - 25000 Hz (400000 / 16)
|
* 10 - 12500 Hz (400000 / 32)
|
||||||
* 11 - 31250 Hz (500000 / 16)
|
* 11 - 15625 Hz (500000 / 32)
|
||||||
* 12 - 41667 Hz (333333 / 8)
|
* 12 - 20833 Hz (333333 / 16)
|
||||||
* 13 - 50000 Hz (400000 / 8)
|
* 13 - 25000 Hz (400000 / 16)
|
||||||
* 14 - 62500 Hz (500000 / 8)
|
* 14 - 31250 Hz (500000 / 16)
|
||||||
* 15 - 83333 Hz (333333 / 4)
|
* 15 - 41667 Hz (333333 / 8)
|
||||||
* 16 - 100000 Hz (400000 / 4)
|
* 16 - 50000 Hz (400000 / 8)
|
||||||
* 17 - 125000 Hz (500000 / 4)
|
* 17 - 62500 Hz (500000 / 8)
|
||||||
* 18 - 166667 Hz (333333 / 2)
|
* 18 - 83333 Hz (333333 / 4)
|
||||||
* 19 - 200000 Hz (400000 / 2)
|
* 19 - 100000 Hz (400000 / 4)
|
||||||
* 20 - 250000 Hz (500000 / 2)
|
* 20 - 125000 Hz (500000 / 4)
|
||||||
* 21 - 333333 Hz (333333 / 1)
|
* 21 - 166667 Hz (333333 / 2)
|
||||||
* 22 - 400000 Hz (400000 / 1)
|
* 22 - 200000 Hz (400000 / 2)
|
||||||
* 23 - 500000 Hz (500000 / 1)
|
* 23 - 250000 Hz (500000 / 2)
|
||||||
|
* 24 - 333333 Hz (333333 / 1)
|
||||||
|
* 25 - 400000 Hz (400000 / 1)
|
||||||
|
* 26 - 500000 Hz (500000 / 1)
|
||||||
spreadFactor:
|
spreadFactor:
|
||||||
type: integer
|
type: integer
|
||||||
deBits:
|
deBits:
|
||||||
description: Low data rate optmize (DE) bits i.e. nb of FFT bins per effective symbol
|
description: Low data rate optmize (DE) bits i.e. nb of FFT bins per effective symbol
|
||||||
type: integer
|
type: integer
|
||||||
|
fftWindow:
|
||||||
|
type: integer
|
||||||
|
description: >
|
||||||
|
FFT Window index (FFTWindow::Function):
|
||||||
|
* 0 - Bartlett
|
||||||
|
* 1 - BlackmanHarris
|
||||||
|
* 2 - Flattop
|
||||||
|
* 3 - Hamming
|
||||||
|
* 4 - Hanning
|
||||||
|
* 5 - Rectangle
|
||||||
|
* 6 - Kaiser
|
||||||
codingScheme:
|
codingScheme:
|
||||||
type: integer
|
type: integer
|
||||||
description: >
|
description: >
|
||||||
|
|||||||
@ -8,30 +8,33 @@ ChirpChatModSettings:
|
|||||||
type: integer
|
type: integer
|
||||||
description: >
|
description: >
|
||||||
standard bandwidths index:
|
standard bandwidths index:
|
||||||
* 0 - 2604 Hz (333333 / 128)
|
* 0 - 375 Hz (384000 / 1024)
|
||||||
* 1 - 3125 Hz (400000 / 128)
|
* 1 - 750 Hz (384000 / 512)
|
||||||
* 2 - 3906 Hz (500000 / 128)
|
* 2 - 1500 Hz (384000 / 256)
|
||||||
* 3 - 5208 Hz (333333 / 64)
|
* 3 - 2604 Hz (333333 / 128)
|
||||||
* 4 - 6250 Hz (400000 / 64)
|
* 4 - 3125 Hz (400000 / 128)
|
||||||
* 5 - 7813 Hz (500000 / 64)
|
* 5 - 3906 Hz (500000 / 128)
|
||||||
* 6 - 10417 Hz (333333 / 32)
|
* 6 - 5208 Hz (333333 / 64)
|
||||||
* 7 - 12500 Hz (400000 / 32)
|
* 7 - 6250 Hz (400000 / 64)
|
||||||
* 8 - 15625 Hz (500000 / 32)
|
* 8 - 7813 Hz (500000 / 64)
|
||||||
* 9 - 20833 Hz (333333 / 16)
|
* 9 - 10417 Hz (333333 / 32)
|
||||||
* 10 - 25000 Hz (400000 / 16)
|
* 10 - 12500 Hz (400000 / 32)
|
||||||
* 11 - 31250 Hz (500000 / 16)
|
* 11 - 15625 Hz (500000 / 32)
|
||||||
* 12 - 41667 Hz (333333 / 8)
|
* 12 - 20833 Hz (333333 / 16)
|
||||||
* 13 - 50000 Hz (400000 / 8)
|
* 13 - 25000 Hz (400000 / 16)
|
||||||
* 14 - 62500 Hz (500000 / 8)
|
* 14 - 31250 Hz (500000 / 16)
|
||||||
* 15 - 83333 Hz (333333 / 4)
|
* 15 - 41667 Hz (333333 / 8)
|
||||||
* 16 - 100000 Hz (400000 / 4)
|
* 16 - 50000 Hz (400000 / 8)
|
||||||
* 17 - 125000 Hz (500000 / 4)
|
* 17 - 62500 Hz (500000 / 8)
|
||||||
* 18 - 166667 Hz (333333 / 2)
|
* 18 - 83333 Hz (333333 / 4)
|
||||||
* 19 - 200000 Hz (400000 / 2)
|
* 19 - 100000 Hz (400000 / 4)
|
||||||
* 20 - 250000 Hz (500000 / 2)
|
* 20 - 125000 Hz (500000 / 4)
|
||||||
* 21 - 333333 Hz (333333 / 1)
|
* 21 - 166667 Hz (333333 / 2)
|
||||||
* 22 - 400000 Hz (400000 / 1)
|
* 22 - 200000 Hz (400000 / 2)
|
||||||
* 23 - 500000 Hz (500000 / 1)
|
* 23 - 250000 Hz (500000 / 2)
|
||||||
|
* 24 - 333333 Hz (333333 / 1)
|
||||||
|
* 25 - 400000 Hz (400000 / 1)
|
||||||
|
* 26 - 500000 Hz (500000 / 1)
|
||||||
spreadFactor:
|
spreadFactor:
|
||||||
type: integer
|
type: integer
|
||||||
deBits:
|
deBits:
|
||||||
|
|||||||
@ -2435,7 +2435,7 @@ margin-bottom: 20px;
|
|||||||
},
|
},
|
||||||
"bandwidthIndex" : {
|
"bandwidthIndex" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "standard bandwidths index:\n * 0 - 2604 Hz (333333 / 128)\n * 1 - 3125 Hz (400000 / 128)\n * 2 - 3906 Hz (500000 / 128)\n * 3 - 5208 Hz (333333 / 64)\n * 4 - 6250 Hz (400000 / 64)\n * 5 - 7813 Hz (500000 / 64)\n * 6 - 10417 Hz (333333 / 32)\n * 7 - 12500 Hz (400000 / 32)\n * 8 - 15625 Hz (500000 / 32)\n * 9 - 20833 Hz (333333 / 16)\n * 10 - 25000 Hz (400000 / 16)\n * 11 - 31250 Hz (500000 / 16)\n * 12 - 41667 Hz (333333 / 8)\n * 13 - 50000 Hz (400000 / 8)\n * 14 - 62500 Hz (500000 / 8)\n * 15 - 83333 Hz (333333 / 4)\n * 16 - 100000 Hz (400000 / 4)\n * 17 - 125000 Hz (500000 / 4)\n * 18 - 166667 Hz (333333 / 2)\n * 19 - 200000 Hz (400000 / 2)\n * 20 - 250000 Hz (500000 / 2)\n * 21 - 333333 Hz (333333 / 1)\n * 22 - 400000 Hz (400000 / 1)\n * 23 - 500000 Hz (500000 / 1)\n"
|
"description" : "standard bandwidths index:\n * 0 - 375 Hz (384000 / 1024)\n * 1 - 750 Hz (384000 / 512)\n * 2 - 1500 Hz (384000 / 256)\n * 3 - 2604 Hz (333333 / 128)\n * 4 - 3125 Hz (400000 / 128)\n * 5 - 3906 Hz (500000 / 128)\n * 6 - 5208 Hz (333333 / 64)\n * 7 - 6250 Hz (400000 / 64)\n * 8 - 7813 Hz (500000 / 64)\n * 9 - 10417 Hz (333333 / 32)\n * 10 - 12500 Hz (400000 / 32)\n * 11 - 15625 Hz (500000 / 32)\n * 12 - 20833 Hz (333333 / 16)\n * 13 - 25000 Hz (400000 / 16)\n * 14 - 31250 Hz (500000 / 16)\n * 15 - 41667 Hz (333333 / 8)\n * 16 - 50000 Hz (400000 / 8)\n * 17 - 62500 Hz (500000 / 8)\n * 18 - 83333 Hz (333333 / 4)\n * 19 - 100000 Hz (400000 / 4)\n * 20 - 125000 Hz (500000 / 4)\n * 21 - 166667 Hz (333333 / 2)\n * 22 - 200000 Hz (400000 / 2)\n * 23 - 250000 Hz (500000 / 2)\n * 24 - 333333 Hz (333333 / 1)\n * 25 - 400000 Hz (400000 / 1)\n * 26 - 500000 Hz (500000 / 1)\n"
|
||||||
},
|
},
|
||||||
"spreadFactor" : {
|
"spreadFactor" : {
|
||||||
"type" : "integer"
|
"type" : "integer"
|
||||||
@ -2444,9 +2444,13 @@ margin-bottom: 20px;
|
|||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "Low data rate optmize (DE) bits i.e. nb of FFT bins per effective symbol"
|
"description" : "Low data rate optmize (DE) bits i.e. nb of FFT bins per effective symbol"
|
||||||
},
|
},
|
||||||
|
"fftWindow" : {
|
||||||
|
"type" : "integer",
|
||||||
|
"description" : "FFT Window index (FFTWindow::Function):\n * 0 - Bartlett\n * 1 - BlackmanHarris\n * 2 - Flattop\n * 3 - Hamming\n * 4 - Hanning\n * 5 - Rectangle\n * 6 - Kaiser\n"
|
||||||
|
},
|
||||||
"codingScheme" : {
|
"codingScheme" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "message encoding scheme (LoRaModSettings::CodingScheme):\n * 0 - LoRa\n * 1 - Plain ASCII (7 bit)\n * 2 - Teletype (5 bit Baudot) a.k.a TTY\n"
|
"description" : "message encoding scheme (ChirpChatDemodSettings::CodingScheme):\n * 0 - LoRa\n * 1 - Plain ASCII (7 bit)\n * 2 - Teletype (5 bit Baudot) a.k.a TTY\n"
|
||||||
},
|
},
|
||||||
"decodeActive" : {
|
"decodeActive" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
@ -2561,7 +2565,7 @@ margin-bottom: 20px;
|
|||||||
},
|
},
|
||||||
"bandwidthIndex" : {
|
"bandwidthIndex" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "standard bandwidths index:\n * 0 - 2604 Hz (333333 / 128)\n * 1 - 3125 Hz (400000 / 128)\n * 2 - 3906 Hz (500000 / 128)\n * 3 - 5208 Hz (333333 / 64)\n * 4 - 6250 Hz (400000 / 64)\n * 5 - 7813 Hz (500000 / 64)\n * 6 - 10417 Hz (333333 / 32)\n * 7 - 12500 Hz (400000 / 32)\n * 8 - 15625 Hz (500000 / 32)\n * 9 - 20833 Hz (333333 / 16)\n * 10 - 25000 Hz (400000 / 16)\n * 11 - 31250 Hz (500000 / 16)\n * 12 - 41667 Hz (333333 / 8)\n * 13 - 50000 Hz (400000 / 8)\n * 14 - 62500 Hz (500000 / 8)\n * 15 - 83333 Hz (333333 / 4)\n * 16 - 100000 Hz (400000 / 4)\n * 17 - 125000 Hz (500000 / 4)\n * 18 - 166667 Hz (333333 / 2)\n * 19 - 200000 Hz (400000 / 2)\n * 20 - 250000 Hz (500000 / 2)\n * 21 - 333333 Hz (333333 / 1)\n * 22 - 400000 Hz (400000 / 1)\n * 23 - 500000 Hz (500000 / 1)\n"
|
"description" : "standard bandwidths index:\n * 0 - 375 Hz (384000 / 1024)\n * 1 - 750 Hz (384000 / 512)\n * 2 - 1500 Hz (384000 / 256)\n * 3 - 2604 Hz (333333 / 128)\n * 4 - 3125 Hz (400000 / 128)\n * 5 - 3906 Hz (500000 / 128)\n * 6 - 5208 Hz (333333 / 64)\n * 7 - 6250 Hz (400000 / 64)\n * 8 - 7813 Hz (500000 / 64)\n * 9 - 10417 Hz (333333 / 32)\n * 10 - 12500 Hz (400000 / 32)\n * 11 - 15625 Hz (500000 / 32)\n * 12 - 20833 Hz (333333 / 16)\n * 13 - 25000 Hz (400000 / 16)\n * 14 - 31250 Hz (500000 / 16)\n * 15 - 41667 Hz (333333 / 8)\n * 16 - 50000 Hz (400000 / 8)\n * 17 - 62500 Hz (500000 / 8)\n * 18 - 83333 Hz (333333 / 4)\n * 19 - 100000 Hz (400000 / 4)\n * 20 - 125000 Hz (500000 / 4)\n * 21 - 166667 Hz (333333 / 2)\n * 22 - 200000 Hz (400000 / 2)\n * 23 - 250000 Hz (500000 / 2)\n * 24 - 333333 Hz (333333 / 1)\n * 25 - 400000 Hz (400000 / 1)\n * 26 - 500000 Hz (500000 / 1)\n"
|
||||||
},
|
},
|
||||||
"spreadFactor" : {
|
"spreadFactor" : {
|
||||||
"type" : "integer"
|
"type" : "integer"
|
||||||
@ -2588,7 +2592,7 @@ margin-bottom: 20px;
|
|||||||
},
|
},
|
||||||
"codingScheme" : {
|
"codingScheme" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "message encoding scheme (LoRaModSettings::CodingScheme):\n * 0 - LoRa\n * 1 - Plain ASCII (7 bit)\n * 2 - Teletype (5 bit Baudot) a.k.a TTY\n"
|
"description" : "message encoding scheme (ChirpChatModSettings::CodingScheme):\n * 0 - LoRa\n * 1 - Plain ASCII (7 bit)\n * 2 - Teletype (5 bit Baudot) a.k.a TTY\n"
|
||||||
},
|
},
|
||||||
"nbParityBits" : {
|
"nbParityBits" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
@ -2620,7 +2624,7 @@ margin-bottom: 20px;
|
|||||||
},
|
},
|
||||||
"messageType" : {
|
"messageType" : {
|
||||||
"type" : "integer",
|
"type" : "integer",
|
||||||
"description" : "type of message to send (LoRaModSettings::MessageType):\n * 0 - No message i.e no output. Use this as a transition to resend the same message.\n * 1 - Beacon. Sends message specified in beaconMessage\n * 2 - CQ call. Sends message specified in cqMessage\n * 3 - Reply to CQ call. Sends message specified in replyMessage\n * 4 - Report to callee. Sends message specified in reportMessage\n * 5 - Report to caller. Sends message specified in replyReportMessage\n * 6 - RRR to callee. Sends message specified in rrrMessage\n * 7 - 73 to caller. Sends message specified in message73\n * 8 - Random message with callsigns. Sends message specified in qsoTextMessage\n * 9 - Plain text. Sends message specified in textMessage\n * 10 - Binary payload. Sends bytes specified in bytesMessage\n"
|
"description" : "type of message to send (ChirpChatModSettings::MessageType):\n * 0 - No message i.e no output. Use this as a transition to resend the same message.\n * 1 - Beacon. Sends message specified in beaconMessage\n * 2 - CQ call. Sends message specified in cqMessage\n * 3 - Reply to CQ call. Sends message specified in replyMessage\n * 4 - Report to callee. Sends message specified in reportMessage\n * 5 - Report to caller. Sends message specified in replyReportMessage\n * 6 - RRR to callee. Sends message specified in rrrMessage\n * 7 - 73 to caller. Sends message specified in message73\n * 8 - Random message with callsigns. Sends message specified in qsoTextMessage\n * 9 - Plain text. Sends message specified in textMessage\n * 10 - Binary payload. Sends bytes specified in bytesMessage\n"
|
||||||
},
|
},
|
||||||
"beaconMessage" : {
|
"beaconMessage" : {
|
||||||
"type" : "string",
|
"type" : "string",
|
||||||
@ -32618,7 +32622,7 @@ except ApiException as e:
|
|||||||
</div>
|
</div>
|
||||||
<div id="generator">
|
<div id="generator">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
Generated 2020-03-03T23:14:21.625+01:00
|
Generated 2020-03-07T09:49:57.763+01:00
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -36,6 +36,8 @@ SWGChirpChatDemodSettings::SWGChirpChatDemodSettings() {
|
|||||||
m_spread_factor_isSet = false;
|
m_spread_factor_isSet = false;
|
||||||
de_bits = 0;
|
de_bits = 0;
|
||||||
m_de_bits_isSet = false;
|
m_de_bits_isSet = false;
|
||||||
|
fft_window = 0;
|
||||||
|
m_fft_window_isSet = false;
|
||||||
coding_scheme = 0;
|
coding_scheme = 0;
|
||||||
m_coding_scheme_isSet = false;
|
m_coding_scheme_isSet = false;
|
||||||
decode_active = 0;
|
decode_active = 0;
|
||||||
@ -94,6 +96,8 @@ SWGChirpChatDemodSettings::init() {
|
|||||||
m_spread_factor_isSet = false;
|
m_spread_factor_isSet = false;
|
||||||
de_bits = 0;
|
de_bits = 0;
|
||||||
m_de_bits_isSet = false;
|
m_de_bits_isSet = false;
|
||||||
|
fft_window = 0;
|
||||||
|
m_fft_window_isSet = false;
|
||||||
coding_scheme = 0;
|
coding_scheme = 0;
|
||||||
m_coding_scheme_isSet = false;
|
m_coding_scheme_isSet = false;
|
||||||
decode_active = 0;
|
decode_active = 0;
|
||||||
@ -155,6 +159,7 @@ SWGChirpChatDemodSettings::cleanup() {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(udp_address != nullptr) {
|
if(udp_address != nullptr) {
|
||||||
delete udp_address;
|
delete udp_address;
|
||||||
}
|
}
|
||||||
@ -192,6 +197,8 @@ SWGChirpChatDemodSettings::fromJsonObject(QJsonObject &pJson) {
|
|||||||
|
|
||||||
::SWGSDRangel::setValue(&de_bits, pJson["deBits"], "qint32", "");
|
::SWGSDRangel::setValue(&de_bits, pJson["deBits"], "qint32", "");
|
||||||
|
|
||||||
|
::SWGSDRangel::setValue(&fft_window, pJson["fftWindow"], "qint32", "");
|
||||||
|
|
||||||
::SWGSDRangel::setValue(&coding_scheme, pJson["codingScheme"], "qint32", "");
|
::SWGSDRangel::setValue(&coding_scheme, pJson["codingScheme"], "qint32", "");
|
||||||
|
|
||||||
::SWGSDRangel::setValue(&decode_active, pJson["decodeActive"], "qint32", "");
|
::SWGSDRangel::setValue(&decode_active, pJson["decodeActive"], "qint32", "");
|
||||||
@ -262,6 +269,9 @@ SWGChirpChatDemodSettings::asJsonObject() {
|
|||||||
if(m_de_bits_isSet){
|
if(m_de_bits_isSet){
|
||||||
obj->insert("deBits", QJsonValue(de_bits));
|
obj->insert("deBits", QJsonValue(de_bits));
|
||||||
}
|
}
|
||||||
|
if(m_fft_window_isSet){
|
||||||
|
obj->insert("fftWindow", QJsonValue(fft_window));
|
||||||
|
}
|
||||||
if(m_coding_scheme_isSet){
|
if(m_coding_scheme_isSet){
|
||||||
obj->insert("codingScheme", QJsonValue(coding_scheme));
|
obj->insert("codingScheme", QJsonValue(coding_scheme));
|
||||||
}
|
}
|
||||||
@ -369,6 +379,16 @@ SWGChirpChatDemodSettings::setDeBits(qint32 de_bits) {
|
|||||||
this->m_de_bits_isSet = true;
|
this->m_de_bits_isSet = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qint32
|
||||||
|
SWGChirpChatDemodSettings::getFftWindow() {
|
||||||
|
return fft_window;
|
||||||
|
}
|
||||||
|
void
|
||||||
|
SWGChirpChatDemodSettings::setFftWindow(qint32 fft_window) {
|
||||||
|
this->fft_window = fft_window;
|
||||||
|
this->m_fft_window_isSet = true;
|
||||||
|
}
|
||||||
|
|
||||||
qint32
|
qint32
|
||||||
SWGChirpChatDemodSettings::getCodingScheme() {
|
SWGChirpChatDemodSettings::getCodingScheme() {
|
||||||
return coding_scheme;
|
return coding_scheme;
|
||||||
@ -596,6 +616,9 @@ SWGChirpChatDemodSettings::isSet(){
|
|||||||
if(m_de_bits_isSet){
|
if(m_de_bits_isSet){
|
||||||
isObjectUpdated = true; break;
|
isObjectUpdated = true; break;
|
||||||
}
|
}
|
||||||
|
if(m_fft_window_isSet){
|
||||||
|
isObjectUpdated = true; break;
|
||||||
|
}
|
||||||
if(m_coding_scheme_isSet){
|
if(m_coding_scheme_isSet){
|
||||||
isObjectUpdated = true; break;
|
isObjectUpdated = true; break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -54,6 +54,9 @@ public:
|
|||||||
qint32 getDeBits();
|
qint32 getDeBits();
|
||||||
void setDeBits(qint32 de_bits);
|
void setDeBits(qint32 de_bits);
|
||||||
|
|
||||||
|
qint32 getFftWindow();
|
||||||
|
void setFftWindow(qint32 fft_window);
|
||||||
|
|
||||||
qint32 getCodingScheme();
|
qint32 getCodingScheme();
|
||||||
void setCodingScheme(qint32 coding_scheme);
|
void setCodingScheme(qint32 coding_scheme);
|
||||||
|
|
||||||
@ -133,6 +136,9 @@ private:
|
|||||||
qint32 de_bits;
|
qint32 de_bits;
|
||||||
bool m_de_bits_isSet;
|
bool m_de_bits_isSet;
|
||||||
|
|
||||||
|
qint32 fft_window;
|
||||||
|
bool m_fft_window_isSet;
|
||||||
|
|
||||||
qint32 coding_scheme;
|
qint32 coding_scheme;
|
||||||
bool m_coding_scheme_isSet;
|
bool m_coding_scheme_isSet;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user