From d6ffb6edc2e0d2b533e56ebb81da57e86b44f876 Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Wed, 18 Nov 2015 21:31:59 -0500 Subject: [PATCH] Cleanup / implement digital modem demod code --- src/modules/modem/ModemDigital.h | 4 +- src/modules/modem/digital/ModemAPSK.cpp | 9 +-- src/modules/modem/digital/ModemASK.cpp | 91 ++++++++++++------------ src/modules/modem/digital/ModemBPSK.cpp | 14 ++-- src/modules/modem/digital/ModemDPSK.cpp | 91 ++++++++++++------------ src/modules/modem/digital/ModemOOK.cpp | 14 ++-- src/modules/modem/digital/ModemPSK.cpp | 91 ++++++++++++------------ src/modules/modem/digital/ModemQAM.cpp | 92 ++++++++++++------------- src/modules/modem/digital/ModemQPSK.cpp | 14 ++-- src/modules/modem/digital/ModemSQAM.cpp | 91 ++++++++++++------------ src/modules/modem/digital/ModemST.cpp | 15 ++-- 11 files changed, 239 insertions(+), 287 deletions(-) diff --git a/src/modules/modem/ModemDigital.h b/src/modules/modem/ModemDigital.h index 9768207..2c0809f 100644 --- a/src/modules/modem/ModemDigital.h +++ b/src/modules/modem/ModemDigital.h @@ -29,9 +29,7 @@ protected: std::atomic_int demodulatorCons; bool currentDemodLock; int currentDemodCons; - - int bufSize; - + // std::vector demodOutputDataDigitalTest; // std::vector demodOutputSoftbits; // std::vector demodOutputSoftbitsTest; diff --git a/src/modules/modem/digital/ModemAPSK.cpp b/src/modules/modem/digital/ModemAPSK.cpp index b66259e..9f27f98 100644 --- a/src/modules/modem/digital/ModemAPSK.cpp +++ b/src/modules/modem/digital/ModemAPSK.cpp @@ -26,9 +26,6 @@ ModemAPSK::~ModemAPSK() { } void ModemAPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) { -/* - case DEMOD_TYPE_APSK: - switch (demodulatorCons.load()) { case 2: demodAPSK = demodAPSK4; @@ -67,10 +64,8 @@ void ModemAPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput * break; } - for (int i = 0; i < bufSize; i++) { - modem_demodulate(demodAPSK, inp->data[i], &demodOutputDataDigital[i]); + for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) { + modem_demodulate(demodAPSK, input->data[i], &demodOutputDataDigital[i]); } updateDemodulatorLock(demodAPSK, 0.005f); - break; -*/ } diff --git a/src/modules/modem/digital/ModemASK.cpp b/src/modules/modem/digital/ModemASK.cpp index 72c842a..2119406 100644 --- a/src/modules/modem/digital/ModemASK.cpp +++ b/src/modules/modem/digital/ModemASK.cpp @@ -27,52 +27,47 @@ ModemASK::~ModemASK() { } 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; -*/ + + 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, bufSize = input->data.size(); i < bufSize; i++) { + modem_demodulate(demodASK, input->data[i], &demodOutputDataDigital[i]); + } + updateDemodulatorLock(demodASK, 0.005f); } \ No newline at end of file diff --git a/src/modules/modem/digital/ModemBPSK.cpp b/src/modules/modem/digital/ModemBPSK.cpp index b4ce0aa..51dea63 100644 --- a/src/modules/modem/digital/ModemBPSK.cpp +++ b/src/modules/modem/digital/ModemBPSK.cpp @@ -2,7 +2,7 @@ ModemBPSK::ModemBPSK() { demodBPSK = modem_create(LIQUID_MODEM_BPSK); - + } Modem *ModemBPSK::factory() { @@ -14,12 +14,8 @@ ModemBPSK::~ModemBPSK() { } 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; -*/ + for (int i = 0, bufSize=input->data.size(); i < bufSize; i++) { + modem_demodulate(demodBPSK, input->data[i], &demodOutputDataDigital[i]); + } + updateDemodulatorLock(demodBPSK, 0.005f); } \ No newline at end of file diff --git a/src/modules/modem/digital/ModemDPSK.cpp b/src/modules/modem/digital/ModemDPSK.cpp index 3c05329..7a12b3e 100644 --- a/src/modules/modem/digital/ModemDPSK.cpp +++ b/src/modules/modem/digital/ModemDPSK.cpp @@ -28,52 +28,47 @@ ModemDPSK::~ModemDPSK() { } 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; -*/ + + 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, bufSize = input->data.size(); i < bufSize; i++) { + modem_demodulate(demodDPSK, input->data[i], &demodOutputDataDigital[i]); + } + updateDemodulatorLock(demodDPSK, 0.005f); } \ No newline at end of file diff --git a/src/modules/modem/digital/ModemOOK.cpp b/src/modules/modem/digital/ModemOOK.cpp index b8c825b..b8a8025 100644 --- a/src/modules/modem/digital/ModemOOK.cpp +++ b/src/modules/modem/digital/ModemOOK.cpp @@ -13,13 +13,9 @@ ModemOOK::~ModemOOK() { } 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; -*/ + + for (int i = 0, bufSize=input->data.size(); i < bufSize; i++) { + modem_demodulate(demodOOK, input->data[i], &demodOutputDataDigital[i]); + } + updateDemodulatorLock(demodOOK, 0.005f); } \ No newline at end of file diff --git a/src/modules/modem/digital/ModemPSK.cpp b/src/modules/modem/digital/ModemPSK.cpp index 1609d54..33ca3cd 100644 --- a/src/modules/modem/digital/ModemPSK.cpp +++ b/src/modules/modem/digital/ModemPSK.cpp @@ -29,52 +29,47 @@ ModemPSK::~ModemPSK() { } 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; -*/ + + 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, bufSize = input->data.size(); i < bufSize; i++) { + modem_demodulate(demodPSK, input->data[i], &demodOutputDataDigital[i]); + } + updateDemodulatorLock(demodPSK, 0.005f); } \ No newline at end of file diff --git a/src/modules/modem/digital/ModemQAM.cpp b/src/modules/modem/digital/ModemQAM.cpp index d6be0bb..4790cad 100644 --- a/src/modules/modem/digital/ModemQAM.cpp +++ b/src/modules/modem/digital/ModemQAM.cpp @@ -26,52 +26,48 @@ ModemQAM::~ModemQAM() { } 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; -*/ + + + 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, bufSize = input->data.size(); i < bufSize; i++) { + modem_demodulate(demodQAM, input->data[i], &demodOutputDataDigital[i]); + } + updateDemodulatorLock(demodQAM, 0.5f); } diff --git a/src/modules/modem/digital/ModemQPSK.cpp b/src/modules/modem/digital/ModemQPSK.cpp index 50ab626..f316f04 100644 --- a/src/modules/modem/digital/ModemQPSK.cpp +++ b/src/modules/modem/digital/ModemQPSK.cpp @@ -13,13 +13,9 @@ ModemQPSK::~ModemQPSK() { } 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; -*/ + + for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) { + modem_demodulate(demodQPSK, input->data[i], &demodOutputDataDigital[i]); + } + updateDemodulatorLock(demodQPSK, 0.8f); } \ No newline at end of file diff --git a/src/modules/modem/digital/ModemSQAM.cpp b/src/modules/modem/digital/ModemSQAM.cpp index 4dc7045..8c68dff 100644 --- a/src/modules/modem/digital/ModemSQAM.cpp +++ b/src/modules/modem/digital/ModemSQAM.cpp @@ -16,52 +16,47 @@ ModemSQAM::~ModemSQAM() { } 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; -*/ + + 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, bufSize = input->data.size(); i < bufSize; i++) { + modem_demodulate(demodSQAM, input->data[i], &demodOutputDataDigital[i]); + } + updateDemodulatorLock(demodSQAM, 0.005f); } \ No newline at end of file diff --git a/src/modules/modem/digital/ModemST.cpp b/src/modules/modem/digital/ModemST.cpp index 5311352..6091c27 100644 --- a/src/modules/modem/digital/ModemST.cpp +++ b/src/modules/modem/digital/ModemST.cpp @@ -14,14 +14,9 @@ ModemST::~ModemST() { } 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; - -*/ + + for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) { + modem_demodulate(demodST, input->data[i], &demodOutputDataDigital[i]); + } + updateDemodulatorLock(demodST, 0.005f); } \ No newline at end of file