#pragma once #include #include #include #include #include #include #include #include #include #include #include class SignalPath { public: SignalPath(); void init(uint64_t sampleRate, int fftRate, int fftSize, dsp::stream* input, dsp::complex_t* fftBuffer, void fftHandler(dsp::complex_t*)); void start(); void setSampleRate(float sampleRate); void setDCBiasCorrection(bool enabled); void setFFTRate(float rate); dsp::VFO* addVFO(std::string name, float outSampleRate, float bandwidth, float offset); void removeVFO(std::string name); void setInput(dsp::stream* input); private: struct VFO_t { dsp::stream* inputStream; dsp::VFO* vfo; }; dsp::DCBiasRemover dcBiasRemover; dsp::Splitter split; // FFT dsp::BlockDecimator fftBlockDec; dsp::HandlerSink fftHandlerSink; // VFO dsp::DynamicSplitter dynSplit; std::map vfos; float sampleRate; float fftRate; int fftSize; int inputBlockSize; };