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.
Classes | Signals | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
UpChannelizer Class Reference

#include <upchannelizer.h>

+ Inheritance diagram for UpChannelizer:
+ Collaboration diagram for UpChannelizer:

Classes

struct  FilterStage
 
class  MsgChannelizerNotification
 
class  MsgSetChannelizer
 

Signals

void outputSampleRateChanged ()
 

Public Member Functions

 UpChannelizer (BasebandSampleSource *sampleSink)
 
virtual ~UpChannelizer ()
 
void configure (MessageQueue *messageQueue, int sampleRate, int centerFrequency)
 
void set (MessageQueue *messageQueue, unsigned int log2Interp, unsigned int filterChainHash)
 
int getOutputSampleRate () const
 
virtual void start ()
 
virtual void stop ()
 
virtual void pull (Sample &sample)
 
virtual void pullAudio (int nbSamples)
 
virtual bool handleMessage (const Message &cmd)
 Processing of a message. Returns true if message has actually been processed. More...
 
- Public Member Functions inherited from BasebandSampleSource
 BasebandSampleSource ()
 
virtual ~BasebandSampleSource ()
 
void feed (SampleSourceFifo *sampleFifo, int nbSamples)
 
SampleSourceFifogetSampleSourceFifo ()
 
MessageQueuegetInputMessageQueue ()
 Get the queue for asynchronous inbound communication. More...
 
virtual void setMessageQueueToGUI (MessageQueue *queue)
 
MessageQueuegetMessageQueueToGUI ()
 
void setDeviceSampleSourceFifo (SampleSourceFifo *deviceSampleFifo)
 

Protected Types

typedef std::vector< FilterStage * > FilterStages
 

Protected Member Functions

void applyConfiguration ()
 
void applySetting (unsigned int log2Decim, unsigned int filterChainHash)
 
bool signalContainsChannel (Real sigStart, Real sigEnd, Real chanStart, Real chanEnd) const
 
Real createFilterChain (Real sigStart, Real sigEnd, Real chanStart, Real chanEnd)
 
double setFilterChain (const std::vector< unsigned int > &stageIndexes)
 returns offset in ratio of sample rate More...
 
void freeFilterChain ()
 
- Protected Member Functions inherited from BasebandSampleSource
void handleWriteToFifo (SampleSourceFifo *sampleFifo, int nbSamples)
 

Protected Attributes

FilterStages m_filterStages
 
bool m_filterChainSetMode
 
std::vector< Samplem_stageSamples
 
BasebandSampleSourcem_sampleSource
 Modulator. More...
 
int m_outputSampleRate
 
int m_requestedInputSampleRate
 
int m_requestedCenterFrequency
 
int m_currentInputSampleRate
 
int m_currentCenterFrequency
 
SampleVector m_sampleBuffer
 
Sample m_sampleIn
 
QMutex m_mutex
 
- Protected Attributes inherited from BasebandSampleSource
MessageQueue m_inputMessageQueue
 Queue for asynchronous inbound communication. More...
 
MessageQueuem_guiMessageQueue
 Input message queue to the GUI. More...
 
SampleSourceFifo m_sampleFifo
 Internal FIFO for multi-channel processing. More...
 
SampleSourceFifom_deviceSampleFifo
 Reference to the device FIFO for single channel processing. More...
 

Additional Inherited Members

- Protected Slots inherited from BasebandSampleSource
void handleInputMessages ()
 
void handleWriteToFifo (int nbSamples)
 
void handleWriteToDeviceFifo (int nbSamples)
 

Detailed Description

Definition at line 37 of file upchannelizer.h.

Member Typedef Documentation

◆ FilterStages

typedef std::vector<FilterStage*> UpChannelizer::FilterStages
protected

Definition at line 123 of file upchannelizer.h.

Constructor & Destructor Documentation

◆ UpChannelizer()

UpChannelizer::UpChannelizer ( BasebandSampleSource sampleSink)

Definition at line 31 of file upchannelizer.cpp.

31  :
32  m_filterChainSetMode(false),
33  m_sampleSource(sampleSource),
39 {
40  QString name = "UpChannelizer(" + m_sampleSource->objectName() + ")";
41  setObjectName(name);
42 }
int m_requestedInputSampleRate
int m_currentCenterFrequency
BasebandSampleSource * m_sampleSource
Modulator.
bool m_filterChainSetMode
int m_requestedCenterFrequency
int m_currentInputSampleRate

◆ ~UpChannelizer()

UpChannelizer::~UpChannelizer ( )
virtual

Definition at line 44 of file upchannelizer.cpp.

References freeFilterChain().

45 {
47 }
void freeFilterChain()
+ Here is the call graph for this function:

Member Function Documentation

◆ applyConfiguration()

void UpChannelizer::applyConfiguration ( )
protected

Definition at line 194 of file upchannelizer.cpp.

References UpChannelizer::MsgChannelizerNotification::create(), createFilterChain(), freeFilterChain(), BasebandSampleSource::getInputMessageQueue(), m_currentCenterFrequency, m_currentInputSampleRate, m_filterChainSetMode, m_filterStages, m_mutex, m_outputSampleRate, m_requestedCenterFrequency, m_requestedInputSampleRate, m_sampleSource, and MessageQueue::push().

Referenced by handleMessage().

195 {
196  m_filterChainSetMode = false;
197 
198  if (m_outputSampleRate == 0)
199  {
200  qDebug() << "UpChannelizer::applyConfiguration: aborting (out=0):"
201  << " out =" << m_outputSampleRate
202  << ", req =" << m_requestedInputSampleRate
203  << ", in =" << m_currentInputSampleRate
204  << ", fc =" << m_currentCenterFrequency;
205  return;
206  }
207 
208 
209  m_mutex.lock();
210 
211  freeFilterChain();
212 
216 
217  m_mutex.unlock();
218 
220 
221  qDebug() << "UpChannelizer::applyConfiguration:"
222  << " out=" << m_outputSampleRate
223  << ", req=" << m_requestedInputSampleRate
224  << ", in=" << m_currentInputSampleRate
225  << ", fc=" << m_currentCenterFrequency;
226 
227  if (m_sampleSource != 0)
228  {
229  MsgChannelizerNotification *notif = MsgChannelizerNotification::create(m_outputSampleRate, m_currentInputSampleRate, m_currentCenterFrequency);
231  }
232 }
FilterStages m_filterStages
void push(Message *message, bool emitSignal=true)
Push message onto queue.
int m_requestedInputSampleRate
int m_currentCenterFrequency
BasebandSampleSource * m_sampleSource
Modulator.
MessageQueue * getInputMessageQueue()
Get the queue for asynchronous inbound communication.
Real createFilterChain(Real sigStart, Real sigEnd, Real chanStart, Real chanEnd)
static MsgChannelizerNotification * create(int basebandSampleRate, int samplerate, qint64 frequencyOffset)
Definition: upchannelizer.h:55
void freeFilterChain()
bool m_filterChainSetMode
int m_requestedCenterFrequency
int m_currentInputSampleRate
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ applySetting()

void UpChannelizer::applySetting ( unsigned int  log2Decim,
unsigned int  filterChainHash 
)
protected

Definition at line 234 of file upchannelizer.cpp.

References HBFilterChainConverter::convertToIndexes(), UpChannelizer::MsgChannelizerNotification::create(), UpChannelizer::FilterStage::FilterStage(), freeFilterChain(), BasebandSampleSource::getInputMessageQueue(), m_currentCenterFrequency, m_currentInputSampleRate, m_filterChainSetMode, m_filterStages, m_mutex, m_outputSampleRate, m_requestedCenterFrequency, m_requestedInputSampleRate, m_sampleSource, MessageQueue::push(), and setFilterChain().

Referenced by handleMessage().

235 {
236  m_filterChainSetMode = true;
237  std::vector<unsigned int> stageIndexes;
238  m_currentCenterFrequency = m_outputSampleRate * HBFilterChainConverter::convertToIndexes(log2Interp, filterChainHash, stageIndexes);
240 
241  m_mutex.lock();
242  freeFilterChain();
244  m_mutex.unlock();
245 
248 
249  qDebug() << "UpChannelizer::applySetting in=" << m_outputSampleRate
250  << ", out=" << m_currentInputSampleRate
251  << ", fc=" << m_currentCenterFrequency;
252 
253  if (m_sampleSource != 0)
254  {
255  MsgChannelizerNotification *notif = MsgChannelizerNotification::create(m_outputSampleRate, m_currentInputSampleRate, m_currentCenterFrequency);
257  }
258 }
FilterStages m_filterStages
void push(Message *message, bool emitSignal=true)
Push message onto queue.
double setFilterChain(const std::vector< unsigned int > &stageIndexes)
returns offset in ratio of sample rate
int m_requestedInputSampleRate
int m_currentCenterFrequency
BasebandSampleSource * m_sampleSource
Modulator.
static double convertToIndexes(unsigned int log2, unsigned int chainHash, std::vector< unsigned int > &chainIndexes)
MessageQueue * getInputMessageQueue()
Get the queue for asynchronous inbound communication.
static MsgChannelizerNotification * create(int basebandSampleRate, int samplerate, qint64 frequencyOffset)
Definition: upchannelizer.h:55
void freeFilterChain()
bool m_filterChainSetMode
int m_requestedCenterFrequency
int m_currentInputSampleRate
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ configure()

void UpChannelizer::configure ( MessageQueue messageQueue,
int  sampleRate,
int  centerFrequency 
)

Definition at line 49 of file upchannelizer.cpp.

References MessageQueue::push().

Referenced by UDPSource::handleMessage(), AMMod::handleMessage(), WFMMod::handleMessage(), NFMMod::handleMessage(), SSBMod::handleMessage(), FreeDVMod::handleMessage(), and ATVMod::handleMessage().

50 {
51  Message* cmd = new DSPConfigureChannelizer(sampleRate, centerFrequency);
52  messageQueue->push(cmd);
53 }
void push(Message *message, bool emitSignal=true)
Push message onto queue.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createFilterChain()

Real UpChannelizer::createFilterChain ( Real  sigStart,
Real  sigEnd,
Real  chanStart,
Real  chanEnd 
)
protected

Definition at line 315 of file upchannelizer.cpp.

References UpChannelizer::FilterStage::FilterStage(), m_filterStages, m_stageSamples, UpChannelizer::FilterStage::ModeCenter, UpChannelizer::FilterStage::ModeLowerHalf, UpChannelizer::FilterStage::ModeUpperHalf, and signalContainsChannel().

Referenced by applyConfiguration().

316 {
317  Real sigBw = sigEnd - sigStart;
318  Real rot = sigBw / 4;
319  Sample s;
320 
321  qDebug() << "UpChannelizer::createFilterChain: start:"
322  << " sig: [" << sigStart << ":" << sigEnd << "]"
323  << " BW: " << sigBw
324  << " chan: [" << chanStart << ":" << chanEnd << "]"
325  << " rot: " << rot;
326 
327  // check if it fits into the left half
328  if(signalContainsChannel(sigStart, sigStart + sigBw / 2.0, chanStart, chanEnd))
329  {
330  qDebug() << "UpChannelizer::createFilterChain: take left half (rotate by +1/4 and decimate by 2):"
331  << " [" << m_filterStages.size() << "]"
332  << " sig: [" << sigStart << ":" << sigStart + sigBw / 2.0 << "]";
333  m_filterStages.push_back(new FilterStage(FilterStage::ModeLowerHalf));
334  m_stageSamples.push_back(s);
335  return createFilterChain(sigStart, sigStart + sigBw / 2.0, chanStart, chanEnd);
336  }
337 
338  // check if it fits into the right half
339  if(signalContainsChannel(sigEnd - sigBw / 2.0f, sigEnd, chanStart, chanEnd))
340  {
341  qDebug() << "UpChannelizer::createFilterChain: take right half (rotate by -1/4 and decimate by 2):"
342  << " [" << m_filterStages.size() << "]"
343  << " sig: [" << sigEnd - sigBw / 2.0f << ":" << sigEnd << "]";
344  m_filterStages.push_back(new FilterStage(FilterStage::ModeUpperHalf));
345  m_stageSamples.push_back(s);
346  return createFilterChain(sigEnd - sigBw / 2.0f, sigEnd, chanStart, chanEnd);
347  }
348 
349  // check if it fits into the center
350  // Was: if(signalContainsChannel(sigStart + rot + safetyMargin, sigStart + rot + sigBw / 2.0f - safetyMargin, chanStart, chanEnd)) {
351  if(signalContainsChannel(sigStart + rot, sigEnd - rot, chanStart, chanEnd))
352  {
353  qDebug() << "UpChannelizer::createFilterChain: take center half (decimate by 2):"
354  << " [" << m_filterStages.size() << "]"
355  << " sig: [" << sigStart + rot << ":" << sigEnd - rot << "]";
356  m_filterStages.push_back(new FilterStage(FilterStage::ModeCenter));
357  m_stageSamples.push_back(s);
358  // Was: return createFilterChain(sigStart + rot, sigStart + sigBw / 2.0f + rot, chanStart, chanEnd);
359  return createFilterChain(sigStart + rot, sigEnd - rot, chanStart, chanEnd);
360  }
361 
362  Real ofs = ((chanEnd - chanStart) / 2.0 + chanStart) - ((sigEnd - sigStart) / 2.0 + sigStart);
363 
364  qDebug() << "UpChannelizer::createFilterChain: complete:"
365  << " #stages: " << m_filterStages.size()
366  << " BW: " << sigBw
367  << " ofs: " << ofs;
368 
369  return ofs;
370 }
FilterStages m_filterStages
Real createFilterChain(Real sigStart, Real sigEnd, Real chanStart, Real chanEnd)
bool signalContainsChannel(Real sigStart, Real sigEnd, Real chanStart, Real chanEnd) const
float Real
Definition: dsptypes.h:42
std::vector< Sample > m_stageSamples
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ freeFilterChain()

void UpChannelizer::freeFilterChain ( )
protected

Definition at line 408 of file upchannelizer.cpp.

References m_filterStages, and m_stageSamples.

Referenced by applyConfiguration(), applySetting(), and ~UpChannelizer().

409 {
410  for(FilterStages::iterator it = m_filterStages.begin(); it != m_filterStages.end(); ++it)
411  delete *it;
412  m_filterStages.clear();
413  m_stageSamples.clear();
414 }
FilterStages m_filterStages
std::vector< Sample > m_stageSamples
+ Here is the caller graph for this function:

◆ getOutputSampleRate()

int UpChannelizer::getOutputSampleRate ( ) const
inline

Definition at line 89 of file upchannelizer.h.

Referenced by ATVMod::handleMessage().

89 { return m_outputSampleRate; }
+ Here is the caller graph for this function:

◆ handleMessage()

bool UpChannelizer::handleMessage ( const Message cmd)
virtual

Processing of a message. Returns true if message has actually been processed.

Implements BasebandSampleSource.

Definition at line 133 of file upchannelizer.cpp.

References applyConfiguration(), applySetting(), DSPConfigureChannelizer::getCenterFrequency(), UpChannelizer::MsgSetChannelizer::getFilterChainHash(), Message::getIdentifier(), BasebandSampleSource::getInputMessageQueue(), UpChannelizer::MsgSetChannelizer::getLog2Interp(), DSPSignalNotification::getSampleRate(), DSPConfigureChannelizer::getSampleRate(), m_filterChainSetMode, m_outputSampleRate, m_requestedCenterFrequency, m_requestedInputSampleRate, m_sampleSource, Message::match(), outputSampleRateChanged(), and MessageQueue::push().

134 {
135  qDebug() << "UpChannelizer::handleMessage: " << cmd.getIdentifier();
136 
137  // TODO: apply changes only if input sample rate or requested output sample rate change. Change of center frequency has no impact.
138 
140  {
143  qDebug() << "UpChannelizer::handleMessage: DSPSignalNotification: m_outputSampleRate: " << m_outputSampleRate;
144 
145  if (!m_filterChainSetMode) {
147  }
148 
149  if (m_sampleSource != 0)
150  {
151  DSPSignalNotification* rep = new DSPSignalNotification(notif); // make a copy
153  }
154 
156  return true;
157  }
158  else if (DSPConfigureChannelizer::match(cmd))
159  {
163 
164  qDebug() << "UpChannelizer::handleMessage: DSPConfigureChannelizer:"
165  << " m_requestedInputSampleRate: " << m_requestedInputSampleRate
166  << " m_requestedCenterFrequency: " << m_requestedCenterFrequency;
167 
169 
170  return true;
171  }
172  else if (MsgSetChannelizer::match(cmd))
173  {
174  MsgSetChannelizer& chan = (MsgSetChannelizer&) cmd;
175  qDebug() << "UpChannelizer::handleMessage: MsgSetChannelizer";
176  applySetting(chan.getLog2Interp(), chan.getFilterChainHash());
177 
178  return true;
179  }
180  else
181  {
182  return false;
183 // if (m_sampleSource != 0)
184 // {
185 // return m_sampleSource->handleMessage(cmd);
186 // }
187 // else
188 // {
189 // return false;
190 // }
191  }
192 }
void push(Message *message, bool emitSignal=true)
Push message onto queue.
int m_requestedInputSampleRate
int getSampleRate() const
Definition: dspcommands.h:367
BasebandSampleSource * m_sampleSource
Modulator.
MessageQueue * getInputMessageQueue()
Get the queue for asynchronous inbound communication.
void applySetting(unsigned int log2Decim, unsigned int filterChainHash)
void outputSampleRateChanged()
int getCenterFrequency() const
Definition: dspcommands.h:368
static bool match(const Message *message)
Definition: message.cpp:45
bool m_filterChainSetMode
int m_requestedCenterFrequency
int getSampleRate() const
Definition: dspcommands.h:328
virtual const char * getIdentifier() const
Definition: message.cpp:35
void applyConfiguration()
+ Here is the call graph for this function:

◆ outputSampleRateChanged

void UpChannelizer::outputSampleRateChanged ( )
signal

Referenced by handleMessage().

+ Here is the caller graph for this function:

◆ pull()

void UpChannelizer::pull ( Sample sample)
virtual

Implements BasebandSampleSource.

Definition at line 61 of file upchannelizer.cpp.

References m_filterStages, m_mutex, m_sampleBuffer, m_sampleIn, m_sampleSource, m_stageSamples, and BasebandSampleSource::pull().

62 {
63  if(m_sampleSource == 0) {
64  m_sampleBuffer.clear();
65  return;
66  }
67 
68  if (m_filterStages.size() == 0) // optimization when no downsampling is done anyway
69  {
70  m_sampleSource->pull(sample);
71  }
72  else
73  {
74  m_mutex.lock();
75 
76  FilterStages::iterator stage = m_filterStages.begin();
77  std::vector<Sample>::iterator stageSample = m_stageSamples.begin();
78 
79  for (; stage != m_filterStages.end(); ++stage, ++stageSample)
80  {
81  if(stage == m_filterStages.end() - 1)
82  {
83  if ((*stage)->work(&m_sampleIn, &(*stageSample)))
84  {
85  m_sampleSource->pull(m_sampleIn); // get new input sample
86  }
87  }
88  else
89  {
90  if (!(*stage)->work(&(*(stageSample+1)), &(*stageSample)))
91  {
92  break;
93  }
94  }
95  }
96 
97  sample = *m_stageSamples.begin();
98 
99 // for (; stage != m_filterStages.end(); ++stage)
100 // {
101 // // let's make it work for one stage only (96 kS/s < SR < 192 kS/s)
102 // if(stage == m_filterStages.end() - 1)
103 // {
104 // if ((*stage)->work(&m_sampleIn, &sample))
105 // {
106 // m_sampleSource->pull(m_sampleIn); // get new input sample
107 // }
108 // }
109 // }
110 
111  m_mutex.unlock();
112  }
113 }
FilterStages m_filterStages
BasebandSampleSource * m_sampleSource
Modulator.
virtual void pull(Sample &sample)=0
SampleVector m_sampleBuffer
std::vector< Sample > m_stageSamples
+ Here is the call graph for this function:

◆ pullAudio()

virtual void UpChannelizer::pullAudio ( int  nbSamples)
inlinevirtual

Reimplemented from BasebandSampleSource.

Definition at line 94 of file upchannelizer.h.

94 { if (m_sampleSource) m_sampleSource->pullAudio(nbSamples); }
virtual void pullAudio(int nbSamples)
BasebandSampleSource * m_sampleSource
Modulator.

◆ set()

void UpChannelizer::set ( MessageQueue messageQueue,
unsigned int  log2Interp,
unsigned int  filterChainHash 
)

Definition at line 55 of file upchannelizer.cpp.

References MessageQueue::push().

Referenced by LocalSource::handleMessage(), and FileSource::handleMessage().

56 {
57  Message* cmd = new MsgSetChannelizer(log2Interp, filterChainHash);
58  messageQueue->push(cmd);
59 }
void push(Message *message, bool emitSignal=true)
Push message onto queue.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setFilterChain()

double UpChannelizer::setFilterChain ( const std::vector< unsigned int > &  stageIndexes)
protected

returns offset in ratio of sample rate

Definition at line 372 of file upchannelizer.cpp.

References UpChannelizer::FilterStage::FilterStage(), m_filterStages, m_stageSamples, UpChannelizer::FilterStage::ModeCenter, UpChannelizer::FilterStage::ModeLowerHalf, and UpChannelizer::FilterStage::ModeUpperHalf.

Referenced by applySetting().

373 {
374  // filters are described from lower to upper level but the chain is constructed the other way round
375  std::vector<unsigned int>::const_reverse_iterator rit = stageIndexes.rbegin();
376  double ofs = 0.0, ofs_stage = 0.25;
377  Sample s;
378 
379  // Each index is a base 3 number with 0 = low, 1 = center, 2 = high
380  // Functions at upper level will convert a number to base 3 to describe the filter chain. Common converting
381  // algorithms will go from LSD to MSD. This explains the reverse order.
382  for (; rit != stageIndexes.rend(); ++rit)
383  {
384  if (*rit == 0)
385  {
386  m_filterStages.push_back(new FilterStage(FilterStage::ModeLowerHalf));
387  m_stageSamples.push_back(s);
388  ofs -= ofs_stage;
389  }
390  else if (*rit == 1)
391  {
392  m_filterStages.push_back(new FilterStage(FilterStage::ModeCenter));
393  m_stageSamples.push_back(s);
394  }
395  else if (*rit == 2)
396  {
397  m_filterStages.push_back(new FilterStage(FilterStage::ModeUpperHalf));
398  m_stageSamples.push_back(s);
399  ofs += ofs_stage;
400  }
401 
402  ofs_stage /= 2;
403  }
404 
405  return ofs;
406 }
FilterStages m_filterStages
std::vector< Sample > m_stageSamples
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ signalContainsChannel()

bool UpChannelizer::signalContainsChannel ( Real  sigStart,
Real  sigEnd,
Real  chanStart,
Real  chanEnd 
) const
protected

Definition at line 305 of file upchannelizer.cpp.

Referenced by createFilterChain().

306 {
307  //qDebug(" testing signal [%f, %f], channel [%f, %f]", sigStart, sigEnd, chanStart, chanEnd);
308  if(sigEnd <= sigStart)
309  return false;
310  if(chanEnd <= chanStart)
311  return false;
312  return (sigStart <= chanStart) && (sigEnd >= chanEnd);
313 }
+ Here is the caller graph for this function:

◆ start()

void UpChannelizer::start ( )
virtual

Implements BasebandSampleSource.

Definition at line 115 of file upchannelizer.cpp.

References m_outputSampleRate, m_requestedCenterFrequency, m_requestedInputSampleRate, m_sampleSource, and BasebandSampleSource::start().

116 {
117  if (m_sampleSource != 0)
118  {
119  qDebug() << "UpChannelizer::start: thread: " << thread()
120  << " m_outputSampleRate: " << m_outputSampleRate
121  << " m_requestedInputSampleRate: " << m_requestedInputSampleRate
122  << " m_requestedCenterFrequency: " << m_requestedCenterFrequency;
124  }
125 }
int m_requestedInputSampleRate
BasebandSampleSource * m_sampleSource
Modulator.
virtual void start()=0
int m_requestedCenterFrequency
+ Here is the call graph for this function:

◆ stop()

void UpChannelizer::stop ( )
virtual

Implements BasebandSampleSource.

Definition at line 127 of file upchannelizer.cpp.

References m_sampleSource, and BasebandSampleSource::stop().

128 {
129  if(m_sampleSource != 0)
130  m_sampleSource->stop();
131 }
BasebandSampleSource * m_sampleSource
Modulator.
virtual void stop()=0
+ Here is the call graph for this function:

Member Data Documentation

◆ m_currentCenterFrequency

int UpChannelizer::m_currentCenterFrequency
protected

Definition at line 132 of file upchannelizer.h.

Referenced by applyConfiguration(), and applySetting().

◆ m_currentInputSampleRate

int UpChannelizer::m_currentInputSampleRate
protected

Definition at line 131 of file upchannelizer.h.

Referenced by applyConfiguration(), and applySetting().

◆ m_filterChainSetMode

bool UpChannelizer::m_filterChainSetMode
protected

Definition at line 125 of file upchannelizer.h.

Referenced by applyConfiguration(), applySetting(), and handleMessage().

◆ m_filterStages

FilterStages UpChannelizer::m_filterStages
protected

◆ m_mutex

QMutex UpChannelizer::m_mutex
protected

Definition at line 135 of file upchannelizer.h.

Referenced by applyConfiguration(), applySetting(), and pull().

◆ m_outputSampleRate

int UpChannelizer::m_outputSampleRate
protected

Definition at line 128 of file upchannelizer.h.

Referenced by applyConfiguration(), applySetting(), handleMessage(), and start().

◆ m_requestedCenterFrequency

int UpChannelizer::m_requestedCenterFrequency
protected

Definition at line 130 of file upchannelizer.h.

Referenced by applyConfiguration(), applySetting(), handleMessage(), and start().

◆ m_requestedInputSampleRate

int UpChannelizer::m_requestedInputSampleRate
protected

Definition at line 129 of file upchannelizer.h.

Referenced by applyConfiguration(), applySetting(), handleMessage(), and start().

◆ m_sampleBuffer

SampleVector UpChannelizer::m_sampleBuffer
protected

Definition at line 133 of file upchannelizer.h.

Referenced by pull().

◆ m_sampleIn

Sample UpChannelizer::m_sampleIn
protected

Definition at line 134 of file upchannelizer.h.

Referenced by pull().

◆ m_sampleSource

BasebandSampleSource* UpChannelizer::m_sampleSource
protected

Modulator.

Definition at line 127 of file upchannelizer.h.

Referenced by applyConfiguration(), applySetting(), handleMessage(), pull(), start(), and stop().

◆ m_stageSamples

std::vector<Sample> UpChannelizer::m_stageSamples
protected

Definition at line 126 of file upchannelizer.h.

Referenced by createFilterChain(), freeFilterChain(), pull(), and setFilterChain().


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