diff --git a/plugins/samplesink/limesdroutput/CMakeLists.txt b/plugins/samplesink/limesdroutput/CMakeLists.txt index c6de9456c..8b92052e2 100644 --- a/plugins/samplesink/limesdroutput/CMakeLists.txt +++ b/plugins/samplesink/limesdroutput/CMakeLists.txt @@ -26,6 +26,7 @@ if (BUILD_DEBIAN) include_directories( . ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_SOURCE_DIR}/swagger/sdrangel/code/qt5/client ${CMAKE_SOURCE_DIR}/devices ${LIBLIMESUITESRC}/src ${LIBLIMESUITESRC}/src/ADF4002 @@ -41,6 +42,7 @@ else (BUILD_DEBIAN) include_directories( . ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_SOURCE_DIR}/swagger/sdrangel/code/qt5/client ${CMAKE_SOURCE_DIR}/devices ${LIMESUITE_INCLUDE_DIR} ) @@ -66,6 +68,7 @@ target_link_libraries(outputlimesdr limesuite sdrbase sdrgui + swagger limesdrdevice ) else (BUILD_DEBIAN) @@ -74,6 +77,7 @@ target_link_libraries(outputlimesdr ${LIMESUITE_LIBRARY} sdrbase sdrgui + swagger limesdrdevice ) endif (BUILD_DEBIAN) diff --git a/plugins/samplesink/limesdroutput/limesdroutput.cpp b/plugins/samplesink/limesdroutput/limesdroutput.cpp index 79a72463b..c9a1568ed 100644 --- a/plugins/samplesink/limesdroutput/limesdroutput.cpp +++ b/plugins/samplesink/limesdroutput/limesdroutput.cpp @@ -20,6 +20,9 @@ #include #include "lime/LimeSuite.h" +#include "SWGDeviceSettings.h" +#include "SWGLimeSdrOutputSettings.h" + #include "device/devicesourceapi.h" #include "device/devicesinkapi.h" #include "dsp/dspcommands.h" @@ -1022,3 +1025,55 @@ bool LimeSDROutput::applySettings(const LimeSDROutputSettings& settings, bool fo return true; } +int LimeSDROutput::webapiSettingsGet( + SWGSDRangel::SWGDeviceSettings& response, + QString& errorMessage __attribute__((unused))) +{ + response.setLimeSdrOutputSettings(new SWGSDRangel::SWGLimeSdrOutputSettings()); + response.getLimeSdrOutputSettings()->setAntennaPath((int) m_settings.m_antennaPath); + response.getLimeSdrOutputSettings()->setCenterFrequency(m_settings.m_centerFrequency); + response.getLimeSdrOutputSettings()->setDevSampleRate(m_settings.m_devSampleRate); + response.getLimeSdrOutputSettings()->setExtClock(m_settings.m_extClock ? 1 : 0); + response.getLimeSdrOutputSettings()->setExtClockFreq(m_settings.m_extClockFreq); + response.getLimeSdrOutputSettings()->setGain(m_settings.m_gain); + response.getLimeSdrOutputSettings()->setLog2HardInterp(m_settings.m_log2HardInterp); + response.getLimeSdrOutputSettings()->setLog2SoftInterp(m_settings.m_log2SoftInterp); + response.getLimeSdrOutputSettings()->setLpfBw(m_settings.m_lpfBW); + response.getLimeSdrOutputSettings()->setLpfFirEnable(m_settings.m_lpfFIREnable ? 1 : 0); + response.getLimeSdrOutputSettings()->setLpfFirbw(m_settings.m_lpfFIRBW); + response.getLimeSdrOutputSettings()->setNcoEnable(m_settings.m_ncoEnable ? 1 : 0); + response.getLimeSdrOutputSettings()->setNcoFrequency(m_settings.m_ncoFrequency); + return 200; +} + +int LimeSDROutput::webapiSettingsPutPatch( + bool force, + SWGSDRangel::SWGDeviceSettings& response, // query + response + QString& errorMessage __attribute__((unused))) +{ + LimeSDROutputSettings settings; + settings.m_antennaPath = (LimeSDROutputSettings::PathRFE) response.getLimeSdrOutputSettings()->getAntennaPath(); + settings.m_centerFrequency = response.getLimeSdrOutputSettings()->getCenterFrequency(); + settings.m_devSampleRate = response.getLimeSdrOutputSettings()->getDevSampleRate(); + settings.m_extClock = response.getLimeSdrOutputSettings()->getExtClock() != 0; + settings.m_extClockFreq = response.getLimeSdrOutputSettings()->getExtClockFreq(); + settings.m_gain = response.getLimeSdrOutputSettings()->getGain(); + settings.m_log2HardInterp = response.getLimeSdrOutputSettings()->getLog2HardInterp(); + settings.m_log2SoftInterp = response.getLimeSdrOutputSettings()->getLog2SoftInterp(); + settings.m_lpfBW = response.getLimeSdrOutputSettings()->getLpfBw(); + settings.m_lpfFIREnable = response.getLimeSdrOutputSettings()->getLpfFirEnable() != 0; + settings.m_lpfFIRBW = response.getLimeSdrOutputSettings()->getLpfFirbw(); + settings.m_ncoEnable = response.getLimeSdrOutputSettings()->getNcoEnable() != 0; + settings.m_ncoFrequency = response.getLimeSdrOutputSettings()->getNcoFrequency(); + + MsgConfigureLimeSDR *msg = MsgConfigureLimeSDR::create(settings, force); + m_inputMessageQueue.push(msg); + + if (m_guiMessageQueue) // forward to GUI if any + { + MsgConfigureLimeSDR *msgToGUI = MsgConfigureLimeSDR::create(settings, force); + m_guiMessageQueue->push(msgToGUI); + } + + return 200; +} diff --git a/plugins/samplesink/limesdroutput/limesdroutput.h b/plugins/samplesink/limesdroutput/limesdroutput.h index 7b3999f14..238174f26 100644 --- a/plugins/samplesink/limesdroutput/limesdroutput.h +++ b/plugins/samplesink/limesdroutput/limesdroutput.h @@ -178,6 +178,15 @@ public: virtual bool handleMessage(const Message& message); + virtual int webapiSettingsGet( + SWGSDRangel::SWGDeviceSettings& response, + QString& errorMessage); + + virtual int webapiSettingsPutPatch( + bool force, + SWGSDRangel::SWGDeviceSettings& response, // query + response + QString& errorMessage); + std::size_t getChannelIndex(); void getLORange(float& minF, float& maxF, float& stepF) const; void getSRRange(float& minF, float& maxF, float& stepF) const; diff --git a/plugins/samplesink/limesdroutput/limesdroutput.pro b/plugins/samplesink/limesdroutput/limesdroutput.pro index d1bff8379..0ef177a0e 100644 --- a/plugins/samplesink/limesdroutput/limesdroutput.pro +++ b/plugins/samplesink/limesdroutput/limesdroutput.pro @@ -23,6 +23,7 @@ CONFIG(MINGW64):LIBLIMESUITESRC = "D:\softs\LimeSuite" INCLUDEPATH += $$PWD INCLUDEPATH += ../../../sdrbase INCLUDEPATH += ../../../sdrgui +INCLUDEPATH += ../../../swagger/sdrangel/code/qt5/client INCLUDEPATH += ../../../devices INCLUDEPATH += ../../../liblimesuite/srcmw INCLUDEPATH += $$LIBLIMESUITESRC/src @@ -55,6 +56,7 @@ FORMS += limesdroutputgui.ui LIBS += -L../../../sdrbase/$${build_subdir} -lsdrbase LIBS += -L../../../sdrgui/$${build_subdir} -lsdrgui +LIBS += -L../../../swagger/$${build_subdir} -lswagger LIBS += -L../../../liblimesuite/$${build_subdir} -lliblimesuite LIBS += -L../../../devices/$${build_subdir} -ldevices diff --git a/plugins/samplesink/limesdroutput/limesdroutputgui.cpp b/plugins/samplesink/limesdroutput/limesdroutputgui.cpp index bd14badf7..71e121501 100644 --- a/plugins/samplesink/limesdroutput/limesdroutputgui.cpp +++ b/plugins/samplesink/limesdroutput/limesdroutputgui.cpp @@ -241,6 +241,14 @@ void LimeSDROutputGUI::handleInputMessages() delete message; } + else if (LimeSDROutput::MsgConfigureLimeSDR::match(*message)) + { + const LimeSDROutput::MsgConfigureLimeSDR& cfg = (LimeSDROutput::MsgConfigureLimeSDR&) *message; + m_settings = cfg.getSettings(); + displaySettings(); + + delete message; + } else { if (handleMessage(*message)) {