From ea005014ae3cae20c687288871f6a7b865902df8 Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Wed, 18 Nov 2015 21:09:51 -0500 Subject: [PATCH] Refactor digital code, prepare for implementation --- CMakeLists.txt | 2 + src/demod/DemodulatorThread.cpp | 406 +----------------------- src/demod/DemodulatorThread.h | 94 +----- src/modules/modem/ModemAnalog.cpp | 2 +- src/modules/modem/ModemDigital.cpp | 70 ++++ src/modules/modem/ModemDigital.h | 38 +++ src/modules/modem/digital/ModemAPSK.cpp | 77 ++++- src/modules/modem/digital/ModemAPSK.h | 19 +- src/modules/modem/digital/ModemASK.cpp | 77 +++++ src/modules/modem/digital/ModemASK.h | 20 +- src/modules/modem/digital/ModemBPSK.cpp | 24 ++ src/modules/modem/digital/ModemBPSK.h | 13 +- src/modules/modem/digital/ModemDPSK.cpp | 78 +++++ src/modules/modem/digital/ModemDPSK.h | 21 +- src/modules/modem/digital/ModemOOK.cpp | 24 ++ src/modules/modem/digital/ModemOOK.h | 13 +- src/modules/modem/digital/ModemPSK.cpp | 79 +++++ src/modules/modem/digital/ModemPSK.h | 21 +- src/modules/modem/digital/ModemQAM.cpp | 76 +++++ src/modules/modem/digital/ModemQAM.h | 21 +- src/modules/modem/digital/ModemQPSK.cpp | 24 ++ src/modules/modem/digital/ModemQPSK.h | 12 +- src/modules/modem/digital/ModemSQAM.cpp | 66 ++++ src/modules/modem/digital/ModemSQAM.h | 14 +- src/modules/modem/digital/ModemST.cpp | 25 ++ src/modules/modem/digital/ModemST.h | 14 +- 26 files changed, 820 insertions(+), 510 deletions(-) create mode 100644 src/modules/modem/ModemDigital.cpp create mode 100644 src/modules/modem/ModemDigital.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 0178a2a..45b62ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -236,6 +236,7 @@ SET (cubicsdr_sources src/demod/DemodulatorMgr.cpp src/modules/modem/Modem.cpp src/modules/modem/ModemAnalog.cpp + src/modules/modem/ModemDigital.cpp src/modules/modem/digital/ModemASK.cpp src/modules/modem/digital/ModemAPSK.cpp src/modules/modem/digital/ModemBPSK.cpp @@ -314,6 +315,7 @@ SET (cubicsdr_headers src/demod/DemodDefs.h src/modules/modem/Modem.h src/modules/modem/ModemAnalog.h + src/modules/modem/ModemDigital.h src/modules/modem/digital/ModemASK.h src/modules/modem/digital/ModemAPSK.h src/modules/modem/digital/ModemBPSK.h diff --git a/src/demod/DemodulatorThread.cpp b/src/demod/DemodulatorThread.cpp index df7e89f..7a654b4 100644 --- a/src/demod/DemodulatorThread.cpp +++ b/src/demod/DemodulatorThread.cpp @@ -12,80 +12,12 @@ #include #endif -DemodulatorThread::DemodulatorThread(DemodulatorInstance *parent) : IOThread(), iqAutoGain(NULL), amOutputCeil(1), amOutputCeilMA(1), amOutputCeilMAA(1), audioSampleRate(0), squelchLevel(0), signalLevel(0), squelchEnabled(false), iqInputQueue(NULL), audioOutputQueue(NULL), audioVisOutputQueue(NULL), threadQueueControl(NULL), threadQueueNotify(NULL), cModem(nullptr), cModemKit(nullptr) { +DemodulatorThread::DemodulatorThread(DemodulatorInstance *parent) : IOThread(), iqAutoGain(NULL), audioSampleRate(0), squelchLevel(0), signalLevel(0), squelchEnabled(false), iqInputQueue(NULL), audioOutputQueue(NULL), audioVisOutputQueue(NULL), threadQueueControl(NULL), threadQueueNotify(NULL), cModem(nullptr), cModemKit(nullptr) { demodInstance = parent; muted.store(false); agcEnabled.store(false); - - // advanced demodulators - -/* demodulatorCons.store(2); - currentDemodCons = 0; - - demodASK = demodASK2; - demodASK2 = modem_create(LIQUID_MODEM_ASK2); - demodASK4 = modem_create(LIQUID_MODEM_ASK4); - demodASK8 = modem_create(LIQUID_MODEM_ASK8); - demodASK16 = modem_create(LIQUID_MODEM_ASK16); - demodASK32 = modem_create(LIQUID_MODEM_ASK32); - demodASK64 = modem_create(LIQUID_MODEM_ASK64); - demodASK128 = modem_create(LIQUID_MODEM_ASK128); - demodASK256 = modem_create(LIQUID_MODEM_ASK256); - - demodAPSK = demodAPSK4; - demodAPSK4 = modem_create(LIQUID_MODEM_APSK4); - demodAPSK8 = modem_create(LIQUID_MODEM_APSK8); - demodAPSK16 = modem_create(LIQUID_MODEM_APSK16); - demodAPSK32 = modem_create(LIQUID_MODEM_APSK32); - demodAPSK64 = modem_create(LIQUID_MODEM_APSK64); - demodAPSK128 = modem_create(LIQUID_MODEM_APSK128); - demodAPSK256 = modem_create(LIQUID_MODEM_APSK256); - - demodBPSK = modem_create(LIQUID_MODEM_BPSK); - - demodDPSK = demodDPSK2; - demodDPSK2 = modem_create(LIQUID_MODEM_DPSK2); - demodDPSK4 = modem_create(LIQUID_MODEM_DPSK4); - demodDPSK8 = modem_create(LIQUID_MODEM_DPSK8); - demodDPSK16 = modem_create(LIQUID_MODEM_DPSK16); - demodDPSK32 = modem_create(LIQUID_MODEM_DPSK32); - demodDPSK64 = modem_create(LIQUID_MODEM_DPSK64); - demodDPSK128 = modem_create(LIQUID_MODEM_DPSK128); - demodDPSK256 = modem_create(LIQUID_MODEM_DPSK256); - - demodPSK = demodPSK2; - demodPSK2 = modem_create(LIQUID_MODEM_PSK2); - demodPSK4 = modem_create(LIQUID_MODEM_PSK4); - demodPSK8 = modem_create(LIQUID_MODEM_PSK8); - demodPSK16 = modem_create(LIQUID_MODEM_PSK16); - demodPSK32 = modem_create(LIQUID_MODEM_PSK32); - demodPSK64 = modem_create(LIQUID_MODEM_PSK64); - demodPSK128 = modem_create(LIQUID_MODEM_PSK128); - demodPSK256 = modem_create(LIQUID_MODEM_PSK256); - - demodOOK = modem_create(LIQUID_MODEM_OOK); - - demodSQAM = demodSQAM32; - demodSQAM32 = modem_create(LIQUID_MODEM_SQAM32); - demodSQAM128 = modem_create(LIQUID_MODEM_SQAM128); - - demodST = modem_create(LIQUID_MODEM_V29); - - demodQAM = demodQAM4; - demodQAM4 = modem_create(LIQUID_MODEM_QAM4); - demodQAM8 = modem_create(LIQUID_MODEM_QAM8); - demodQAM16 = modem_create(LIQUID_MODEM_QAM16); - demodQAM32 = modem_create(LIQUID_MODEM_QAM32); - demodQAM64 = modem_create(LIQUID_MODEM_QAM64); - demodQAM128 = modem_create(LIQUID_MODEM_QAM128); - demodQAM256 = modem_create(LIQUID_MODEM_QAM256); - - demodQPSK = modem_create(LIQUID_MODEM_QPSK); - - currentDemodLock = false; */ - } DemodulatorThread::~DemodulatorThread() { } @@ -133,7 +65,6 @@ void DemodulatorThread::run() { continue; } - if (inp->modemKit && inp->modemKit != cModemKit) { if (cModemKit != nullptr) { cModem->disposeKit(cModemKit); @@ -182,8 +113,6 @@ void DemodulatorThread::run() { modemData.data.assign(inputData->begin(), inputData->end()); modemData.setRefCount(1); - - AudioThreadInput *ati = NULL; ati = outputBuffers.getBuffer(); @@ -192,311 +121,6 @@ void DemodulatorThread::run() { ati->setRefCount(1); cModem->demodulate(cModemKit, &modemData, ati); - - // Reset demodulator Constellations & Lock -// updateDemodulatorCons(0); -/* - { - switch (demodulatorType.load()) { - // advanced demodulators - case DEMOD_TYPE_ASK: - - switch (demodulatorCons.load()) { - case 2: - demodASK = demodASK2; - updateDemodulatorCons(2); - break; - case 4: - demodASK = demodASK4; - updateDemodulatorCons(4); - break; - case 8: - demodASK = demodASK8; - updateDemodulatorCons(8); - break; - case 16: - demodASK = demodASK16; - updateDemodulatorCons(16); - break; - case 32: - demodASK = demodASK32; - updateDemodulatorCons(32); - break; - case 64: - demodASK = demodASK64; - updateDemodulatorCons(64); - break; - case 128: - demodASK = demodASK128; - updateDemodulatorCons(128); - break; - case 256: - demodASK = demodASK256; - updateDemodulatorCons(256); - break; - default: - demodASK = demodASK2; - break; - } - - for (int i = 0; i < bufSize; i++) { - modem_demodulate(demodASK, inp->data[i], &demodOutputDataDigital[i]); - } - updateDemodulatorLock(demodASK, 0.005f); - break; - case DEMOD_TYPE_APSK: - - switch (demodulatorCons.load()) { - case 2: - demodAPSK = demodAPSK4; - updateDemodulatorCons(4); - break; - case 4: - demodAPSK = demodAPSK4; - updateDemodulatorCons(4); - break; - case 8: - demodAPSK = demodAPSK8; - updateDemodulatorCons(8); - break; - case 16: - demodAPSK = demodAPSK16; - updateDemodulatorCons(16); - break; - case 32: - demodAPSK = demodAPSK32; - updateDemodulatorCons(32); - break; - case 64: - demodAPSK = demodAPSK64; - updateDemodulatorCons(64); - break; - case 128: - demodAPSK = demodAPSK128; - updateDemodulatorCons(128); - break; - case 256: - demodAPSK = demodAPSK256; - updateDemodulatorCons(256); - break; - default: - demodAPSK = demodAPSK4; - break; - } - - for (int i = 0; i < bufSize; i++) { - modem_demodulate(demodAPSK, inp->data[i], &demodOutputDataDigital[i]); - } - updateDemodulatorLock(demodAPSK, 0.005f); - break; - case DEMOD_TYPE_BPSK: - for (int i = 0; i < bufSize; i++) { - modem_demodulate(demodBPSK, inp->data[i], &demodOutputDataDigital[i]); - } - updateDemodulatorLock(demodBPSK, 0.005f); - break; - case DEMOD_TYPE_DPSK: - - switch (demodulatorCons.load()) { - case 2: - demodDPSK = demodDPSK2; - updateDemodulatorCons(2); - break; - case 4: - demodDPSK = demodDPSK4; - updateDemodulatorCons(4); - break; - case 8: - demodDPSK = demodDPSK8; - updateDemodulatorCons(8); - break; - case 16: - demodDPSK = demodDPSK16; - updateDemodulatorCons(16); - break; - case 32: - demodDPSK = demodDPSK32; - updateDemodulatorCons(32); - break; - case 64: - demodDPSK = demodDPSK64; - updateDemodulatorCons(64); - break; - case 128: - demodDPSK = demodDPSK128; - updateDemodulatorCons(128); - break; - case 256: - demodDPSK = demodDPSK256; - updateDemodulatorCons(256); - break; - default: - demodDPSK = demodDPSK2; - break; - } - - for (int i = 0; i < bufSize; i++) { - modem_demodulate(demodDPSK, inp->data[i], &demodOutputDataDigital[i]); - } - updateDemodulatorLock(demodDPSK, 0.005f); - break; - case DEMOD_TYPE_PSK: - - switch (demodulatorCons.load()) { - case 2: - demodPSK = demodPSK2; - updateDemodulatorCons(2); - break; - case 4: - demodPSK = demodPSK4; - updateDemodulatorCons(4); - break; - case 8: - demodPSK = demodPSK8; - updateDemodulatorCons(8); - break; - case 16: - demodPSK = demodPSK16; - updateDemodulatorCons(16); - break; - case 32: - demodPSK = demodPSK32; - updateDemodulatorCons(32); - break; - case 64: - demodPSK = demodPSK64; - updateDemodulatorCons(64); - break; - case 128: - demodPSK = demodPSK128; - updateDemodulatorCons(128); - break; - case 256: - demodPSK = demodPSK256; - updateDemodulatorCons(256); - break; - default: - demodPSK = demodPSK2; - break; - } - - for (int i = 0; i < bufSize; i++) { - modem_demodulate(demodPSK, inp->data[i], &demodOutputDataDigital[i]); - } - updateDemodulatorLock(demodPSK, 0.005f); - break; - case DEMOD_TYPE_OOK: - for (int i = 0; i < bufSize; i++) { - modem_demodulate(demodOOK, inp->data[i], &demodOutputDataDigital[i]); - } - updateDemodulatorLock(demodOOK, 0.005f); - break; - case DEMOD_TYPE_SQAM: - - switch (demodulatorCons.load()) { - case 2: - demodSQAM = demodSQAM32; - updateDemodulatorCons(32); - break; - case 4: - demodSQAM = demodSQAM32; - updateDemodulatorCons(32); - break; - case 8: - demodSQAM = demodSQAM32; - updateDemodulatorCons(32); - break; - case 16: - demodSQAM = demodSQAM32; - updateDemodulatorCons(32); - break; - case 32: - demodSQAM = demodSQAM32; - updateDemodulatorCons(32); - break; - case 64: - demodSQAM = demodSQAM32; - updateDemodulatorCons(32); - break; - case 128: - demodSQAM = demodSQAM128; - updateDemodulatorCons(128); - break; - case 256: - demodSQAM = demodSQAM128; - updateDemodulatorCons(128); - break; - default: - demodSQAM = demodSQAM32; - break; - } - - for (int i = 0; i < bufSize; i++) { - modem_demodulate(demodSQAM, inp->data[i], &demodOutputDataDigital[i]); - } - updateDemodulatorLock(demodSQAM, 0.005f); - break; - case DEMOD_TYPE_ST: - for (int i = 0; i < bufSize; i++) { - modem_demodulate(demodST, inp->data[i], &demodOutputDataDigital[i]); - } - updateDemodulatorLock(demodST, 0.005f); - break; - case DEMOD_TYPE_QAM: - - switch (demodulatorCons.load()) { - case 2: - demodQAM = demodQAM4; - updateDemodulatorCons(4); - break; - case 4: - demodQAM = demodQAM4; - updateDemodulatorCons(4); - break; - case 8: - demodQAM = demodQAM8; - updateDemodulatorCons(8); - break; - case 16: - demodQAM = demodQAM16; - updateDemodulatorCons(16); - break; - case 32: - demodQAM = demodQAM32; - updateDemodulatorCons(32); - break; - case 64: - demodQAM = demodQAM64; - updateDemodulatorCons(64); - break; - case 128: - demodQAM = demodQAM128; - updateDemodulatorCons(128); - break; - case 256: - demodQAM = demodQAM256; - updateDemodulatorCons(256); - break; - default: - demodQAM = demodQAM4; - break; - } - - for (int i = 0; i < bufSize; i++) { - modem_demodulate(demodQAM, inp->data[i], &demodOutputDataDigital[i]); - } - updateDemodulatorLock(demodQAM, 0.5f); - break; - case DEMOD_TYPE_QPSK: - for (int i = 0; i < bufSize; i++) { - modem_demodulate(demodQPSK, inp->data[i], &demodOutputDataDigital[i]); - } - updateDemodulatorLock(demodQPSK, 0.8f); - break; - } - } - - }*/ if (currentSignalLevel > signalLevel) { signalLevel = signalLevel + (currentSignalLevel - signalLevel) * 0.5; @@ -504,7 +128,6 @@ void DemodulatorThread::run() { signalLevel = signalLevel + (currentSignalLevel - signalLevel) * 0.05; } - if (audioOutputQueue != NULL) { if (ati && (!squelchEnabled || (signalLevel >= squelchLevel))) { std::vector::iterator data_i; @@ -596,7 +219,6 @@ void DemodulatorThread::run() { } } -// demodOutputDataDigital.empty(); inp->decRefCount(); } @@ -654,29 +276,3 @@ void DemodulatorThread::setSquelchLevel(float signal_level_in) { float DemodulatorThread::getSquelchLevel() { return squelchLevel; } - -void DemodulatorThread::setDemodulatorLock(bool demod_lock_in) { - demod_lock_in ? currentDemodLock = true : currentDemodLock = false; -} - -int DemodulatorThread::getDemodulatorLock() { - return currentDemodLock; -} - -void DemodulatorThread::setDemodulatorCons(int demod_cons_in) { - demodulatorCons.store(demod_cons_in); -} - -int DemodulatorThread::getDemodulatorCons() { - return currentDemodCons; -} - -void DemodulatorThread::updateDemodulatorLock(modem demod, float sensitivity) { - modem_get_demodulator_evm(demod) <= sensitivity ? setDemodulatorLock(true) : setDemodulatorLock(false); -} - -void DemodulatorThread::updateDemodulatorCons(int Cons) { - if (currentDemodCons != Cons) { - currentDemodCons = Cons; - } -} diff --git a/src/demod/DemodulatorThread.h b/src/demod/DemodulatorThread.h index cc08ac7..7cccd58 100644 --- a/src/demod/DemodulatorThread.h +++ b/src/demod/DemodulatorThread.h @@ -32,12 +32,7 @@ public: float getSignalLevel(); void setSquelchLevel(float signal_level_in); float getSquelchLevel(); - - void setDemodulatorLock(bool demod_lock_in); - int getDemodulatorLock(); - - void setDemodulatorCons(int demod_cons_in); - int getDemodulatorCons(); + // //#ifdef __APPLE__ // static void *pthread_helper(void *context) { @@ -51,104 +46,17 @@ protected: std::vector agcData; std::vector agcAMData; -// std::vector demodOutputData; -// std::vector demodStereoData; -// std::vector resampledOutputData; -// std::vector resampledStereoData; - std::vector demodOutputDataDigital; - //std::vector demodOutputDataDigitalTest; - //std::vector demodOutputSoftbits; - //std::vector demodOutputSoftbitsTest; - -// freqdem demodFM; -// ampmodem demodAM; -// ampmodem demodAM_DSB_CSP; -// ampmodem demodAM_DSB; -// ampmodem demodAM_LSB; -// ampmodem demodAM_USB; -/* - modem demodASK; - modem demodASK2; - modem demodASK4; - modem demodASK8; - modem demodASK16; - modem demodASK32; - modem demodASK64; - modem demodASK128; - modem demodASK256; - - modem demodAPSK; - modem demodAPSK4; - modem demodAPSK8; - modem demodAPSK16; - modem demodAPSK32; - modem demodAPSK64; - modem demodAPSK128; - modem demodAPSK256; - - modem demodBPSK; - - modem demodDPSK; - modem demodDPSK2; - modem demodDPSK4; - modem demodDPSK8; - modem demodDPSK16; - modem demodDPSK32; - modem demodDPSK64; - modem demodDPSK128; - modem demodDPSK256; - - modem demodPSK; - modem demodPSK2; - modem demodPSK4; - modem demodPSK8; - modem demodPSK16; - modem demodPSK32; - modem demodPSK64; - modem demodPSK128; - modem demodPSK256; - - modem demodOOK; - - modem demodSQAM; - modem demodSQAM32; - modem demodSQAM128; - - modem demodST; - - modem demodQAM; - modem demodQAM4; - modem demodQAM8; - modem demodQAM16; - modem demodQAM32; - modem demodQAM64; - modem demodQAM128; - modem demodQAM256; - - modem demodQPSK; -*/ agc_crcf iqAutoGain; - float amOutputCeil; - float amOutputCeilMA; - float amOutputCeilMAA; - std::atomic_bool muted; std::atomic_bool agcEnabled; - std::atomic_int demodulatorCons; int audioSampleRate; std::atomic squelchLevel; std::atomic signalLevel; bool squelchEnabled; - bool currentDemodLock; - int currentDemodCons; - - void updateDemodulatorCons(int Cons); - void updateDemodulatorLock(modem demod, float sensitivity); - Modem *cModem; ModemKit *cModemKit; diff --git a/src/modules/modem/ModemAnalog.cpp b/src/modules/modem/ModemAnalog.cpp index d50994d..1284bc1 100644 --- a/src/modules/modem/ModemAnalog.cpp +++ b/src/modules/modem/ModemAnalog.cpp @@ -22,7 +22,7 @@ void ModemAnalog::disposeKit(ModemKit *kit) { ModemKitAnalog *akit = (ModemKitAnalog *)kit; msresamp_rrrf_destroy(akit->audioResampler); - delete kit; + delete akit; } void ModemAnalog::initOutputBuffers(ModemKitAnalog *akit, ModemIQData *input) { diff --git a/src/modules/modem/ModemDigital.cpp b/src/modules/modem/ModemDigital.cpp new file mode 100644 index 0000000..9a73695 --- /dev/null +++ b/src/modules/modem/ModemDigital.cpp @@ -0,0 +1,70 @@ +#include "ModemDigital.h" + +ModemDigital::ModemDigital() { + demodulatorCons.store(2); + currentDemodCons = 0; + currentDemodLock = false; +} + +ModemKit *ModemDigital::buildKit(long long sampleRate, int audioSampleRate) { + ModemKitDigital *dkit = new ModemKitDigital; + + dkit->sampleRate = sampleRate; + dkit->audioSampleRate = audioSampleRate; + + return dkit; +} + +void ModemDigital::disposeKit(ModemKit *kit) { + ModemKitDigital *dkit = (ModemKitDigital *)kit; + + delete dkit; +} + + +void ModemDigital::setDemodulatorLock(bool demod_lock_in) { + demod_lock_in ? currentDemodLock = true : currentDemodLock = false; +} + +int ModemDigital::getDemodulatorLock() { + return currentDemodLock; +} + +void ModemDigital::setDemodulatorCons(int demod_cons_in) { + demodulatorCons.store(demod_cons_in); +} + +int ModemDigital::getDemodulatorCons() { + return currentDemodCons; +} + +void ModemDigital::updateDemodulatorLock(modem demod, float sensitivity) { + modem_get_demodulator_evm(demod) <= sensitivity ? setDemodulatorLock(true) : setDemodulatorLock(false); +} + +void ModemDigital::updateDemodulatorCons(int Cons) { + if (currentDemodCons != Cons) { + currentDemodCons = Cons; + } +} + + +// Demodulate +/* + // Reset demodulator Constellations & Lock + // updateDemodulatorCons(0); + +{ + switch (demodulatorType.load()) { + // advanced demodulators + + } +} + + +} + + // demodOutputDataDigital.empty(); + + + */ diff --git a/src/modules/modem/ModemDigital.h b/src/modules/modem/ModemDigital.h new file mode 100644 index 0000000..9768207 --- /dev/null +++ b/src/modules/modem/ModemDigital.h @@ -0,0 +1,38 @@ +#pragma once +#include "Modem.h" + +class ModemKitDigital : public ModemKit { +public: + ModemKitDigital() : ModemKit() { + + }; +}; + + +class ModemDigital : public Modem { +public: + ModemDigital(); + ModemKit *buildKit(long long sampleRate, int audioSampleRate); + void disposeKit(ModemKit *kit); + + void setDemodulatorLock(bool demod_lock_in); + int getDemodulatorLock(); + + void setDemodulatorCons(int demod_cons_in); + int getDemodulatorCons(); + + void updateDemodulatorCons(int Cons); + void updateDemodulatorLock(modem demod, float sensitivity); + +protected: + std::vector demodOutputDataDigital; + std::atomic_int demodulatorCons; + bool currentDemodLock; + int currentDemodCons; + + int bufSize; + +// std::vector demodOutputDataDigitalTest; +// std::vector demodOutputSoftbits; +// std::vector demodOutputSoftbitsTest; +}; \ No newline at end of file diff --git a/src/modules/modem/digital/ModemAPSK.cpp b/src/modules/modem/digital/ModemAPSK.cpp index b21c7fc..b66259e 100644 --- a/src/modules/modem/digital/ModemAPSK.cpp +++ b/src/modules/modem/digital/ModemAPSK.cpp @@ -1 +1,76 @@ -#include "ModemAPSK.h" \ No newline at end of file +#include "ModemAPSK.h" + +ModemAPSK::ModemAPSK() { + demodAPSK4 = modem_create(LIQUID_MODEM_APSK4); + demodAPSK8 = modem_create(LIQUID_MODEM_APSK8); + demodAPSK16 = modem_create(LIQUID_MODEM_APSK16); + demodAPSK32 = modem_create(LIQUID_MODEM_APSK32); + demodAPSK64 = modem_create(LIQUID_MODEM_APSK64); + demodAPSK128 = modem_create(LIQUID_MODEM_APSK128); + demodAPSK256 = modem_create(LIQUID_MODEM_APSK256); + demodAPSK = demodAPSK4; +} + +Modem *ModemAPSK::factory() { + return new ModemAPSK; +} + +ModemAPSK::~ModemAPSK() { + modem_destroy(demodAPSK4); + modem_destroy(demodAPSK8); + modem_destroy(demodAPSK16); + modem_destroy(demodAPSK32); + modem_destroy(demodAPSK64); + modem_destroy(demodAPSK128); + modem_destroy(demodAPSK256); +} + +void ModemAPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) { +/* + case DEMOD_TYPE_APSK: + + switch (demodulatorCons.load()) { + case 2: + demodAPSK = demodAPSK4; + updateDemodulatorCons(4); + break; + case 4: + demodAPSK = demodAPSK4; + updateDemodulatorCons(4); + break; + case 8: + demodAPSK = demodAPSK8; + updateDemodulatorCons(8); + break; + case 16: + demodAPSK = demodAPSK16; + updateDemodulatorCons(16); + break; + case 32: + demodAPSK = demodAPSK32; + updateDemodulatorCons(32); + break; + case 64: + demodAPSK = demodAPSK64; + updateDemodulatorCons(64); + break; + case 128: + demodAPSK = demodAPSK128; + updateDemodulatorCons(128); + break; + case 256: + demodAPSK = demodAPSK256; + updateDemodulatorCons(256); + break; + default: + demodAPSK = demodAPSK4; + break; + } + + for (int i = 0; i < bufSize; i++) { + modem_demodulate(demodAPSK, inp->data[i], &demodOutputDataDigital[i]); + } + updateDemodulatorLock(demodAPSK, 0.005f); + break; +*/ +} diff --git a/src/modules/modem/digital/ModemAPSK.h b/src/modules/modem/digital/ModemAPSK.h index d8fc4cc..475b043 100644 --- a/src/modules/modem/digital/ModemAPSK.h +++ b/src/modules/modem/digital/ModemAPSK.h @@ -1,3 +1,20 @@ #pragma once -#include "Modem.h" +#include "ModemDigital.h" +class ModemAPSK : public ModemDigital { +public: + ModemAPSK(); + ~ModemAPSK(); + Modem *factory(); + void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut); + +private: + modem demodAPSK; + modem demodAPSK4; + modem demodAPSK8; + modem demodAPSK16; + modem demodAPSK32; + modem demodAPSK64; + modem demodAPSK128; + modem demodAPSK256; +}; diff --git a/src/modules/modem/digital/ModemASK.cpp b/src/modules/modem/digital/ModemASK.cpp index 19ba6e9..72c842a 100644 --- a/src/modules/modem/digital/ModemASK.cpp +++ b/src/modules/modem/digital/ModemASK.cpp @@ -1 +1,78 @@ #include "ModemASK.h" + +ModemASK::ModemASK() { + demodASK2 = modem_create(LIQUID_MODEM_ASK2); + demodASK4 = modem_create(LIQUID_MODEM_ASK4); + demodASK8 = modem_create(LIQUID_MODEM_ASK8); + demodASK16 = modem_create(LIQUID_MODEM_ASK16); + demodASK32 = modem_create(LIQUID_MODEM_ASK32); + demodASK64 = modem_create(LIQUID_MODEM_ASK64); + demodASK128 = modem_create(LIQUID_MODEM_ASK128); + demodASK256 = modem_create(LIQUID_MODEM_ASK256); + demodASK = demodASK2; +} + +Modem *ModemASK::factory() { + return new ModemASK; +} + +ModemASK::~ModemASK() { + modem_destroy(demodASK4); + modem_destroy(demodASK8); + modem_destroy(demodASK16); + modem_destroy(demodASK32); + modem_destroy(demodASK64); + modem_destroy(demodASK128); + modem_destroy(demodASK256); +} + +void ModemASK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) { + +/* +case DEMOD_TYPE_ASK: + +switch (demodulatorCons.load()) { + case 2: + demodASK = demodASK2; + updateDemodulatorCons(2); + break; + case 4: + demodASK = demodASK4; + updateDemodulatorCons(4); + break; + case 8: + demodASK = demodASK8; + updateDemodulatorCons(8); + break; + case 16: + demodASK = demodASK16; + updateDemodulatorCons(16); + break; + case 32: + demodASK = demodASK32; + updateDemodulatorCons(32); + break; + case 64: + demodASK = demodASK64; + updateDemodulatorCons(64); + break; + case 128: + demodASK = demodASK128; + updateDemodulatorCons(128); + break; + case 256: + demodASK = demodASK256; + updateDemodulatorCons(256); + break; + default: + demodASK = demodASK2; + break; +} + +for (int i = 0; i < bufSize; i++) { + modem_demodulate(demodASK, inp->data[i], &demodOutputDataDigital[i]); +} +updateDemodulatorLock(demodASK, 0.005f); +break; +*/ +} \ No newline at end of file diff --git a/src/modules/modem/digital/ModemASK.h b/src/modules/modem/digital/ModemASK.h index d8fc4cc..090d2c3 100644 --- a/src/modules/modem/digital/ModemASK.h +++ b/src/modules/modem/digital/ModemASK.h @@ -1,3 +1,21 @@ #pragma once -#include "Modem.h" +#include "ModemDigital.h" +class ModemASK : public ModemDigital { +public: + ModemASK(); + ~ModemASK(); + Modem *factory(); + void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut); + +private: + modem demodASK; + modem demodASK2; + modem demodASK4; + modem demodASK8; + modem demodASK16; + modem demodASK32; + modem demodASK64; + modem demodASK128; + modem demodASK256; +}; diff --git a/src/modules/modem/digital/ModemBPSK.cpp b/src/modules/modem/digital/ModemBPSK.cpp index 4cb3576..b4ce0aa 100644 --- a/src/modules/modem/digital/ModemBPSK.cpp +++ b/src/modules/modem/digital/ModemBPSK.cpp @@ -1 +1,25 @@ #include "ModemBPSK.h" + +ModemBPSK::ModemBPSK() { + demodBPSK = modem_create(LIQUID_MODEM_BPSK); + +} + +Modem *ModemBPSK::factory() { + return new ModemBPSK; +} + +ModemBPSK::~ModemBPSK() { + modem_destroy(demodBPSK); +} + +void ModemBPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) { +/* +case DEMOD_TYPE_BPSK: +for (int i = 0; i < bufSize; i++) { + modem_demodulate(demodBPSK, inp->data[i], &demodOutputDataDigital[i]); +} +updateDemodulatorLock(demodBPSK, 0.005f); +break; +*/ +} \ No newline at end of file diff --git a/src/modules/modem/digital/ModemBPSK.h b/src/modules/modem/digital/ModemBPSK.h index d8fc4cc..a454170 100644 --- a/src/modules/modem/digital/ModemBPSK.h +++ b/src/modules/modem/digital/ModemBPSK.h @@ -1,3 +1,14 @@ #pragma once -#include "Modem.h" +#include "ModemDigital.h" +class ModemBPSK : public ModemDigital { +public: + ModemBPSK(); + ~ModemBPSK(); + Modem *factory(); + void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut); + +private: + modem demodBPSK; + +}; diff --git a/src/modules/modem/digital/ModemDPSK.cpp b/src/modules/modem/digital/ModemDPSK.cpp index 04c269d..3c05329 100644 --- a/src/modules/modem/digital/ModemDPSK.cpp +++ b/src/modules/modem/digital/ModemDPSK.cpp @@ -1 +1,79 @@ #include "ModemDPSK.h" + +ModemDPSK::ModemDPSK() { + demodDPSK2 = modem_create(LIQUID_MODEM_DPSK2); + demodDPSK4 = modem_create(LIQUID_MODEM_DPSK4); + demodDPSK8 = modem_create(LIQUID_MODEM_DPSK8); + demodDPSK16 = modem_create(LIQUID_MODEM_DPSK16); + demodDPSK32 = modem_create(LIQUID_MODEM_DPSK32); + demodDPSK64 = modem_create(LIQUID_MODEM_DPSK64); + demodDPSK128 = modem_create(LIQUID_MODEM_DPSK128); + demodDPSK256 = modem_create(LIQUID_MODEM_DPSK256); + demodDPSK = demodDPSK2; +} + +Modem *ModemDPSK::factory() { + return new ModemDPSK; +} + +ModemDPSK::~ModemDPSK() { + modem_destroy(demodDPSK2); + modem_destroy(demodDPSK4); + modem_destroy(demodDPSK8); + modem_destroy(demodDPSK16); + modem_destroy(demodDPSK32); + modem_destroy(demodDPSK64); + modem_destroy(demodDPSK128); + modem_destroy(demodDPSK256); +} + +void ModemDPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) { + +/* +case DEMOD_TYPE_DPSK: + +switch (demodulatorCons.load()) { + case 2: + demodDPSK = demodDPSK2; + updateDemodulatorCons(2); + break; + case 4: + demodDPSK = demodDPSK4; + updateDemodulatorCons(4); + break; + case 8: + demodDPSK = demodDPSK8; + updateDemodulatorCons(8); + break; + case 16: + demodDPSK = demodDPSK16; + updateDemodulatorCons(16); + break; + case 32: + demodDPSK = demodDPSK32; + updateDemodulatorCons(32); + break; + case 64: + demodDPSK = demodDPSK64; + updateDemodulatorCons(64); + break; + case 128: + demodDPSK = demodDPSK128; + updateDemodulatorCons(128); + break; + case 256: + demodDPSK = demodDPSK256; + updateDemodulatorCons(256); + break; + default: + demodDPSK = demodDPSK2; + break; +} + +for (int i = 0; i < bufSize; i++) { + modem_demodulate(demodDPSK, inp->data[i], &demodOutputDataDigital[i]); +} +updateDemodulatorLock(demodDPSK, 0.005f); +break; +*/ +} \ No newline at end of file diff --git a/src/modules/modem/digital/ModemDPSK.h b/src/modules/modem/digital/ModemDPSK.h index d8fc4cc..a3f188b 100644 --- a/src/modules/modem/digital/ModemDPSK.h +++ b/src/modules/modem/digital/ModemDPSK.h @@ -1,3 +1,22 @@ #pragma once -#include "Modem.h" +#include "ModemDigital.h" + +class ModemDPSK : public ModemDigital { +public: + ModemDPSK(); + ~ModemDPSK(); + Modem *factory(); + void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut); + +private: + modem demodDPSK; + modem demodDPSK2; + modem demodDPSK4; + modem demodDPSK8; + modem demodDPSK16; + modem demodDPSK32; + modem demodDPSK64; + modem demodDPSK128; + modem demodDPSK256; +}; diff --git a/src/modules/modem/digital/ModemOOK.cpp b/src/modules/modem/digital/ModemOOK.cpp index 50dd454..b8c825b 100644 --- a/src/modules/modem/digital/ModemOOK.cpp +++ b/src/modules/modem/digital/ModemOOK.cpp @@ -1 +1,25 @@ #include "ModemOOK.h" + +ModemOOK::ModemOOK() { + demodOOK = modem_create(LIQUID_MODEM_OOK); +} + +Modem *ModemOOK::factory() { + return new ModemOOK; +} + +ModemOOK::~ModemOOK() { + modem_destroy(demodOOK); +} + +void ModemOOK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) { + +/* +case DEMOD_TYPE_OOK: +for (int i = 0; i < bufSize; i++) { + modem_demodulate(demodOOK, inp->data[i], &demodOutputDataDigital[i]); +} +updateDemodulatorLock(demodOOK, 0.005f); +break; +*/ +} \ No newline at end of file diff --git a/src/modules/modem/digital/ModemOOK.h b/src/modules/modem/digital/ModemOOK.h index d8fc4cc..9af2837 100644 --- a/src/modules/modem/digital/ModemOOK.h +++ b/src/modules/modem/digital/ModemOOK.h @@ -1,3 +1,14 @@ #pragma once -#include "Modem.h" +#include "ModemDigital.h" +class ModemOOK : public ModemDigital { +public: + ModemOOK(); + ~ModemOOK(); + Modem *factory(); + void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut); + +private: + modem demodOOK; + +}; diff --git a/src/modules/modem/digital/ModemPSK.cpp b/src/modules/modem/digital/ModemPSK.cpp index 3efece7..1609d54 100644 --- a/src/modules/modem/digital/ModemPSK.cpp +++ b/src/modules/modem/digital/ModemPSK.cpp @@ -1 +1,80 @@ #include "ModemPSK.h" + +ModemPSK::ModemPSK() { + + demodPSK = demodPSK2; + demodPSK2 = modem_create(LIQUID_MODEM_PSK2); + demodPSK4 = modem_create(LIQUID_MODEM_PSK4); + demodPSK8 = modem_create(LIQUID_MODEM_PSK8); + demodPSK16 = modem_create(LIQUID_MODEM_PSK16); + demodPSK32 = modem_create(LIQUID_MODEM_PSK32); + demodPSK64 = modem_create(LIQUID_MODEM_PSK64); + demodPSK128 = modem_create(LIQUID_MODEM_PSK128); + demodPSK256 = modem_create(LIQUID_MODEM_PSK256); +} + +Modem *ModemPSK::factory() { + return new ModemPSK; +} + +ModemPSK::~ModemPSK() { + modem_destroy(demodPSK2); + modem_destroy(demodPSK4); + modem_destroy(demodPSK8); + modem_destroy(demodPSK16); + modem_destroy(demodPSK32); + modem_destroy(demodPSK64); + modem_destroy(demodPSK128); + modem_destroy(demodPSK256); +} + +void ModemPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) { + +/* +case DEMOD_TYPE_PSK: + +switch (demodulatorCons.load()) { + case 2: + demodPSK = demodPSK2; + updateDemodulatorCons(2); + break; + case 4: + demodPSK = demodPSK4; + updateDemodulatorCons(4); + break; + case 8: + demodPSK = demodPSK8; + updateDemodulatorCons(8); + break; + case 16: + demodPSK = demodPSK16; + updateDemodulatorCons(16); + break; + case 32: + demodPSK = demodPSK32; + updateDemodulatorCons(32); + break; + case 64: + demodPSK = demodPSK64; + updateDemodulatorCons(64); + break; + case 128: + demodPSK = demodPSK128; + updateDemodulatorCons(128); + break; + case 256: + demodPSK = demodPSK256; + updateDemodulatorCons(256); + break; + default: + demodPSK = demodPSK2; + break; +} + +for (int i = 0; i < bufSize; i++) { + modem_demodulate(demodPSK, inp->data[i], &demodOutputDataDigital[i]); +} +updateDemodulatorLock(demodPSK, 0.005f); +break; +*/ +} \ No newline at end of file diff --git a/src/modules/modem/digital/ModemPSK.h b/src/modules/modem/digital/ModemPSK.h index d8fc4cc..5cbc68c 100644 --- a/src/modules/modem/digital/ModemPSK.h +++ b/src/modules/modem/digital/ModemPSK.h @@ -1,3 +1,22 @@ #pragma once -#include "Modem.h" +#include "ModemDigital.h" + +class ModemPSK : public ModemDigital { +public: + ModemPSK(); + ~ModemPSK(); + Modem *factory(); + void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut); + +private: + modem demodPSK; + modem demodPSK2; + modem demodPSK4; + modem demodPSK8; + modem demodPSK16; + modem demodPSK32; + modem demodPSK64; + modem demodPSK128; + modem demodPSK256; +}; diff --git a/src/modules/modem/digital/ModemQAM.cpp b/src/modules/modem/digital/ModemQAM.cpp index 8b4b6d2..d6be0bb 100644 --- a/src/modules/modem/digital/ModemQAM.cpp +++ b/src/modules/modem/digital/ModemQAM.cpp @@ -1 +1,77 @@ #include "ModemQAM.h" + +ModemQAM::ModemQAM() { + demodQAM4 = modem_create(LIQUID_MODEM_QAM4); + demodQAM8 = modem_create(LIQUID_MODEM_QAM8); + demodQAM16 = modem_create(LIQUID_MODEM_QAM16); + demodQAM32 = modem_create(LIQUID_MODEM_QAM32); + demodQAM64 = modem_create(LIQUID_MODEM_QAM64); + demodQAM128 = modem_create(LIQUID_MODEM_QAM128); + demodQAM256 = modem_create(LIQUID_MODEM_QAM256); + demodQAM = demodQAM4; +} + +Modem *ModemQAM::factory() { + return new ModemQAM; +} + +ModemQAM::~ModemQAM() { + modem_destroy(demodQAM4); + modem_destroy(demodQAM8); + modem_destroy(demodQAM16); + modem_destroy(demodQAM32); + modem_destroy(demodQAM64); + modem_destroy(demodQAM128); + modem_destroy(demodQAM256); +} + +void ModemQAM::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) { + +/* +case DEMOD_TYPE_QAM: + +switch (demodulatorCons.load()) { + case 2: + demodQAM = demodQAM4; + updateDemodulatorCons(4); + break; + case 4: + demodQAM = demodQAM4; + updateDemodulatorCons(4); + break; + case 8: + demodQAM = demodQAM8; + updateDemodulatorCons(8); + break; + case 16: + demodQAM = demodQAM16; + updateDemodulatorCons(16); + break; + case 32: + demodQAM = demodQAM32; + updateDemodulatorCons(32); + break; + case 64: + demodQAM = demodQAM64; + updateDemodulatorCons(64); + break; + case 128: + demodQAM = demodQAM128; + updateDemodulatorCons(128); + break; + case 256: + demodQAM = demodQAM256; + updateDemodulatorCons(256); + break; + default: + demodQAM = demodQAM4; + break; +} + +for (int i = 0; i < bufSize; i++) { + modem_demodulate(demodQAM, inp->data[i], &demodOutputDataDigital[i]); +} +updateDemodulatorLock(demodQAM, 0.5f); +break; +*/ +} diff --git a/src/modules/modem/digital/ModemQAM.h b/src/modules/modem/digital/ModemQAM.h index d8fc4cc..2971cb8 100644 --- a/src/modules/modem/digital/ModemQAM.h +++ b/src/modules/modem/digital/ModemQAM.h @@ -1,3 +1,22 @@ #pragma once -#include "Modem.h" +#include "ModemDigital.h" + +class ModemQAM : public ModemDigital { +public: + ModemQAM(); + ~ModemQAM(); + Modem *factory(); + void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut); + +private: + modem demodQAM; + modem demodQAM4; + modem demodQAM8; + modem demodQAM16; + modem demodQAM32; + modem demodQAM64; + modem demodQAM128; + modem demodQAM256; +}; + diff --git a/src/modules/modem/digital/ModemQPSK.cpp b/src/modules/modem/digital/ModemQPSK.cpp index e2dea39..50ab626 100644 --- a/src/modules/modem/digital/ModemQPSK.cpp +++ b/src/modules/modem/digital/ModemQPSK.cpp @@ -1 +1,25 @@ #include "ModemQPSK.h" + +ModemQPSK::ModemQPSK() { + demodQPSK = modem_create(LIQUID_MODEM_QPSK); +} + +Modem *ModemQPSK::factory() { + return new ModemQPSK; +} + +ModemQPSK::~ModemQPSK() { + modem_destroy(demodQPSK); +} + +void ModemQPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) { + +/* +case DEMOD_TYPE_QPSK: +for (int i = 0; i < bufSize; i++) { + modem_demodulate(demodQPSK, inp->data[i], &demodOutputDataDigital[i]); +} +updateDemodulatorLock(demodQPSK, 0.8f); +break; +*/ +} \ No newline at end of file diff --git a/src/modules/modem/digital/ModemQPSK.h b/src/modules/modem/digital/ModemQPSK.h index d8fc4cc..dfdd1b0 100644 --- a/src/modules/modem/digital/ModemQPSK.h +++ b/src/modules/modem/digital/ModemQPSK.h @@ -1,3 +1,13 @@ #pragma once -#include "Modem.h" +#include "ModemDigital.h" +class ModemQPSK : public ModemDigital { +public: + ModemQPSK(); + ~ModemQPSK(); + Modem *factory(); + void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut); + +private: + modem demodQPSK; +}; diff --git a/src/modules/modem/digital/ModemSQAM.cpp b/src/modules/modem/digital/ModemSQAM.cpp index fed6b18..4dc7045 100644 --- a/src/modules/modem/digital/ModemSQAM.cpp +++ b/src/modules/modem/digital/ModemSQAM.cpp @@ -1 +1,67 @@ #include "ModemSQAM.h" + +ModemSQAM::ModemSQAM() { + demodSQAM = demodSQAM32; + demodSQAM32 = modem_create(LIQUID_MODEM_SQAM32); + demodSQAM128 = modem_create(LIQUID_MODEM_SQAM128); +} + +Modem *ModemSQAM::factory() { + return new ModemSQAM; +} + +ModemSQAM::~ModemSQAM() { + modem_destroy(demodSQAM32); + modem_destroy(demodSQAM128); +} + +void ModemSQAM::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) { + +/* +case DEMOD_TYPE_SQAM: + +switch (demodulatorCons.load()) { + case 2: + demodSQAM = demodSQAM32; + updateDemodulatorCons(32); + break; + case 4: + demodSQAM = demodSQAM32; + updateDemodulatorCons(32); + break; + case 8: + demodSQAM = demodSQAM32; + updateDemodulatorCons(32); + break; + case 16: + demodSQAM = demodSQAM32; + updateDemodulatorCons(32); + break; + case 32: + demodSQAM = demodSQAM32; + updateDemodulatorCons(32); + break; + case 64: + demodSQAM = demodSQAM32; + updateDemodulatorCons(32); + break; + case 128: + demodSQAM = demodSQAM128; + updateDemodulatorCons(128); + break; + case 256: + demodSQAM = demodSQAM128; + updateDemodulatorCons(128); + break; + default: + demodSQAM = demodSQAM32; + break; +} + +for (int i = 0; i < bufSize; i++) { + modem_demodulate(demodSQAM, inp->data[i], &demodOutputDataDigital[i]); +} +updateDemodulatorLock(demodSQAM, 0.005f); +break; +*/ +} \ No newline at end of file diff --git a/src/modules/modem/digital/ModemSQAM.h b/src/modules/modem/digital/ModemSQAM.h index d8fc4cc..b869547 100644 --- a/src/modules/modem/digital/ModemSQAM.h +++ b/src/modules/modem/digital/ModemSQAM.h @@ -1,3 +1,15 @@ #pragma once -#include "Modem.h" +#include "ModemDigital.h" +class ModemSQAM : public ModemDigital { +public: + ModemSQAM(); + ~ModemSQAM(); + Modem *factory(); + void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut); + +private: + modem demodSQAM; + modem demodSQAM32; + modem demodSQAM128; +}; diff --git a/src/modules/modem/digital/ModemST.cpp b/src/modules/modem/digital/ModemST.cpp index 81cea23..5311352 100644 --- a/src/modules/modem/digital/ModemST.cpp +++ b/src/modules/modem/digital/ModemST.cpp @@ -1,2 +1,27 @@ #include "ModemST.h" +ModemST::ModemST() { + demodST = modem_create(LIQUID_MODEM_V29); +} + +Modem *ModemST::factory() { + return new ModemST; +} + + +ModemST::~ModemST() { + modem_destroy(demodST); +} + +void ModemST::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) { + +/* +case DEMOD_TYPE_ST: +for (int i = 0; i < bufSize; i++) { + modem_demodulate(demodST, inp->data[i], &demodOutputDataDigital[i]); +} +updateDemodulatorLock(demodST, 0.005f); +break; + +*/ +} \ No newline at end of file diff --git a/src/modules/modem/digital/ModemST.h b/src/modules/modem/digital/ModemST.h index ae80ca2..380f05f 100644 --- a/src/modules/modem/digital/ModemST.h +++ b/src/modules/modem/digital/ModemST.h @@ -1,2 +1,14 @@ #pragma once -#include "Modem.h" \ No newline at end of file +#include "ModemDigital.h" + +class ModemST : public ModemDigital { +public: + ModemST(); + ~ModemST(); + Modem *factory(); + void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut); + +private: + modem demodST; +}; +