From 3e31a8b23bf445b7fdfd89fcd28905cd3e75e22b Mon Sep 17 00:00:00 2001 From: f4exb Date: Tue, 29 May 2018 20:27:36 +0200 Subject: [PATCH] Server: added PlutoSDR input plugin --- .../plutosdrinput/plutosdrinput.h | 1 + .../plutosdrinput/plutosdrinputgui.h | 3 +- .../plutosdrinput/plutosdrinputplugin.cpp | 18 ++++- pluginssrv/samplesource/CMakeLists.txt | 6 ++ .../samplesource/plutosdrinput/CMakeLists.txt | 66 +++++++++++++++++++ swagger/sdrangel/examples/rx_test.py | 1 + 6 files changed, 91 insertions(+), 4 deletions(-) create mode 100644 pluginssrv/samplesource/plutosdrinput/CMakeLists.txt diff --git a/plugins/samplesource/plutosdrinput/plutosdrinput.h b/plugins/samplesource/plutosdrinput/plutosdrinput.h index 16e3e9acb..a2191f755 100644 --- a/plugins/samplesource/plutosdrinput/plutosdrinput.h +++ b/plugins/samplesource/plutosdrinput/plutosdrinput.h @@ -24,6 +24,7 @@ #include #include "util/message.h" #include "plutosdr/deviceplutosdrshared.h" +#include "plutosdr/deviceplutosdrbox.h" #include "plutosdrinputsettings.h" class DeviceSourceAPI; diff --git a/plugins/samplesource/plutosdrinput/plutosdrinputgui.h b/plugins/samplesource/plutosdrinput/plutosdrinputgui.h index 3e2c622db..0c5cba146 100644 --- a/plugins/samplesource/plutosdrinput/plutosdrinputgui.h +++ b/plugins/samplesource/plutosdrinput/plutosdrinputgui.h @@ -17,13 +17,14 @@ #ifndef PLUGINS_SAMPLESOURCE_PLUTOSDRINPUT_PLUTOSDRINPUTGUI_H_ #define PLUGINS_SAMPLESOURCE_PLUTOSDRINPUT_PLUTOSDRINPUTGUI_H_ -#include #include #include #include #include "util/messagequeue.h" +#include "plugin/plugininstancegui.h" +#include "plutosdrinput.h" #include "plutosdrinputsettings.h" class DeviceSampleSource; diff --git a/plugins/samplesource/plutosdrinput/plutosdrinputplugin.cpp b/plugins/samplesource/plutosdrinput/plutosdrinputplugin.cpp index 93e14c5ba..1fb15bfc6 100644 --- a/plugins/samplesource/plutosdrinput/plutosdrinputplugin.cpp +++ b/plugins/samplesource/plutosdrinput/plutosdrinputplugin.cpp @@ -15,20 +15,22 @@ /////////////////////////////////////////////////////////////////////////////////// #include -#include #include "plugin/pluginapi.h" #include "plutosdr/deviceplutosdr.h" -#include "plutosdrinputgui.h" +#ifdef SERVER_MODE #include "plutosdrinput.h" +#else +#include "plutosdrinputgui.h" +#endif #include "plutosdrinputplugin.h" class DeviceSourceAPI; const PluginDescriptor PlutoSDRInputPlugin::m_pluginDescriptor = { QString("PlutoSDR Input"), - QString("3.14.6"), + QString("4.0.0"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, @@ -85,6 +87,15 @@ PluginInterface::SamplingDevices PlutoSDRInputPlugin::enumSampleSources() return result; } +#ifdef SERVER_MODE +PluginInstanceGUI* PlutoSDRInputPlugin::createSampleSourcePluginInstanceGUI( + const QString& sourceId __attribute__((unused)), + QWidget **widget __attribute__((unused)), + DeviceUISet *deviceUISet __attribute__((unused))) +{ + return 0; +} +#else PluginInstanceGUI* PlutoSDRInputPlugin::createSampleSourcePluginInstanceGUI( const QString& sourceId, QWidget **widget, @@ -101,6 +112,7 @@ PluginInstanceGUI* PlutoSDRInputPlugin::createSampleSourcePluginInstanceGUI( return 0; } } +#endif DeviceSampleSource *PlutoSDRInputPlugin::createSampleSourcePluginInstanceInput(const QString& sourceId, DeviceSourceAPI *deviceAPI) { diff --git a/pluginssrv/samplesource/CMakeLists.txt b/pluginssrv/samplesource/CMakeLists.txt index 4262445ce..58dcd79d3 100644 --- a/pluginssrv/samplesource/CMakeLists.txt +++ b/pluginssrv/samplesource/CMakeLists.txt @@ -53,6 +53,11 @@ if(LIBUSB_FOUND AND RX_SAMPLE_24BIT AND LIBPERSEUS_FOUND) add_subdirectory(perseus) endif(LIBUSB_FOUND AND RX_SAMPLE_24BIT AND LIBPERSEUS_FOUND) +find_package(LibIIO) +if(LIBUSB_FOUND AND LIBIIO_FOUND) + add_subdirectory(plutosdrinput) +endif(LIBUSB_FOUND AND LIBIIO_FOUND) + find_package(LibRTLSDR) if(LIBUSB_FOUND AND LIBRTLSDR_FOUND) add_subdirectory(rtlsdr) @@ -64,6 +69,7 @@ if (BUILD_DEBIAN) add_subdirectory(hackrfinput) add_subdirectory(limesdrinput) add_subdirectory(perseus) + add_subdirectory(plutosdrinput) add_subdirectory(rtlsdr) endif (BUILD_DEBIAN) diff --git a/pluginssrv/samplesource/plutosdrinput/CMakeLists.txt b/pluginssrv/samplesource/plutosdrinput/CMakeLists.txt new file mode 100644 index 000000000..c56037df4 --- /dev/null +++ b/pluginssrv/samplesource/plutosdrinput/CMakeLists.txt @@ -0,0 +1,66 @@ +project(plutosdrinput) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") +set(PLUGIN_PREFIX "../../../plugins/samplesource/plutosdrinput") + +set(plutosdrinput_SOURCES + ${PLUGIN_PREFIX}/plutosdrinput.cpp + ${PLUGIN_PREFIX}/plutosdrinputplugin.cpp + ${PLUGIN_PREFIX}/plutosdrinputsettings.cpp + ${PLUGIN_PREFIX}/plutosdrinputthread.cpp +) + +set(plutosdrinput_HEADERS + ${PLUGIN_PREFIX}/plutosdrinput.h + ${PLUGIN_PREFIX}/plutosdrinputplugin.h + ${PLUGIN_PREFIX}/plutosdrinputsettings.h + ${PLUGIN_PREFIX}/plutosdrinputthread.h +) + +if (BUILD_DEBIAN) +include_directories( + . + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_SOURCE_DIR}/swagger/sdrangel/code/qt5/client + ${CMAKE_SOURCE_DIR}/devices + ${LIBIIOSRC} +) +else (BUILD_DEBIAN) +include_directories( + . + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_SOURCE_DIR}/swagger/sdrangel/code/qt5/client + ${CMAKE_SOURCE_DIR}/devices + ${LIBIIO_INCLUDE_DIR} +) +endif (BUILD_DEBIAN) + +add_definitions(-DQT_PLUGIN) +add_definitions(-DQT_SHARED) + +add_library(inputplutosdrsrv SHARED + ${plutosdrinput_SOURCES} + ${plutosdrinput_HEADERS_MOC} +) + +if (BUILD_DEBIAN) +target_link_libraries(inputplutosdrsrv + ${QT_LIBRARIES} + iio + sdrbase + swagger + plutosdrdevice +) +else (BUILD_DEBIAN) +target_link_libraries(inputplutosdrsrv + ${QT_LIBRARIES} + ${LIBIIO_LIBRARIES} + sdrbase + swagger + plutosdrdevice +) +endif (BUILD_DEBIAN) + +qt5_use_modules(inputplutosdrsrv Core) + +install(TARGETS inputplutosdrsrv DESTINATION lib/plugins/samplesource) diff --git a/swagger/sdrangel/examples/rx_test.py b/swagger/sdrangel/examples/rx_test.py index 80033bbd6..ae2fbf696 100755 --- a/swagger/sdrangel/examples/rx_test.py +++ b/swagger/sdrangel/examples/rx_test.py @@ -186,6 +186,7 @@ def setupDevice(deviceset_url, options): settings['plutoSdrInputSettings']['fcPos'] = options.fc_pos settings['plutoSdrInputSettings']['dcBlock'] = options.fc_pos == 2 settings['plutoSdrInputSettings']['iqImbalance'] = options.fc_pos == 2 + settings['plutoSdrInputSettings']['LOppmTenths'] = int(options.lo_ppm * 10) # in tenths of PPM elif options.device_hwid == "RTLSDR": settings['rtlSdrSettings']['devSampleRate'] = options.sample_rate*1000 settings['rtlSdrSettings']['centerFrequency'] = options.device_freq*1000