diff --git a/src/AppFrame.cpp b/src/AppFrame.cpp index 85aaaf6..98106a2 100644 --- a/src/AppFrame.cpp +++ b/src/AppFrame.cpp @@ -856,6 +856,8 @@ void AppFrame::OnIdle(wxIdleEvent& event) { demodModeSelectorAdv->setSelection(dType); #endif demodMuteButton->setSelection(demod->isMuted()?1:-1); + newModemArgs = demod->getModemArgs(); + modemPropertiesUpdated.store(true); } if (demodWaterfallCanvas->getDragState() == WaterfallCanvas::WF_DRAG_NONE) { long long centerFreq = demod->getFrequency(); diff --git a/src/demod/DemodulatorInstance.cpp b/src/demod/DemodulatorInstance.cpp index 33c5832..1866c4b 100644 --- a/src/demod/DemodulatorInstance.cpp +++ b/src/demod/DemodulatorInstance.cpp @@ -330,3 +330,30 @@ void DemodulatorInstance::setMuted(bool muted) { DemodulatorThreadInputQueue *DemodulatorInstance::getIQInputDataPipe() { return pipeIQInputData; } + +ModemArgInfoList DemodulatorInstance::getModemArgs() { + Modem *m = demodulatorPreThread->getModem(); + + ModemArgInfoList args; + if (m != nullptr) { + args = m->getSettings(); + } + return args; +} + +std::string DemodulatorInstance::readModemSetting(std::string setting) { + Modem *m = demodulatorPreThread->getModem(); + + if (m) { + return m->readSetting(setting); + } + return ""; +} + +void DemodulatorInstance::writeModemSetting(std::string setting, std::string value) { + Modem *m = demodulatorPreThread->getModem(); + + if (m) { + m->writeSetting(setting, value); + } +} diff --git a/src/demod/DemodulatorInstance.h b/src/demod/DemodulatorInstance.h index 58801ae..4b0e86f 100644 --- a/src/demod/DemodulatorInstance.h +++ b/src/demod/DemodulatorInstance.h @@ -82,6 +82,10 @@ public: DemodulatorThreadInputQueue *getIQInputDataPipe(); + ModemArgInfoList getModemArgs(); + std::string readModemSetting(std::string setting); + void writeModemSetting(std::string setting, std::string value); + protected: DemodulatorThreadInputQueue* pipeIQInputData; DemodulatorThreadPostInputQueue* pipeIQDemodData;