1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-11-10 16:20:24 -05:00

LoRa demod: cleanup unused sliding FFT

This commit is contained in:
f4exb 2020-02-16 11:33:21 +01:00
parent 733edb2cb2
commit 09a980de70
2 changed files with 0 additions and 55 deletions

View File

@ -34,7 +34,6 @@ LoRaDemodSink::LoRaDemodSink() :
m_spectrumBuffer(nullptr),
m_downChirps(nullptr),
m_upChirps(nullptr),
m_fftBuffer(nullptr),
m_spectrumLine(nullptr)
{
m_demodActive = false;
@ -74,9 +73,6 @@ void LoRaDemodSink::initSF(unsigned int sf, unsigned int deBits)
if (m_upChirps) {
delete[] m_upChirps;
}
if (m_fftBuffer) {
delete[] m_fftBuffer;
}
if (m_spectrumBuffer) {
delete[] m_spectrumBuffer;
}
@ -95,7 +91,6 @@ void LoRaDemodSink::initSF(unsigned int sf, unsigned int deBits)
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_upChirps = new Complex[2*m_nbSymbols];
m_fftBuffer = new Complex[m_fftInterpolation*m_fftLength];
m_spectrumBuffer = new Complex[m_nbSymbols];
m_spectrumLine = new Complex[m_nbSymbols];
std::fill(m_spectrumLine, m_spectrumLine+m_nbSymbols, Complex(std::polar(1e-6*SDR_RX_SCALED, 0.0)));
@ -228,8 +223,6 @@ void LoRaDemodSink::processSample(const Complex& ci)
if (m_fftCounter == m_fftLength)
{
std::copy(m_fftSFD->in(), m_fftSFD->in() + m_fftLength, m_fftBuffer); // save for later
m_fftWindow.apply(m_fft->in());
std::fill(m_fft->in()+m_fftLength, m_fft->in()+m_fftInterpolation*m_fftLength, Complex{0.0, 0.0});
m_fft->transform();
@ -292,7 +285,6 @@ void LoRaDemodSink::processSample(const Complex& ci)
m_sfdSkipCounter = 0;
m_fftCounter = m_fftLength - m_sfdSkip + zadj;
m_chirp += zadj;
//std::copy(m_fftBuffer+m_sfdSkip, m_fftBuffer+(m_fftLength-m_sfdSkip), m_fftBuffer); // prepare sliding fft
m_state = LoRaStateSkipSFD; //LoRaStateSlideSFD;
}
}
@ -334,51 +326,6 @@ void LoRaDemodSink::processSample(const Complex& ci)
}
}
}
else if (m_state == LoRaStateSlideSFD) // perform sliding FFTs over the rest of the SFD period
{
m_fftBuffer[m_fftCounter] = ci * m_upChirps[m_chirp]; // de-chirp the down ramp
m_fftCounter++;
if (m_fftCounter == m_fftLength)
{
std::copy(m_fftBuffer, m_fftBuffer + m_fftLength, m_fftSFD->in());
std::fill(m_fftSFD->in()+m_fftLength, m_fftSFD->in()+m_fftInterpolation*m_fftLength, Complex{0.0, 0.0});
m_fftSFD->transform();
std::copy(m_fftBuffer+m_sfdSkip, m_fftBuffer+(m_fftLength-m_sfdSkip), m_fftBuffer); // prepare next sliding fft
m_fftCounter = m_fftLength - m_sfdSkip;
m_sfdSkipCounter++;
double magsqSFD;
unsigned int imaxSFD = argmax(
m_fftSFD->out(),
m_fftInterpolation,
m_fftLength,
magsqSFD,
m_spectrumBuffer,
m_fftInterpolation
) / m_fftInterpolation;
if (m_spectrumSink) {
m_spectrumSink->feed(m_spectrumBuffer, m_nbSymbols);
}
qDebug("LoRaDemodSink::processSample: SFD slide %u %4u|%11.6f", m_sfdSkipCounter, imaxSFD, magsqSFD);
if (m_sfdSkipCounter == m_sfdFourths) // 1.25 SFD chips length
{
qDebug("LoRaDemodSink::processSample: SFD done");
m_chirp = m_chirp0;
m_fftCounter = 0;
m_chirpCount = 0;
int correction = 0;
m_magsqMax = 0.0;
m_decodeMsg = LoRaDemodMsg::MsgDecodeSymbols::create();
m_decodeMsg->setSyncWord(m_syncWord);
m_state = LoRaStateReadPayload; //LoRaStateReadPayload;
}
}
}
else if (m_state == LoRaStateReadPayload)
{
m_fft->in()[m_fftCounter] = ci * m_downChirps[m_chirp]; // de-chirp the up ramp

View File

@ -58,7 +58,6 @@ private:
LoRaStatePreambleResyc, //!< Synchronize with what is left of preamble chirp
LoRaStatePreamble, //!< Preamble is found and look for SFD start
LoRaStateSkipSFD, //!< Skip SFD
LoRaStateSlideSFD, //!< Sliding FFTs while going through SFD (not the skip option)
LoRaStateReadPayload,
LoRaStateTest
};
@ -84,7 +83,6 @@ private:
FFTWindow m_fftWindow;
Complex *m_downChirps;
Complex *m_upChirps;
Complex *m_fftBuffer;
Complex *m_spectrumLine;
unsigned int m_fftCounter;
unsigned int m_argMaxHistory[m_requiredPreambleChirps];