CubicSDR/src/modules/modem/analog/ModemCW.h

55 lines
1.2 KiB
C
Raw Normal View History

2021-01-15 10:12:54 -05:00
// Copyright (c) Charles J. Cliffe
// SPDX-License-Identifier: GPL-2.0+
#pragma once
2021-03-19 22:42:42 -04:00
2021-01-15 10:12:54 -05:00
#include "Modem.h"
#include "ModemAnalog.h"
2021-03-19 22:42:42 -04:00
class ModemKitCW : public ModemKitAnalog {
2021-01-15 10:12:54 -05:00
public:
2021-03-19 22:42:42 -04:00
ModemKitCW() : ModemKitAnalog() {
};
2021-04-22 00:34:45 -04:00
msresamp_cccf mInputResampler{};
2021-01-15 10:12:54 -05:00
};
class ModemCW : public ModemAnalog {
public:
ModemCW();
2021-03-19 22:42:42 -04:00
2021-04-04 22:16:44 -04:00
~ModemCW() override;
2021-01-15 10:12:54 -05:00
2021-04-04 22:16:44 -04:00
std::string getName() override;
2021-01-15 10:12:54 -05:00
static ModemBase *factory();
2021-04-04 22:16:44 -04:00
int checkSampleRate(long long srate, int arate) override;
2021-01-15 10:12:54 -05:00
2021-04-04 22:16:44 -04:00
ModemKit *buildKit(long long srate, int arate) override;
2021-01-15 10:12:54 -05:00
2021-04-04 22:16:44 -04:00
void disposeKit(ModemKit *kit) override;
2021-01-15 10:12:54 -05:00
2021-04-04 22:16:44 -04:00
void initOutputBuffers(ModemKitAnalog *akit, ModemIQData *input) override;
2021-01-15 10:12:54 -05:00
2021-04-04 22:16:44 -04:00
int getDefaultSampleRate() override;
2021-01-15 10:12:54 -05:00
2021-04-04 22:16:44 -04:00
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) override;
2021-01-15 10:12:54 -05:00
2021-04-04 22:16:44 -04:00
ModemArgInfoList getSettings() override;
2021-01-15 10:12:54 -05:00
2021-04-04 22:16:44 -04:00
void writeSetting(std::string setting, std::string value) override;
2021-01-15 10:12:54 -05:00
2021-04-04 22:16:44 -04:00
std::string readSetting(std::string setting) override;
2021-01-15 10:12:54 -05:00
// No resampling required.
2021-04-04 22:16:44 -04:00
std::vector<float> *getResampledOutputData() override { return &demodOutputData; }
2021-03-19 22:42:42 -04:00
2021-01-15 10:12:54 -05:00
private:
2021-03-19 22:42:42 -04:00
float mBeepFrequency;
float mGain;
bool mAutoGain;
nco_crcf mLO;
firhilbf mToReal;
std::vector<liquid_float_complex> mInput;
2021-01-15 10:12:54 -05:00
};