diff --git a/src/AppFrame.cpp b/src/AppFrame.cpp index beb457f..85aaaf6 100644 --- a/src/AppFrame.cpp +++ b/src/AppFrame.cpp @@ -94,8 +94,9 @@ AppFrame::AppFrame() : demodModeSelectorAdv->setHelpTip("Choose advanced modulation types."); demodTray->Add(demodModeSelectorAdv, 3, wxEXPAND | wxALL, 0); + modemPropertiesUpdated.store(false); modemProps = new ModemProperties(demodPanel, wxID_ANY); - demodTray->Add(modemProps, 10, wxEXPAND | wxALL, 0); + demodTray->Add(modemProps, 15, wxEXPAND | wxALL, 0); #endif wxGetApp().getDemodSpectrumProcessor()->setup(1024); @@ -1046,6 +1047,10 @@ void AppFrame::OnIdle(wxIdleEvent& event) { wproc->setCenterFrequency(waterfallCanvas->getCenterFrequency()); wxGetApp().getSDRPostThread()->setIQVisualRange(waterfallCanvas->getCenterFrequency(), waterfallCanvas->getBandwidth()); + if (modemPropertiesUpdated.load()) { + modemProps->initProperties(newModemArgs); + modemPropertiesUpdated.store(false); + } // waterfallCanvas->processInputQueue(); // waterfallCanvas->Refresh(); // demodWaterfallCanvas->processInputQueue(); @@ -1246,3 +1251,8 @@ FFTVisualDataThread *AppFrame::getWaterfallDataThread() { return waterfallDataThread; } +void AppFrame::updateModemProperties(ModemArgInfoList args) { + newModemArgs = args; + modemPropertiesUpdated.store(true); +} + diff --git a/src/AppFrame.h b/src/AppFrame.h index 3700579..454b5e4 100644 --- a/src/AppFrame.h +++ b/src/AppFrame.h @@ -68,6 +68,8 @@ public: FFTVisualDataThread *getWaterfallDataThread(); + void updateModemProperties(ModemArgInfoList args); + private: void OnMenu(wxCommandEvent& event); void OnClose(wxCloseEvent& event); @@ -123,6 +125,8 @@ private: std::atomic_bool deviceChanged; ModemProperties *modemProps; + std::atomic_bool modemPropertiesUpdated; + ModemArgInfoList newModemArgs; wxDECLARE_EVENT_TABLE(); }; diff --git a/src/ModemProperties.cpp b/src/ModemProperties.cpp index 07485f9..ec46160 100644 --- a/src/ModemProperties.cpp +++ b/src/ModemProperties.cpp @@ -9,7 +9,7 @@ ModemProperties::ModemProperties(wxWindow *parent, wxWindowID winid, bSizer = new wxBoxSizer( wxVERTICAL ); - bSizer->Add(m_propertyGrid, wxEXPAND ); + bSizer->Add(m_propertyGrid, 1, wxEXPAND | wxALL, 5); this->SetSizer(bSizer); } diff --git a/src/demod/DemodulatorWorkerThread.cpp b/src/demod/DemodulatorWorkerThread.cpp index fcf4276..03aac69 100644 --- a/src/demod/DemodulatorWorkerThread.cpp +++ b/src/demod/DemodulatorWorkerThread.cpp @@ -1,5 +1,6 @@ #include "DemodulatorWorkerThread.h" #include "CubicSDRDefs.h" +#include "CubicSDR.h" #include DemodulatorWorkerThread::DemodulatorWorkerThread() : IOThread(), @@ -52,6 +53,7 @@ void DemodulatorWorkerThread::run() { cModem = Modem::makeModem(demodCommand.demodType); cModemType = demodCommand.demodType; result.sampleRate = demodCommand.sampleRate; + wxGetApp().getAppFrame()->updateModemProperties(cModem->getSettings()); } result.modem = cModem;