CubicSDR/src/modules/modem/Modem.h

47 lines
1.0 KiB
C
Raw Normal View History

#pragma once
#include "liquid/liquid.h"
#include "IOThread.h"
#include "AudioThread.h"
class ModemKit {
public:
ModemKit() : sampleRate(0), audioSampleRate(0) {
}
long long sampleRate;
int audioSampleRate;
};
class ModemIQData: public ReferenceCounter {
public:
std::vector<liquid_float_complex> data;
long long sampleRate;
ModemIQData() : sampleRate(0) {
}
~ModemIQData() {
std::lock_guard < std::mutex > lock(m_mutex);
}
};
class Modem;
2015-11-17 00:21:17 -05:00
typedef std::map<std::string,Modem *> ModemFactoryList;
class Modem {
public:
2015-11-17 00:21:17 -05:00
static void addModemFactory(std::string modemName, Modem *factorySingle);
static ModemFactoryList getFactories();
virtual Modem *factory();
virtual ModemKit *buildKit(long long sampleRate, int audioSampleRate);
virtual void disposeKit(ModemKit *kit);
virtual void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
private:
static ModemFactoryList modemFactories;
};