From 0a0e7db24249bd9e28b41b8bdd460f19f981372e Mon Sep 17 00:00:00 2001 From: corne lukken Date: Wed, 3 Jun 2015 11:23:16 +0200 Subject: [PATCH] deModulators selections --- src/AppFrame.cpp | 10 +++++++- src/AppFrame.h | 1 - src/demod/DemodulatorThread.cpp | 12 ++++++++++ src/demod/DemodulatorThread.h | 10 ++++++++ src/visual/PrimaryGLContext.cpp | 41 +++++++++++++++++++++++++++++++++ 5 files changed, 72 insertions(+), 2 deletions(-) diff --git a/src/AppFrame.cpp b/src/AppFrame.cpp index 9538e00..2ecc57c 100644 --- a/src/AppFrame.cpp +++ b/src/AppFrame.cpp @@ -72,6 +72,7 @@ AppFrame::AppFrame() : demodModeSelectoradv->addChoice(DEMOD_TYPE_SQAM, "SQAM"); demodModeSelectoradv->addChoice(DEMOD_TYPE_QAM, "QAM"); demodModeSelectoradv->addChoice(DEMOD_TYPE_QPSK, "QPSK"); + demodModeSelectoradv->setSelection(DEMOD_TYPE_ASK); demodModeSelectoradv->setHelpTip("Choose advanced modulation types."); demodTray->Add(demodModeSelectoradv, 3, wxEXPAND | wxALL, 0); @@ -491,6 +492,7 @@ void AppFrame::OnIdle(wxIdleEvent& event) { outputDeviceMenuItems[outputDevice]->Check(true); int dType = demod->getDemodulatorType(); demodModeSelector->setSelection(dType); + demodModeSelectoradv->setSelection(dType); } if (demodWaterfallCanvas->getDragState() == WaterfallCanvas::WF_DRAG_NONE) { long long centerFreq = demod->getFrequency(); @@ -518,8 +520,14 @@ void AppFrame::OnIdle(wxIdleEvent& event) { demodSpectrumCanvas->setCenterFrequency(centerFreq); } int dSelection = demodModeSelector->getSelection(); + int dSelectionadv = demodModeSelectoradv->getSelection(); if (dSelection != -1 && dSelection != demod->getDemodulatorType()) { demod->setDemodulatorType(dSelection); + demodModeSelectoradv->setSelection(-1); + } + else if(dSelectionadv != -1 && dSelectionadv != demod->getDemodulatorType()) { + demod->setDemodulatorType(dSelectionadv); + demodModeSelector->setSelection(-1); } demodWaterfallCanvas->setBandwidth(demodBw); @@ -538,7 +546,7 @@ void AppFrame::OnIdle(wxIdleEvent& event) { } else { DemodulatorMgr *mgr = &wxGetApp().getDemodMgr(); - int dSelection = demodModeSelector->getSelection(); + int dSelection = demodModeSelectoradv->getSelection(); if (dSelection != -1 && dSelection != mgr->getLastDemodulatorType()) { mgr->setLastDemodulatorType(dSelection); } diff --git a/src/AppFrame.h b/src/AppFrame.h index 39911d1..36b6264 100644 --- a/src/AppFrame.h +++ b/src/AppFrame.h @@ -63,7 +63,6 @@ private: WaterfallCanvas *waterfallCanvas; ModeSelectorCanvas *demodModeSelector; ModeSelectorCanvas *demodModeSelectoradv; - ModeSelectorCanvas *demodModeSelectoradv2; SpectrumCanvas *demodSpectrumCanvas; WaterfallCanvas *demodWaterfallCanvas; MeterCanvas *demodSignalMeter; diff --git a/src/demod/DemodulatorThread.cpp b/src/demod/DemodulatorThread.cpp index a14f8e2..a616987 100644 --- a/src/demod/DemodulatorThread.cpp +++ b/src/demod/DemodulatorThread.cpp @@ -24,6 +24,18 @@ DemodulatorThread::DemodulatorThread(DemodulatorThreadPostInputQueue* iqInputQue demodAM_DSB = ampmodem_create(0.5, 0.0, LIQUID_AMPMODEM_DSB, 1); demodAM_DSB_CSP = ampmodem_create(0.5, 0.0, LIQUID_AMPMODEM_DSB, 0); demodAM = demodAM_DSB_CSP; + + // advanced demodulators + demodASK = modem_create(LIQUID_MODEM_ASK2); + demodAPSK = modem_create(LIQUID_MODEM_APSK4); + demodBPSK = modem_create(LIQUID_MODEM_BPSK); + demodDPSK = modem_create(LIQUID_MODEM_DPSK4); + demodPSK = modem_create(LIQUID_MODEM_PSK2); + demodOOK = modem_create(LIQUID_MODEM_OOK); + demodSQAM = modem_create(LIQUID_MODEM_SQAM32); + demodST = modem_create(LIQUID_MODEM_V29); + demodQAM = modem_create(LIQUID_MODEM_QAM4); + demodQPSK = modem_create(LIQUID_MODEM_QPSK); } DemodulatorThread::~DemodulatorThread() { diff --git a/src/demod/DemodulatorThread.h b/src/demod/DemodulatorThread.h index f9d013b..0f113a5 100644 --- a/src/demod/DemodulatorThread.h +++ b/src/demod/DemodulatorThread.h @@ -65,6 +65,16 @@ protected: ampmodem demodAM_DSB; ampmodem demodAM_LSB; ampmodem demodAM_USB; + modem demodASK; + modem demodAPSK; + modem demodBPSK; + modem demodDPSK; + modem demodPSK; + modem demodOOK; + modem demodSQAM; + modem demodST; + modem demodQAM; + modem demodQPSK; agc_crcf iqAutoGain; diff --git a/src/visual/PrimaryGLContext.cpp b/src/visual/PrimaryGLContext.cpp index 74a406a..f50cfdd 100644 --- a/src/visual/PrimaryGLContext.cpp +++ b/src/visual/PrimaryGLContext.cpp @@ -263,6 +263,47 @@ void PrimaryGLContext::DrawDemod(DemodulatorInstance *demod, RGBColor color, lon demodAlign = GLFont::GLFONT_ALIGN_LEFT; uxPos += xOfs; break; + // advanced demodulators start here + case DEMOD_TYPE_ASK: + demodStr = "ASK"; + demodAlign = GLFont::GLFONT_ALIGN_CENTER; + break; + case DEMOD_TYPE_APSK: + demodStr = "APSK"; + demodAlign = GLFont::GLFONT_ALIGN_CENTER; + break; + case DEMOD_TYPE_BPSK: + demodStr = "BPSK"; + demodAlign = GLFont::GLFONT_ALIGN_CENTER; + break; + case DEMOD_TYPE_DPSK: + demodStr = "DPSK"; + demodAlign = GLFont::GLFONT_ALIGN_CENTER; + break; + case DEMOD_TYPE_PSK: + demodStr = "PSK"; + demodAlign = GLFont::GLFONT_ALIGN_CENTER; + break; + case DEMOD_TYPE_OOK: + demodStr = "OOK"; + demodAlign = GLFont::GLFONT_ALIGN_CENTER; + break; + case DEMOD_TYPE_SQAM: + demodStr = "SQAM"; + demodAlign = GLFont::GLFONT_ALIGN_CENTER; + break; + case DEMOD_TYPE_ST: + demodStr = "ST"; + demodAlign = GLFont::GLFONT_ALIGN_CENTER; + break; + case DEMOD_TYPE_QAM: + demodStr = "QAM"; + demodAlign = GLFont::GLFONT_ALIGN_CENTER; + break; + case DEMOD_TYPE_QPSK: + demodStr = "QPSK"; + demodAlign = GLFont::GLFONT_ALIGN_CENTER; + break; } glColor3f(0, 0, 0);