mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2025-09-10 02:37:59 -04:00
updateDemodulatorCons() cleanup
This commit is contained in:
parent
94f94fa7dc
commit
f43abdddaf
@ -2,8 +2,9 @@
|
|||||||
|
|
||||||
ModemDigital::ModemDigital() {
|
ModemDigital::ModemDigital() {
|
||||||
demodulatorCons.store(2);
|
demodulatorCons.store(2);
|
||||||
currentDemodCons = 0;
|
// Reset demodulator Constellations & Lock
|
||||||
currentDemodLock = false;
|
updateDemodulatorCons(0);
|
||||||
|
currentDemodLock.store(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
ModemKit *ModemDigital::buildKit(long long sampleRate, int audioSampleRate) {
|
ModemKit *ModemDigital::buildKit(long long sampleRate, int audioSampleRate) {
|
||||||
@ -23,11 +24,11 @@ void ModemDigital::disposeKit(ModemKit *kit) {
|
|||||||
|
|
||||||
|
|
||||||
void ModemDigital::setDemodulatorLock(bool demod_lock_in) {
|
void ModemDigital::setDemodulatorLock(bool demod_lock_in) {
|
||||||
demod_lock_in ? currentDemodLock = true : currentDemodLock = false;
|
currentDemodLock.store(demod_lock_in);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ModemDigital::getDemodulatorLock() {
|
int ModemDigital::getDemodulatorLock() {
|
||||||
return currentDemodLock;
|
return currentDemodLock.load();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModemDigital::setDemodulatorCons(int demod_cons_in) {
|
void ModemDigital::setDemodulatorCons(int demod_cons_in) {
|
||||||
@ -35,36 +36,36 @@ void ModemDigital::setDemodulatorCons(int demod_cons_in) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int ModemDigital::getDemodulatorCons() {
|
int ModemDigital::getDemodulatorCons() {
|
||||||
return currentDemodCons;
|
return currentDemodCons.load();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModemDigital::updateDemodulatorLock(modem demod, float sensitivity) {
|
void ModemDigital::updateDemodulatorLock(modem mod, float sensitivity) {
|
||||||
modem_get_demodulator_evm(demod) <= sensitivity ? setDemodulatorLock(true) : setDemodulatorLock(false);
|
modem_get_demodulator_evm(mod) <= sensitivity ? setDemodulatorLock(true) : setDemodulatorLock(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModemDigital::updateDemodulatorCons(int Cons) {
|
void ModemDigital::updateDemodulatorCons(int cons) {
|
||||||
if (currentDemodCons != Cons) {
|
if (currentDemodCons.load() != cons) {
|
||||||
currentDemodCons = Cons;
|
currentDemodCons = cons;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ModemDigital::digitalStart(ModemKitDigital *kit, modem mod, ModemIQData *input) {
|
||||||
|
int bufSize = input->data.size();
|
||||||
|
|
||||||
// Demodulate
|
if (demodOutputDataDigital.size() != bufSize) {
|
||||||
/*
|
if (demodOutputDataDigital.capacity() < bufSize) {
|
||||||
// Reset demodulator Constellations & Lock
|
demodOutputDataDigital.reserve(bufSize);
|
||||||
// updateDemodulatorCons(0);
|
}
|
||||||
|
demodOutputDataDigital.resize(bufSize);
|
||||||
|
}
|
||||||
|
|
||||||
{
|
if (demodulatorCons.load() != currentDemodCons.load()) {
|
||||||
switch (demodulatorType.load()) {
|
updateDemodulatorCons(demodulatorCons.load());
|
||||||
// advanced demodulators
|
currentDemodLock.store(false);
|
||||||
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ModemDigital::digitalFinish(ModemKitDigital *kit, modem mod) {
|
||||||
|
demodOutputDataDigital.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
// demodOutputDataDigital.empty();
|
|
||||||
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
@ -14,21 +14,23 @@ public:
|
|||||||
ModemDigital();
|
ModemDigital();
|
||||||
ModemKit *buildKit(long long sampleRate, int audioSampleRate);
|
ModemKit *buildKit(long long sampleRate, int audioSampleRate);
|
||||||
void disposeKit(ModemKit *kit);
|
void disposeKit(ModemKit *kit);
|
||||||
|
void digitalStart(ModemKitDigital *kit, modem mod, ModemIQData *input);
|
||||||
|
void digitalFinish(ModemKitDigital *kit, modem mod);
|
||||||
|
|
||||||
void setDemodulatorLock(bool demod_lock_in);
|
virtual void setDemodulatorLock(bool demod_lock_in);
|
||||||
int getDemodulatorLock();
|
virtual int getDemodulatorLock();
|
||||||
|
|
||||||
void setDemodulatorCons(int demod_cons_in);
|
virtual void setDemodulatorCons(int demod_cons_in);
|
||||||
int getDemodulatorCons();
|
virtual int getDemodulatorCons();
|
||||||
|
|
||||||
void updateDemodulatorCons(int Cons);
|
virtual void updateDemodulatorCons(int cons);
|
||||||
void updateDemodulatorLock(modem demod, float sensitivity);
|
virtual void updateDemodulatorLock(modem mod, float sensitivity);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::vector<unsigned int> demodOutputDataDigital;
|
std::vector<unsigned int> demodOutputDataDigital;
|
||||||
std::atomic_int demodulatorCons;
|
std::atomic_int demodulatorCons;
|
||||||
bool currentDemodLock;
|
std::atomic_bool currentDemodLock;
|
||||||
int currentDemodCons;
|
std::atomic_int currentDemodCons;
|
||||||
|
|
||||||
// std::vector<unsigned int> demodOutputDataDigitalTest;
|
// std::vector<unsigned int> demodOutputDataDigitalTest;
|
||||||
// std::vector<unsigned char> demodOutputSoftbits;
|
// std::vector<unsigned char> demodOutputSoftbits;
|
||||||
|
@ -8,7 +8,9 @@ ModemAPSK::ModemAPSK() {
|
|||||||
demodAPSK64 = modem_create(LIQUID_MODEM_APSK64);
|
demodAPSK64 = modem_create(LIQUID_MODEM_APSK64);
|
||||||
demodAPSK128 = modem_create(LIQUID_MODEM_APSK128);
|
demodAPSK128 = modem_create(LIQUID_MODEM_APSK128);
|
||||||
demodAPSK256 = modem_create(LIQUID_MODEM_APSK256);
|
demodAPSK256 = modem_create(LIQUID_MODEM_APSK256);
|
||||||
demodAPSK = demodAPSK4;
|
demodulatorCons.store(4);
|
||||||
|
currentDemodCons.store(0);
|
||||||
|
updateDemodulatorCons(4);
|
||||||
}
|
}
|
||||||
|
|
||||||
Modem *ModemAPSK::factory() {
|
Modem *ModemAPSK::factory() {
|
||||||
@ -25,47 +27,59 @@ ModemAPSK::~ModemAPSK() {
|
|||||||
modem_destroy(demodAPSK256);
|
modem_destroy(demodAPSK256);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModemAPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
void ModemAPSK::updateDemodulatorCons(int cons) {
|
||||||
switch (demodulatorCons.load()) {
|
if (currentDemodCons.load() != cons) {
|
||||||
case 2:
|
currentDemodCons = cons;
|
||||||
demodAPSK = demodAPSK4;
|
switch (demodulatorCons.load()) {
|
||||||
updateDemodulatorCons(4);
|
case 2:
|
||||||
break;
|
demodAPSK = demodAPSK4;
|
||||||
case 4:
|
updateDemodulatorCons(4);
|
||||||
demodAPSK = demodAPSK4;
|
break;
|
||||||
updateDemodulatorCons(4);
|
case 4:
|
||||||
break;
|
demodAPSK = demodAPSK4;
|
||||||
case 8:
|
updateDemodulatorCons(4);
|
||||||
demodAPSK = demodAPSK8;
|
break;
|
||||||
updateDemodulatorCons(8);
|
case 8:
|
||||||
break;
|
demodAPSK = demodAPSK8;
|
||||||
case 16:
|
updateDemodulatorCons(8);
|
||||||
demodAPSK = demodAPSK16;
|
break;
|
||||||
updateDemodulatorCons(16);
|
case 16:
|
||||||
break;
|
demodAPSK = demodAPSK16;
|
||||||
case 32:
|
updateDemodulatorCons(16);
|
||||||
demodAPSK = demodAPSK32;
|
break;
|
||||||
updateDemodulatorCons(32);
|
case 32:
|
||||||
break;
|
demodAPSK = demodAPSK32;
|
||||||
case 64:
|
updateDemodulatorCons(32);
|
||||||
demodAPSK = demodAPSK64;
|
break;
|
||||||
updateDemodulatorCons(64);
|
case 64:
|
||||||
break;
|
demodAPSK = demodAPSK64;
|
||||||
case 128:
|
updateDemodulatorCons(64);
|
||||||
demodAPSK = demodAPSK128;
|
break;
|
||||||
updateDemodulatorCons(128);
|
case 128:
|
||||||
break;
|
demodAPSK = demodAPSK128;
|
||||||
case 256:
|
updateDemodulatorCons(128);
|
||||||
demodAPSK = demodAPSK256;
|
break;
|
||||||
updateDemodulatorCons(256);
|
case 256:
|
||||||
break;
|
demodAPSK = demodAPSK256;
|
||||||
default:
|
updateDemodulatorCons(256);
|
||||||
demodAPSK = demodAPSK4;
|
break;
|
||||||
break;
|
default:
|
||||||
|
demodAPSK = demodAPSK4;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ModemAPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
||||||
|
ModemKitDigital *dkit = (ModemKitDigital *)kit;
|
||||||
|
|
||||||
|
digitalStart(dkit, demodAPSK, input);
|
||||||
|
|
||||||
for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) {
|
for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) {
|
||||||
modem_demodulate(demodAPSK, input->data[i], &demodOutputDataDigital[i]);
|
modem_demodulate(demodAPSK, input->data[i], &demodOutputDataDigital[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
updateDemodulatorLock(demodAPSK, 0.005f);
|
updateDemodulatorLock(demodAPSK, 0.005f);
|
||||||
|
|
||||||
|
digitalFinish(dkit, demodAPSK);
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ public:
|
|||||||
ModemAPSK();
|
ModemAPSK();
|
||||||
~ModemAPSK();
|
~ModemAPSK();
|
||||||
Modem *factory();
|
Modem *factory();
|
||||||
|
void updateDemodulatorCons(int cons);
|
||||||
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -10,6 +10,9 @@ ModemASK::ModemASK() {
|
|||||||
demodASK128 = modem_create(LIQUID_MODEM_ASK128);
|
demodASK128 = modem_create(LIQUID_MODEM_ASK128);
|
||||||
demodASK256 = modem_create(LIQUID_MODEM_ASK256);
|
demodASK256 = modem_create(LIQUID_MODEM_ASK256);
|
||||||
demodASK = demodASK2;
|
demodASK = demodASK2;
|
||||||
|
demodulatorCons.store(2);
|
||||||
|
currentDemodCons.store(0);
|
||||||
|
updateDemodulatorCons(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
Modem *ModemASK::factory() {
|
Modem *ModemASK::factory() {
|
||||||
@ -26,7 +29,15 @@ ModemASK::~ModemASK() {
|
|||||||
modem_destroy(demodASK256);
|
modem_destroy(demodASK256);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ModemASK::updateDemodulatorCons(int cons) {
|
||||||
|
if (currentDemodCons.load() != cons) {
|
||||||
|
currentDemodCons = cons;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ModemASK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
void ModemASK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
||||||
|
ModemKitDigital *dkit = (ModemKitDigital *)kit;
|
||||||
|
|
||||||
switch (demodulatorCons.load()) {
|
switch (demodulatorCons.load()) {
|
||||||
case 2:
|
case 2:
|
||||||
@ -66,8 +77,12 @@ void ModemASK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *a
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
digitalStart(dkit, demodASK, input);
|
||||||
|
|
||||||
for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) {
|
for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) {
|
||||||
modem_demodulate(demodASK, input->data[i], &demodOutputDataDigital[i]);
|
modem_demodulate(demodASK, input->data[i], &demodOutputDataDigital[i]);
|
||||||
}
|
}
|
||||||
updateDemodulatorLock(demodASK, 0.005f);
|
updateDemodulatorLock(demodASK, 0.005f);
|
||||||
|
|
||||||
|
digitalFinish(dkit, demodASK);
|
||||||
}
|
}
|
@ -6,6 +6,7 @@ public:
|
|||||||
ModemASK();
|
ModemASK();
|
||||||
~ModemASK();
|
~ModemASK();
|
||||||
Modem *factory();
|
Modem *factory();
|
||||||
|
void updateDemodulatorCons(int cons);
|
||||||
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
ModemBPSK::ModemBPSK() {
|
ModemBPSK::ModemBPSK() {
|
||||||
demodBPSK = modem_create(LIQUID_MODEM_BPSK);
|
demodBPSK = modem_create(LIQUID_MODEM_BPSK);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Modem *ModemBPSK::factory() {
|
Modem *ModemBPSK::factory() {
|
||||||
@ -13,9 +12,20 @@ ModemBPSK::~ModemBPSK() {
|
|||||||
modem_destroy(demodBPSK);
|
modem_destroy(demodBPSK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ModemBPSK::updateDemodulatorCons(int cons) {
|
||||||
|
if (currentDemodCons.load() != cons) {
|
||||||
|
currentDemodCons = cons;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ModemBPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
void ModemBPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
||||||
|
ModemKitDigital *dkit = (ModemKitDigital *)kit;
|
||||||
|
digitalStart(dkit, demodBPSK, input);
|
||||||
|
|
||||||
for (int i = 0, bufSize=input->data.size(); i < bufSize; i++) {
|
for (int i = 0, bufSize=input->data.size(); i < bufSize; i++) {
|
||||||
modem_demodulate(demodBPSK, input->data[i], &demodOutputDataDigital[i]);
|
modem_demodulate(demodBPSK, input->data[i], &demodOutputDataDigital[i]);
|
||||||
}
|
}
|
||||||
updateDemodulatorLock(demodBPSK, 0.005f);
|
updateDemodulatorLock(demodBPSK, 0.005f);
|
||||||
|
|
||||||
|
digitalFinish(dkit, demodBPSK);
|
||||||
}
|
}
|
@ -6,6 +6,7 @@ public:
|
|||||||
ModemBPSK();
|
ModemBPSK();
|
||||||
~ModemBPSK();
|
~ModemBPSK();
|
||||||
Modem *factory();
|
Modem *factory();
|
||||||
|
void updateDemodulatorCons(int cons);
|
||||||
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -9,7 +9,9 @@ ModemDPSK::ModemDPSK() {
|
|||||||
demodDPSK64 = modem_create(LIQUID_MODEM_DPSK64);
|
demodDPSK64 = modem_create(LIQUID_MODEM_DPSK64);
|
||||||
demodDPSK128 = modem_create(LIQUID_MODEM_DPSK128);
|
demodDPSK128 = modem_create(LIQUID_MODEM_DPSK128);
|
||||||
demodDPSK256 = modem_create(LIQUID_MODEM_DPSK256);
|
demodDPSK256 = modem_create(LIQUID_MODEM_DPSK256);
|
||||||
demodDPSK = demodDPSK2;
|
demodulatorCons.store(2);
|
||||||
|
currentDemodCons.store(0);
|
||||||
|
updateDemodulatorCons(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
Modem *ModemDPSK::factory() {
|
Modem *ModemDPSK::factory() {
|
||||||
@ -27,48 +29,59 @@ ModemDPSK::~ModemDPSK() {
|
|||||||
modem_destroy(demodDPSK256);
|
modem_destroy(demodDPSK256);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModemDPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
void ModemDPSK::updateDemodulatorCons(int cons) {
|
||||||
|
if (currentDemodCons.load() != cons) {
|
||||||
|
currentDemodCons = cons;
|
||||||
|
|
||||||
switch (demodulatorCons.load()) {
|
switch (demodulatorCons.load()) {
|
||||||
case 2:
|
case 2:
|
||||||
demodDPSK = demodDPSK2;
|
demodDPSK = demodDPSK2;
|
||||||
updateDemodulatorCons(2);
|
updateDemodulatorCons(2);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
demodDPSK = demodDPSK4;
|
demodDPSK = demodDPSK4;
|
||||||
updateDemodulatorCons(4);
|
updateDemodulatorCons(4);
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
demodDPSK = demodDPSK8;
|
demodDPSK = demodDPSK8;
|
||||||
updateDemodulatorCons(8);
|
updateDemodulatorCons(8);
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
demodDPSK = demodDPSK16;
|
demodDPSK = demodDPSK16;
|
||||||
updateDemodulatorCons(16);
|
updateDemodulatorCons(16);
|
||||||
break;
|
break;
|
||||||
case 32:
|
case 32:
|
||||||
demodDPSK = demodDPSK32;
|
demodDPSK = demodDPSK32;
|
||||||
updateDemodulatorCons(32);
|
updateDemodulatorCons(32);
|
||||||
break;
|
break;
|
||||||
case 64:
|
case 64:
|
||||||
demodDPSK = demodDPSK64;
|
demodDPSK = demodDPSK64;
|
||||||
updateDemodulatorCons(64);
|
updateDemodulatorCons(64);
|
||||||
break;
|
break;
|
||||||
case 128:
|
case 128:
|
||||||
demodDPSK = demodDPSK128;
|
demodDPSK = demodDPSK128;
|
||||||
updateDemodulatorCons(128);
|
updateDemodulatorCons(128);
|
||||||
break;
|
break;
|
||||||
case 256:
|
case 256:
|
||||||
demodDPSK = demodDPSK256;
|
demodDPSK = demodDPSK256;
|
||||||
updateDemodulatorCons(256);
|
updateDemodulatorCons(256);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
demodDPSK = demodDPSK2;
|
demodDPSK = demodDPSK2;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ModemDPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
||||||
|
ModemKitDigital *dkit = (ModemKitDigital *)kit;
|
||||||
|
|
||||||
|
digitalStart(dkit, demodDPSK, input);
|
||||||
|
|
||||||
for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) {
|
for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) {
|
||||||
modem_demodulate(demodDPSK, input->data[i], &demodOutputDataDigital[i]);
|
modem_demodulate(demodDPSK, input->data[i], &demodOutputDataDigital[i]);
|
||||||
}
|
}
|
||||||
updateDemodulatorLock(demodDPSK, 0.005f);
|
updateDemodulatorLock(demodDPSK, 0.005f);
|
||||||
|
|
||||||
|
digitalFinish(dkit, demodDPSK);
|
||||||
}
|
}
|
@ -6,6 +6,7 @@ public:
|
|||||||
ModemDPSK();
|
ModemDPSK();
|
||||||
~ModemDPSK();
|
~ModemDPSK();
|
||||||
Modem *factory();
|
Modem *factory();
|
||||||
|
void updateDemodulatorCons(int cons);
|
||||||
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -12,10 +12,21 @@ ModemOOK::~ModemOOK() {
|
|||||||
modem_destroy(demodOOK);
|
modem_destroy(demodOOK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ModemOOK::updateDemodulatorCons(int cons) {
|
||||||
|
if (currentDemodCons.load() != cons) {
|
||||||
|
currentDemodCons = cons;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ModemOOK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
void ModemOOK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
||||||
|
ModemKitDigital *dkit = (ModemKitDigital *)kit;
|
||||||
|
digitalStart(dkit, demodOOK, input);
|
||||||
|
|
||||||
for (int i = 0, bufSize=input->data.size(); i < bufSize; i++) {
|
for (int i = 0, bufSize=input->data.size(); i < bufSize; i++) {
|
||||||
modem_demodulate(demodOOK, input->data[i], &demodOutputDataDigital[i]);
|
modem_demodulate(demodOOK, input->data[i], &demodOutputDataDigital[i]);
|
||||||
}
|
}
|
||||||
updateDemodulatorLock(demodOOK, 0.005f);
|
updateDemodulatorLock(demodOOK, 0.005f);
|
||||||
|
|
||||||
|
digitalFinish(dkit, demodOOK);
|
||||||
}
|
}
|
@ -6,6 +6,7 @@ public:
|
|||||||
ModemOOK();
|
ModemOOK();
|
||||||
~ModemOOK();
|
~ModemOOK();
|
||||||
Modem *factory();
|
Modem *factory();
|
||||||
|
void updateDemodulatorCons(int cons);
|
||||||
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -9,7 +9,9 @@ ModemPSK::ModemPSK() {
|
|||||||
demodPSK64 = modem_create(LIQUID_MODEM_PSK64);
|
demodPSK64 = modem_create(LIQUID_MODEM_PSK64);
|
||||||
demodPSK128 = modem_create(LIQUID_MODEM_PSK128);
|
demodPSK128 = modem_create(LIQUID_MODEM_PSK128);
|
||||||
demodPSK256 = modem_create(LIQUID_MODEM_PSK256);
|
demodPSK256 = modem_create(LIQUID_MODEM_PSK256);
|
||||||
demodPSK = demodPSK2;
|
demodulatorCons.store(2);
|
||||||
|
currentDemodCons.store(0);
|
||||||
|
updateDemodulatorCons(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
Modem *ModemPSK::factory() {
|
Modem *ModemPSK::factory() {
|
||||||
@ -27,48 +29,59 @@ ModemPSK::~ModemPSK() {
|
|||||||
modem_destroy(demodPSK256);
|
modem_destroy(demodPSK256);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModemPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
void ModemPSK::updateDemodulatorCons(int cons) {
|
||||||
|
if (currentDemodCons.load() != cons) {
|
||||||
|
currentDemodCons = cons;
|
||||||
|
|
||||||
switch (demodulatorCons.load()) {
|
switch (demodulatorCons.load()) {
|
||||||
case 2:
|
case 2:
|
||||||
demodPSK = demodPSK2;
|
demodPSK = demodPSK2;
|
||||||
updateDemodulatorCons(2);
|
updateDemodulatorCons(2);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
demodPSK = demodPSK4;
|
demodPSK = demodPSK4;
|
||||||
updateDemodulatorCons(4);
|
updateDemodulatorCons(4);
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
demodPSK = demodPSK8;
|
demodPSK = demodPSK8;
|
||||||
updateDemodulatorCons(8);
|
updateDemodulatorCons(8);
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
demodPSK = demodPSK16;
|
demodPSK = demodPSK16;
|
||||||
updateDemodulatorCons(16);
|
updateDemodulatorCons(16);
|
||||||
break;
|
break;
|
||||||
case 32:
|
case 32:
|
||||||
demodPSK = demodPSK32;
|
demodPSK = demodPSK32;
|
||||||
updateDemodulatorCons(32);
|
updateDemodulatorCons(32);
|
||||||
break;
|
break;
|
||||||
case 64:
|
case 64:
|
||||||
demodPSK = demodPSK64;
|
demodPSK = demodPSK64;
|
||||||
updateDemodulatorCons(64);
|
updateDemodulatorCons(64);
|
||||||
break;
|
break;
|
||||||
case 128:
|
case 128:
|
||||||
demodPSK = demodPSK128;
|
demodPSK = demodPSK128;
|
||||||
updateDemodulatorCons(128);
|
updateDemodulatorCons(128);
|
||||||
break;
|
break;
|
||||||
case 256:
|
case 256:
|
||||||
demodPSK = demodPSK256;
|
demodPSK = demodPSK256;
|
||||||
updateDemodulatorCons(256);
|
updateDemodulatorCons(256);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
demodPSK = demodPSK2;
|
demodPSK = demodPSK2;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ModemPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
||||||
|
ModemKitDigital *dkit = (ModemKitDigital *)kit;
|
||||||
|
|
||||||
|
digitalStart(dkit, demodPSK, input);
|
||||||
|
|
||||||
for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) {
|
for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) {
|
||||||
modem_demodulate(demodPSK, input->data[i], &demodOutputDataDigital[i]);
|
modem_demodulate(demodPSK, input->data[i], &demodOutputDataDigital[i]);
|
||||||
}
|
}
|
||||||
updateDemodulatorLock(demodPSK, 0.005f);
|
updateDemodulatorLock(demodPSK, 0.005f);
|
||||||
|
|
||||||
|
digitalFinish(dkit, demodPSK);
|
||||||
}
|
}
|
@ -6,6 +6,7 @@ public:
|
|||||||
ModemPSK();
|
ModemPSK();
|
||||||
~ModemPSK();
|
~ModemPSK();
|
||||||
Modem *factory();
|
Modem *factory();
|
||||||
|
void updateDemodulatorCons(int cons);
|
||||||
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -8,7 +8,9 @@ ModemQAM::ModemQAM() {
|
|||||||
demodQAM64 = modem_create(LIQUID_MODEM_QAM64);
|
demodQAM64 = modem_create(LIQUID_MODEM_QAM64);
|
||||||
demodQAM128 = modem_create(LIQUID_MODEM_QAM128);
|
demodQAM128 = modem_create(LIQUID_MODEM_QAM128);
|
||||||
demodQAM256 = modem_create(LIQUID_MODEM_QAM256);
|
demodQAM256 = modem_create(LIQUID_MODEM_QAM256);
|
||||||
demodQAM = demodQAM4;
|
demodulatorCons.store(4);
|
||||||
|
currentDemodCons.store(0);
|
||||||
|
updateDemodulatorCons(4);
|
||||||
}
|
}
|
||||||
|
|
||||||
Modem *ModemQAM::factory() {
|
Modem *ModemQAM::factory() {
|
||||||
@ -25,49 +27,58 @@ ModemQAM::~ModemQAM() {
|
|||||||
modem_destroy(demodQAM256);
|
modem_destroy(demodQAM256);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModemQAM::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
void ModemQAM::updateDemodulatorCons(int cons) {
|
||||||
|
if (currentDemodCons.load() != cons) {
|
||||||
|
currentDemodCons = cons;
|
||||||
|
|
||||||
|
switch (demodulatorCons.load()) {
|
||||||
switch (demodulatorCons.load()) {
|
case 2:
|
||||||
case 2:
|
demodQAM = demodQAM4;
|
||||||
demodQAM = demodQAM4;
|
updateDemodulatorCons(4);
|
||||||
updateDemodulatorCons(4);
|
break;
|
||||||
break;
|
case 4:
|
||||||
case 4:
|
demodQAM = demodQAM4;
|
||||||
demodQAM = demodQAM4;
|
updateDemodulatorCons(4);
|
||||||
updateDemodulatorCons(4);
|
break;
|
||||||
break;
|
case 8:
|
||||||
case 8:
|
demodQAM = demodQAM8;
|
||||||
demodQAM = demodQAM8;
|
updateDemodulatorCons(8);
|
||||||
updateDemodulatorCons(8);
|
break;
|
||||||
break;
|
case 16:
|
||||||
case 16:
|
demodQAM = demodQAM16;
|
||||||
demodQAM = demodQAM16;
|
updateDemodulatorCons(16);
|
||||||
updateDemodulatorCons(16);
|
break;
|
||||||
break;
|
case 32:
|
||||||
case 32:
|
demodQAM = demodQAM32;
|
||||||
demodQAM = demodQAM32;
|
updateDemodulatorCons(32);
|
||||||
updateDemodulatorCons(32);
|
break;
|
||||||
break;
|
case 64:
|
||||||
case 64:
|
demodQAM = demodQAM64;
|
||||||
demodQAM = demodQAM64;
|
updateDemodulatorCons(64);
|
||||||
updateDemodulatorCons(64);
|
break;
|
||||||
break;
|
case 128:
|
||||||
case 128:
|
demodQAM = demodQAM128;
|
||||||
demodQAM = demodQAM128;
|
updateDemodulatorCons(128);
|
||||||
updateDemodulatorCons(128);
|
break;
|
||||||
break;
|
case 256:
|
||||||
case 256:
|
demodQAM = demodQAM256;
|
||||||
demodQAM = demodQAM256;
|
updateDemodulatorCons(256);
|
||||||
updateDemodulatorCons(256);
|
break;
|
||||||
break;
|
default:
|
||||||
default:
|
demodQAM = demodQAM4;
|
||||||
demodQAM = demodQAM4;
|
break;
|
||||||
break;
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ModemQAM::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
||||||
|
ModemKitDigital *dkit = (ModemKitDigital *)kit;
|
||||||
|
digitalStart(dkit, demodQAM, input);
|
||||||
|
|
||||||
for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) {
|
for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) {
|
||||||
modem_demodulate(demodQAM, input->data[i], &demodOutputDataDigital[i]);
|
modem_demodulate(demodQAM, input->data[i], &demodOutputDataDigital[i]);
|
||||||
}
|
}
|
||||||
updateDemodulatorLock(demodQAM, 0.5f);
|
updateDemodulatorLock(demodQAM, 0.5f);
|
||||||
|
|
||||||
|
digitalFinish(dkit, demodQAM);
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ public:
|
|||||||
ModemQAM();
|
ModemQAM();
|
||||||
~ModemQAM();
|
~ModemQAM();
|
||||||
Modem *factory();
|
Modem *factory();
|
||||||
|
void updateDemodulatorCons(int cons);
|
||||||
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -12,10 +12,20 @@ ModemQPSK::~ModemQPSK() {
|
|||||||
modem_destroy(demodQPSK);
|
modem_destroy(demodQPSK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ModemQPSK::updateDemodulatorCons(int cons) {
|
||||||
|
if (currentDemodCons.load() != cons) {
|
||||||
|
currentDemodCons = cons;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ModemQPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
void ModemQPSK::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
||||||
|
ModemKitDigital *dkit = (ModemKitDigital *)kit;
|
||||||
|
digitalStart(dkit, demodQPSK, input);
|
||||||
|
|
||||||
for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) {
|
for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) {
|
||||||
modem_demodulate(demodQPSK, input->data[i], &demodOutputDataDigital[i]);
|
modem_demodulate(demodQPSK, input->data[i], &demodOutputDataDigital[i]);
|
||||||
}
|
}
|
||||||
updateDemodulatorLock(demodQPSK, 0.8f);
|
updateDemodulatorLock(demodQPSK, 0.8f);
|
||||||
|
|
||||||
|
digitalFinish(dkit, demodQPSK);
|
||||||
}
|
}
|
@ -6,6 +6,7 @@ public:
|
|||||||
ModemQPSK();
|
ModemQPSK();
|
||||||
~ModemQPSK();
|
~ModemQPSK();
|
||||||
Modem *factory();
|
Modem *factory();
|
||||||
|
void updateDemodulatorCons(int cons);
|
||||||
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -3,7 +3,9 @@
|
|||||||
ModemSQAM::ModemSQAM() {
|
ModemSQAM::ModemSQAM() {
|
||||||
demodSQAM32 = modem_create(LIQUID_MODEM_SQAM32);
|
demodSQAM32 = modem_create(LIQUID_MODEM_SQAM32);
|
||||||
demodSQAM128 = modem_create(LIQUID_MODEM_SQAM128);
|
demodSQAM128 = modem_create(LIQUID_MODEM_SQAM128);
|
||||||
demodSQAM = demodSQAM32;
|
demodulatorCons.store(32);
|
||||||
|
currentDemodCons.store(0);
|
||||||
|
updateDemodulatorCons(32);
|
||||||
}
|
}
|
||||||
|
|
||||||
Modem *ModemSQAM::factory() {
|
Modem *ModemSQAM::factory() {
|
||||||
@ -15,48 +17,59 @@ ModemSQAM::~ModemSQAM() {
|
|||||||
modem_destroy(demodSQAM128);
|
modem_destroy(demodSQAM128);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModemSQAM::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
void ModemSQAM::updateDemodulatorCons(int cons) {
|
||||||
|
if (currentDemodCons.load() != cons) {
|
||||||
|
currentDemodCons = cons;
|
||||||
|
|
||||||
switch (demodulatorCons.load()) {
|
switch (demodulatorCons.load()) {
|
||||||
case 2:
|
case 2:
|
||||||
demodSQAM = demodSQAM32;
|
demodSQAM = demodSQAM32;
|
||||||
updateDemodulatorCons(32);
|
updateDemodulatorCons(32);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
demodSQAM = demodSQAM32;
|
demodSQAM = demodSQAM32;
|
||||||
updateDemodulatorCons(32);
|
updateDemodulatorCons(32);
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
demodSQAM = demodSQAM32;
|
demodSQAM = demodSQAM32;
|
||||||
updateDemodulatorCons(32);
|
updateDemodulatorCons(32);
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
demodSQAM = demodSQAM32;
|
demodSQAM = demodSQAM32;
|
||||||
updateDemodulatorCons(32);
|
updateDemodulatorCons(32);
|
||||||
break;
|
break;
|
||||||
case 32:
|
case 32:
|
||||||
demodSQAM = demodSQAM32;
|
demodSQAM = demodSQAM32;
|
||||||
updateDemodulatorCons(32);
|
updateDemodulatorCons(32);
|
||||||
break;
|
break;
|
||||||
case 64:
|
case 64:
|
||||||
demodSQAM = demodSQAM32;
|
demodSQAM = demodSQAM32;
|
||||||
updateDemodulatorCons(32);
|
updateDemodulatorCons(32);
|
||||||
break;
|
break;
|
||||||
case 128:
|
case 128:
|
||||||
demodSQAM = demodSQAM128;
|
demodSQAM = demodSQAM128;
|
||||||
updateDemodulatorCons(128);
|
updateDemodulatorCons(128);
|
||||||
break;
|
break;
|
||||||
case 256:
|
case 256:
|
||||||
demodSQAM = demodSQAM128;
|
demodSQAM = demodSQAM128;
|
||||||
updateDemodulatorCons(128);
|
updateDemodulatorCons(128);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
demodSQAM = demodSQAM32;
|
demodSQAM = demodSQAM32;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ModemSQAM::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
||||||
|
ModemKitDigital *dkit = (ModemKitDigital *)kit;
|
||||||
|
|
||||||
|
digitalStart(dkit, demodSQAM, input);
|
||||||
|
|
||||||
for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) {
|
for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) {
|
||||||
modem_demodulate(demodSQAM, input->data[i], &demodOutputDataDigital[i]);
|
modem_demodulate(demodSQAM, input->data[i], &demodOutputDataDigital[i]);
|
||||||
}
|
}
|
||||||
updateDemodulatorLock(demodSQAM, 0.005f);
|
updateDemodulatorLock(demodSQAM, 0.005f);
|
||||||
|
|
||||||
|
digitalFinish(dkit, demodSQAM);
|
||||||
}
|
}
|
@ -6,6 +6,7 @@ public:
|
|||||||
ModemSQAM();
|
ModemSQAM();
|
||||||
~ModemSQAM();
|
~ModemSQAM();
|
||||||
Modem *factory();
|
Modem *factory();
|
||||||
|
void updateDemodulatorCons(int cons);
|
||||||
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -12,10 +12,20 @@ ModemST::~ModemST() {
|
|||||||
modem_destroy(demodST);
|
modem_destroy(demodST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ModemST::updateDemodulatorCons(int cons) {
|
||||||
|
if (currentDemodCons.load() != cons) {
|
||||||
|
currentDemodCons = cons;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ModemST::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
void ModemST::demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut) {
|
||||||
|
ModemKitDigital *dkit = (ModemKitDigital *)kit;
|
||||||
|
digitalStart(dkit, demodST, input);
|
||||||
|
|
||||||
for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) {
|
for (int i = 0, bufSize = input->data.size(); i < bufSize; i++) {
|
||||||
modem_demodulate(demodST, input->data[i], &demodOutputDataDigital[i]);
|
modem_demodulate(demodST, input->data[i], &demodOutputDataDigital[i]);
|
||||||
}
|
}
|
||||||
updateDemodulatorLock(demodST, 0.005f);
|
updateDemodulatorLock(demodST, 0.005f);
|
||||||
|
|
||||||
|
digitalFinish(dkit, demodST);
|
||||||
}
|
}
|
@ -6,6 +6,7 @@ public:
|
|||||||
ModemST();
|
ModemST();
|
||||||
~ModemST();
|
~ModemST();
|
||||||
Modem *factory();
|
Modem *factory();
|
||||||
|
void updateDemodulatorCons(int cons);
|
||||||
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
void demodulate(ModemKit *kit, ModemIQData *input, AudioThreadInput *audioOut);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user