#pragma once #include #include #include #include #include #include #include #include #include #include #include class SigPath { public: SigPath(); void init(std::string vfoName, uint64_t sampleRate, int blockSize, dsp::stream* input); void start(); void setSampleRate(float sampleRate); void setVFOFrequency(uint64_t frequency); void updateBlockSize(); void setDemodulator(int demod, float bandWidth); void setDeemphasis(int deemph); void setBandwidth(float bandWidth); enum { DEMOD_FM, DEMOD_NFM, DEMOD_AM, DEMOD_USB, DEMOD_LSB, DEMOD_DSB, _DEMOD_COUNT }; enum { DEEMP_50US, DEEMP_75US, DEEMP_NONE, _DEEMP_COUNT }; dsp::FMDeemphasis deemp; private: static int sampleRateChangeHandler(void* ctx, float sampleRate); dsp::stream input; // Demodulators dsp::FMDemodulator demod; dsp::AMDemodulator amDemod; dsp::SSBDemod ssbDemod; // Audio output dsp::FloatFIRResampler audioResamp; std::string vfoName; float sampleRate; float bandwidth; float outputSampleRate; int blockSize; int _demod; int _deemp; float audioBw; };