Deep redesign: use references for the iterator parameters of the sample sinks feed method

pull/6/head
f4exb 2015-08-25 08:24:23 +02:00
rodzic fb2e601a03
commit 005eae774e
25 zmienionych plików z 59 dodań i 37 usunięć

Wyświetl plik

@ -38,7 +38,7 @@ public:
virtual void start();
virtual void stop();
virtual void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly);
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly);
virtual bool handleMessage(const Message& cmd);
protected:

Wyświetl plik

@ -28,7 +28,7 @@ public:
void configure(MessageQueue* msgQueue, const std::string& filename);
virtual void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly);
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly);
virtual void start();
virtual void stop();
virtual bool handleMessage(const Message& message);

Wyświetl plik

@ -35,7 +35,7 @@ public:
uint traceSize);
void setOneShot(bool oneShot);
virtual void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly);
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly);
virtual void start();
virtual void stop();
virtual bool handleMessage(const Message& message);

Wyświetl plik

@ -14,7 +14,7 @@ public:
SpectrumScopeComboVis(SpectrumVis* spectrumVis, ScopeVis* scopeVis);
virtual ~SpectrumScopeComboVis();
virtual void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly);
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly);
virtual void start();
virtual void stop();
virtual bool handleMessage(const Message& message);

Wyświetl plik

@ -39,8 +39,8 @@ public:
void configure(MessageQueue* msgQueue, int fftSize, int overlapPercent, FFTWindow::Function window);
virtual void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly);
void feedTriggered(SampleVector::const_iterator triggerPoint, SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly);
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly);
void feedTriggered(const SampleVector::const_iterator& triggerPoint, const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly);
virtual void start();
virtual void stop();
virtual bool handleMessage(const Message& message);

Wyświetl plik

@ -16,7 +16,7 @@ public:
virtual void start() = 0;
virtual void stop() = 0;
virtual void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly) = 0;
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly) = 0;
virtual bool handleMessage(const Message& cmd) = 0; //!< Processing of a message. Returns true if message has actually been processed
MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } //!< Get the queue for asynchronous inbound communication

Wyświetl plik

@ -63,7 +63,7 @@ void AMDemod::configure(MessageQueue* messageQueue, Real rfBandwidth, Real afBan
messageQueue->push(cmd);
}
void AMDemod::feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool firstOfBurst)
void AMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst)
{
Complex ci;

Wyświetl plik

@ -36,7 +36,7 @@ public:
void configure(MessageQueue* messageQueue, Real rfBandwidth, Real afBandwidth, Real volume, Real squelch);
virtual void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool po);
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po);
virtual void start();
virtual void stop();
virtual bool handleMessage(const Message& cmd);

Wyświetl plik

@ -60,7 +60,7 @@ void ChannelAnalyzer::configure(MessageQueue* messageQueue,
messageQueue->push(cmd);
}
void ChannelAnalyzer::feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly)
void ChannelAnalyzer::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly)
{
fftfilt::cmplx *sideband, sum;
int n_out;

Wyświetl plik

@ -43,7 +43,7 @@ public:
return m_sampleRate;
}
virtual void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly);
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly);
virtual void start();
virtual void stop();
virtual bool handleMessage(const Message& cmd);

Wyświetl plik

@ -236,7 +236,7 @@ int LoRaDemod::detect(Complex c, Complex a)
return m_result;
}
void LoRaDemod::feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool pO)
void LoRaDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool pO)
{
int newangle;
Complex ci;

Wyświetl plik

@ -39,7 +39,7 @@ public:
void configure(MessageQueue* messageQueue, Real Bandwidth);
virtual void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool pO);
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool pO);
virtual void start();
virtual void stop();
virtual bool handleMessage(const Message& cmd);

Wyświetl plik

@ -106,7 +106,7 @@ Real angleDist(Real a, Real b)
return dist;
}
void NFMDemod::feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool firstOfBurst)
void NFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst)
{
Complex ci;

Wyświetl plik

@ -41,7 +41,7 @@ public:
void configure(MessageQueue* messageQueue, Real rfBandwidth, Real afBandwidth, Real volume, Real squelch);
virtual void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool po);
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po);
virtual void start();
virtual void stop();
virtual bool handleMessage(const Message& cmd);

Wyświetl plik

@ -71,7 +71,7 @@ void SSBDemod::configure(MessageQueue* messageQueue, Real Bandwidth, Real LowCut
messageQueue->push(cmd);
}
void SSBDemod::feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly)
void SSBDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly)
{
Complex ci;
fftfilt::cmplx *sideband, sum;

Wyświetl plik

@ -36,7 +36,7 @@ public:
void configure(MessageQueue* messageQueue, Real Bandwidth, Real LowCutoff, Real volume, int spanLog2);
virtual void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly);
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly);
virtual void start();
virtual void stop();
virtual bool handleMessage(const Message& cmd);

Wyświetl plik

@ -71,7 +71,7 @@ void TCPSrc::setSpectrum(MessageQueue* messageQueue, bool enabled)
messageQueue->push(cmd);
}
void TCPSrc::feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly)
void TCPSrc::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly)
{
Complex ci;
fftfilt::cmplx* sideband;

Wyświetl plik

@ -32,7 +32,7 @@ public:
void configure(MessageQueue* messageQueue, SampleFormat sampleFormat, Real outputSampleRate, Real rfBandwidth, int tcpPort, int boost);
void setSpectrum(MessageQueue* messageQueue, bool enabled);
virtual void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly);
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly);
virtual void start();
virtual void stop();
virtual bool handleMessage(const Message& cmd);

Wyświetl plik

@ -69,7 +69,7 @@ void WFMDemod::configure(MessageQueue* messageQueue, Real rfBandwidth, Real afBa
messageQueue->push(cmd);
}
void WFMDemod::feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool firstOfBurst)
void WFMDemod::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool firstOfBurst)
{
Complex ci;
fftfilt::cmplx *rf;

Wyświetl plik

@ -38,7 +38,7 @@ public:
void configure(MessageQueue* messageQueue, Real rfBandwidth, Real afBandwidth, Real volume, Real squelch);
virtual void feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool po);
virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool po);
virtual void start();
virtual void stop();
virtual bool handleMessage(const Message& cmd);

Wyświetl plik

@ -30,7 +30,7 @@ void Channelizer::configure(MessageQueue* messageQueue, int sampleRate, int cent
messageQueue->push(cmd);
}
void Channelizer::feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly)
void Channelizer::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly)
{
if(m_sampleSink == 0) {
m_sampleBuffer.clear();

Wyświetl plik

@ -30,7 +30,7 @@ void FileSink::configure(MessageQueue* msgQueue, const std::string& filename)
msgQueue->push(cmd);
}
void FileSink::feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly)
void FileSink::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly)
{
// if no recording is active, send the samples to /dev/null
if(!m_recordOn)

Wyświetl plik

@ -55,8 +55,10 @@ void ScopeVis::configure(MessageQueue* msgQueue,
msgQueue->push(cmd);
}
void ScopeVis::feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly)
void ScopeVis::feed(const SampleVector::const_iterator& cbegin, const SampleVector::const_iterator& end, bool positiveOnly)
{
SampleVector::const_iterator begin(cbegin);
if (m_triggerChannel == TriggerFreeRun) {
m_triggerPoint = begin;
}

Wyświetl plik

@ -13,7 +13,7 @@ SpectrumScopeComboVis::~SpectrumScopeComboVis()
{
}
void SpectrumScopeComboVis::feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly)
void SpectrumScopeComboVis::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly)
{
m_scopeVis->feed(begin, end, false);
SampleVector::const_iterator triggerPoint = m_scopeVis->getTriggerPoint();

Wyświetl plik

@ -38,7 +38,7 @@ void SpectrumVis::configure(MessageQueue* msgQueue, int fftSize, int overlapPerc
msgQueue->push(cmd);
}
void SpectrumVis::feedTriggered(SampleVector::const_iterator triggerPoint, SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly)
void SpectrumVis::feedTriggered(const SampleVector::const_iterator& triggerPoint, const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly)
{
feed(triggerPoint, end, positiveOnly); // normal feed from trigger point
/*
@ -59,21 +59,31 @@ void SpectrumVis::feedTriggered(SampleVector::const_iterator triggerPoint, Sampl
}*/
}
void SpectrumVis::feed(SampleVector::const_iterator begin, SampleVector::const_iterator end, bool positiveOnly)
void SpectrumVis::feed(const SampleVector::const_iterator& cbegin, const SampleVector::const_iterator& end, bool positiveOnly)
{
// if no visualisation is set, send the samples to /dev/null
if(m_glSpectrum == NULL)
return;
while(begin < end) {
if(m_glSpectrum == 0)
{
return;
}
SampleVector::const_iterator begin(cbegin);
while (begin < end)
{
std::size_t todo = end - begin;
std::size_t samplesNeeded = m_refillSize - m_fftBufferFill;
if(todo >= samplesNeeded) {
if (todo >= samplesNeeded)
{
// fill up the buffer
std::vector<Complex>::iterator it = m_fftBuffer.begin() + m_fftBufferFill;
for(std::size_t i = 0; i < samplesNeeded; ++i, ++begin)
for (std::size_t i = 0; i < samplesNeeded; ++i, ++begin)
{
*it++ = Complex(begin->real() / 32768.0, begin->imag() / 32768.0);
}
// apply fft window (and copy from m_fftBuffer to m_fftIn)
m_window.apply(&m_fftBuffer[0], m_fft->in());
@ -89,16 +99,21 @@ void SpectrumVis::feed(SampleVector::const_iterator begin, SampleVector::const_i
Real v;
std::size_t halfSize = m_fftSize / 2;
if ( positiveOnly ) {
for(std::size_t i = 0; i < halfSize; i++) {
if ( positiveOnly )
{
for (std::size_t i = 0; i < halfSize; i++)
{
c = fftOut[i];
v = c.real() * c.real() + c.imag() * c.imag();
v = mult * log2f(v) + ofs;
m_logPowerSpectrum[i * 2] = v;
m_logPowerSpectrum[i * 2 + 1] = v;
}
} else {
for(std::size_t i = 0; i < halfSize; i++) {
}
else
{
for (std::size_t i = 0; i < halfSize; i++)
{
c = fftOut[i + halfSize];
v = c.real() * c.real() + c.imag() * c.imag();
v = mult * log2f(v) + ofs;
@ -120,10 +135,15 @@ void SpectrumVis::feed(SampleVector::const_iterator begin, SampleVector::const_i
// start over
m_fftBufferFill = m_overlapSize;
m_needMoreSamples = false;
} else {
}
else
{
// not enough samples for FFT - just fill in new data and return
for(std::vector<Complex>::iterator it = m_fftBuffer.begin() + m_fftBufferFill; begin < end; ++begin)
{
*it++ = Complex(begin->real() / 32768.0, begin->imag() / 32768.0);
}
m_fftBufferFill += todo;
m_needMoreSamples = true;
}