19 #ifndef SDRBASE_DSP_DSPDEVICEMIMOENGINE_H_ 20 #define SDRBASE_DSP_DSPDEVICEMIMOENGINE_H_ 54 m_threadedSampleSource(threadedSampleSource),
58 unsigned int getIndex()
const {
return m_index; }
96 m_threadedSampleSource(threadedSampleSource),
111 m_threadedSampleSink(threadedSampleSink),
126 m_threadedSampleSink(threadedSampleSink),
141 m_sampleSink(sampleSink),
156 m_sampleSink(sampleSink),
207 m_dcOffsetCorrection(dcOffsetCorrection),
208 m_iqImbalanceCorrection(iqImbalanceCorrection),
224 m_sourceElseSink(sourceElseSink),
256 void setMIMOSequence(
int sequence);
259 void addSourceStream(
bool connect);
260 void removeLastSourceStream();
261 void addSinkStream(
bool connect);
262 void removeLastSinkStream();
274 void setSpectrumSinkInput(
bool sourceElseSink,
int index);
278 QString errorMessage();
279 QString deviceDescription();
281 void configureCorrections(
bool dcOffsetCorrection,
bool iqImbalanceCorrection,
int isource);
314 m_dcOffsetCorrection =
false;
315 m_iqImbalanceCorrection =
false;
364 void work(
int nbWriteSamples);
369 State gotoError(
const QString& errorMsg);
372 void iqCorrections(SampleVector::iterator begin, SampleVector::iterator end,
int isource,
bool imbalanceCorrection);
376 void workSampleSink(
unsigned int sinkIndex);
377 void handleSynchronousMessages();
378 void handleInputMessages();
379 void handleForwardToSpectrumSink(
int nbSamples);
382 #endif // SDRBASE_DSP_DSPDEVICEMIMOENGINE_H_
MovingAverageUtil< double, double, 128 > m_avgPhi
MovingAverageUtil< float, double, 128 > m_avgIQ
ThreadedBasebandSampleSource * m_threadedSampleSource
SyncMessenger m_syncMessenger
Used to process messages synchronously with the thread.
std::vector< ThreadedBasebandSampleSinks > m_threadedBasebandSampleSinks
channel sample sinks on their own thread (per input stream)
BasebandSampleSink * m_sampleSink
AddThreadedBasebandSampleSource(ThreadedBasebandSampleSource *threadedSampleSource, unsigned int index)
AddBasebandSampleSink(BasebandSampleSink *sampleSink, unsigned int index)
BasebandSampleSink * getSampleSink() const
DeviceSampleMIMO * getMIMO()
BasebandSampleSink * getSampleSink() const
unsigned int getIndex() const
BasebandSampleSink * getSampleSink() const
std::list< ThreadedBasebandSampleSink * > ThreadedBasebandSampleSinks
RemoveBasebandSampleSink(BasebandSampleSink *sampleSink, unsigned int index)
RemoveSpectrumSink(BasebandSampleSink *sampleSink)
bool m_spectrumInputSourceElseSink
Source else sink stream to be used as spectrum sink input.
engine is before initialization
MovingAverageUtil< double, double, 128 > m_avgAmp
BasebandSampleSink * m_sampleSink
BasebandSampleSink * m_spectrumSink
The spectrum sink.
bool m_iqImbalanceCorrection
std::vector< SourceCorrection > m_sourcesCorrections
DeviceSampleMIMO * m_sampleMIMO
std::list< BasebandSampleSink * > BasebandSampleSinks
ThreadedBasebandSampleSource * getThreadedSampleSource() const
unsigned int getIndex() const
MessageQueue * getInputMessageQueue()
ThreadedBasebandSampleSource * m_threadedSampleSource
ThreadedBasebandSampleSink * m_threadedSampleSink
ThreadedBasebandSampleSink * m_threadedSampleSink
unsigned int getIndex() const
QString m_deviceDescription
DeviceSampleMIMO * getSampleMIMO() const
std::list< ThreadedBasebandSampleSource * > ThreadedBasebandSampleSources
AddThreadedBasebandSampleSink(ThreadedBasebandSampleSink *threadedSampleSink, unsigned int index)
#define MESSAGE_CLASS_DECLARATION
BasebandSampleSink * m_sampleSink
std::vector< int > m_sampleSinkConnectionIndexes
MovingAverageUtil< int32_t, int64_t, 1024 > m_qBeta
bool m_dcOffsetCorrection
DeviceSampleMIMO * m_deviceSampleMIMO
ThreadedBasebandSampleSink * getThreadedSampleSink() const
MovingAverageUtil< float, double, 128 > m_avgII2
State state() const
Return DSP engine current state.
QString m_deviceDescription
SetSampleMIMO(DeviceSampleMIMO *sampleMIMO)
void setDeviceDescription(const QString &text)
std::vector< BasebandSampleSinks > m_basebandSampleSinks
ancillary sample sinks on main thread (per input stream)
RemoveThreadedBasebandSampleSource(ThreadedBasebandSampleSource *threadedSampleSource, unsigned int index)
const QString & getDeviceDescription() const
void setErrorMessage(const QString &text)
unsigned int getIndex() const
BasebandSampleSink * getSampleSink() const
unsigned int getIndex() const
MovingAverageUtil< int32_t, int64_t, 1024 > m_iBeta
unsigned int m_spectrumInputIndex
Index of the stream to be used as spectrum sink input.
ThreadedBasebandSampleSink * getThreadedSampleSink() const
ThreadedBasebandSampleSource * getThreadedSampleSource() const
MovingAverageUtil< float, double, 128 > m_avgQQ2
MovingAverageUtil< float, double, 128 > m_avgII
const QString & getErrorMessage() const
unsigned int getIndex() const
AddSourceStream(bool connect)
BasebandSampleSink * m_sampleSink
AddSpectrumSink(BasebandSampleSink *sampleSink)
std::vector< ThreadedBasebandSampleSources > m_threadedBasebandSampleSources
channel sample sources on their own threads (per output stream)
std::vector< int > m_sampleSourceConnectionIndexes
RemoveThreadedBasebandSampleSink(ThreadedBasebandSampleSink *threadedSampleSink, unsigned int index)
MessageQueue m_inputMessageQueue
AddSinkStream(bool connect)