diff --git a/app/main.cpp b/app/main.cpp index 78d2eeb60..e2610a494 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -27,7 +27,7 @@ #include "mainwindow.h" #include "dsp/dsptypes.h" #ifdef _MSC_VER -#define GIT_COMMIT_HASH_STR "v4.7.2" +#define GIT_COMMIT_HASH_STR "v4.8.0" #else #include "sdrangel_version.h" #endif diff --git a/debian/changelog b/debian/changelog index 5e071ce9a..304a22e44 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +sdrangel (4.8.0-1) unstable; urgency=medium + + * Local output plugin + + -- Edouard Griffiths, F4EXB Fri, 10 May 2019 20:44:06 +0100 + sdrangel (4.7.2-1) unstable; urgency=medium * Unique DeviceAPI interface for sources and sinks diff --git a/doc/img/LocalOutput_plugin.png b/doc/img/LocalOutput_plugin.png new file mode 100644 index 000000000..8e9ecf750 Binary files /dev/null and b/doc/img/LocalOutput_plugin.png differ diff --git a/doc/img/LocalOutput_plugin.xcf b/doc/img/LocalOutput_plugin.xcf new file mode 100644 index 000000000..4c519f507 Binary files /dev/null and b/doc/img/LocalOutput_plugin.xcf differ diff --git a/doc/img/LocalSource.png b/doc/img/LocalSource.png new file mode 100644 index 000000000..440ed57d8 Binary files /dev/null and b/doc/img/LocalSource.png differ diff --git a/doc/img/LocalSource.xcf b/doc/img/LocalSource.xcf new file mode 100644 index 000000000..74bcc2fba Binary files /dev/null and b/doc/img/LocalSource.xcf differ diff --git a/plugins/channeltx/localsource/localsource.pro b/plugins/channeltx/localsource/localsource.pro new file mode 100644 index 000000000..33d25f77b --- /dev/null +++ b/plugins/channeltx/localsource/localsource.pro @@ -0,0 +1,52 @@ +#-------------------------------------------------------- +# +# Pro file for Android and Windows builds with Qt Creator +# +#-------------------------------------------------------- + +TEMPLATE = lib +CONFIG += plugin + +QT += core gui widgets multimedia network opengl + +TARGET = localsource + +INCLUDEPATH += $$PWD +INCLUDEPATH += ../../../exports +INCLUDEPATH += ../../../sdrbase +INCLUDEPATH += ../../../sdrgui +INCLUDEPATH += ../../../swagger/sdrangel/code/qt5/client +macx:INCLUDEPATH += /opt/local/include + +CONFIG(Release):build_subdir = release +CONFIG(Debug):build_subdir = debug + +CONFIG(MINGW32):INCLUDEPATH += "C:\softs\boost_1_66_0" +CONFIG(MSVC):INCLUDEPATH += "C:\softs\boost_1_66_0" +CONFIG(macx):INCLUDEPATH += "../../../../../boost_1_69_0" + +SOURCES += localsource.cpp\ + localsourcegui.cpp\ + localsourcesettings.cpp\ + localsourceplugin.cpp\ + localsourcethread.cpp + +HEADERS += localsource.h\ + localsourcegui.h\ + localsourcesettings.h\ + localsourceplugin.h\ + localsourcethread.h + +FORMS += localsourcegui.ui + +LIBS += -L../../../sdrbase/$${build_subdir} -lsdrbase +LIBS += -L../../../sdrgui/$${build_subdir} -lsdrgui +LIBS += -L../../../swagger/$${build_subdir} -lswagger + +macx { + QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/ +} + +RESOURCES = ../../../sdrgui/resources/res.qrc + +CONFIG(MINGW32):DEFINES += USE_INTERNAL_TIMER=1 diff --git a/plugins/channeltx/localsource/localsourcesettings.cpp b/plugins/channeltx/localsource/localsourcesettings.cpp index 4c9eeaee2..ff6427ba4 100644 --- a/plugins/channeltx/localsource/localsourcesettings.cpp +++ b/plugins/channeltx/localsource/localsourcesettings.cpp @@ -32,7 +32,7 @@ void LocalSourceSettings::resetToDefaults() { m_localDeviceIndex = 0; m_rgbColor = QColor(140, 4, 4).rgb(); - m_title = "Local sink"; + m_title = "Local Source"; m_log2Interp = 0; m_filterChainHash = 0; m_channelMarker = nullptr; diff --git a/plugins/channeltx/localsource/readme.md b/plugins/channeltx/localsource/readme.md new file mode 100644 index 000000000..1259484da --- /dev/null +++ b/plugins/channeltx/localsource/readme.md @@ -0,0 +1,49 @@ +

Local source channel plugin

+ +

Introduction

+ +This plugin draws I/Q samples from a Local Output plugin device sink in another device set into the baseband. It is basically the same as the Remote Source channel plugin but pipes the samples internally instead of receiving them over the network. + +It may be used when you want to use a particular sub area of the baseband for madulation. + +Note that because it uses only the channelizer half band filter chain to achieve interpolation and center frequency shift you have a limited choice on the center frequencies that may be used (similarly to the Remote Source). The available center frequencies depend on the baseband sample rate, the channel interpolation and the filter chain that is used so you have to play with these parameters to obtain a suitable center frequency and pass band. + +

Interface

+ +![Local source channel plugin GUI](../../../doc/img/LocalSource.png) + +

1: Interpolation factor

+ +The device baseband can be interpolated from the channel and its center can be selected with (5). The resulting sample rate of the I/Q stream pulled from the Local Output device sink is the baseband sample rate divided by this value. The value is displayed in (2). + +

2: I/Q stream sample rate

+ +This is the sample rate in kS/s of the I/Q stream pulled from the Local Output device sink instance. + +

3: Half-band filters chain sequence

+ +This string represents the sequence of half-band filters used in the interpolation. Each character represents a filter type: + + - **L**: lower half-band + - **H**: higher half-band + - **C**: centered + +

4: Center frequency shift

+ +This is the shift of the channel center frequency from the device center frequency. Its value is driven by the device sample rate, the interpolation (1) and the filter chain sequence (5). + +

5: Half-band filter chain sequence

+ +The slider moves the channel center frequency roughly from the lower to the higher frequency in the device baseband. The number on the right represents the filter sequence as the decimal value of a base 3 number. Each base 3 digit represents the filter type and its sequence from MSB to LSB in the filter chain: + + - **0**: lower half-band + - **1**: centered + - **2**: higher half-band + +

6: Local Output source index

+ +This selects the index of the Local Output device sink from which to pull the I/Q samples. The list can be refreshed with the next button (7) + +

7: Refresh local output devices list

+ +Use this button to refresh the list of Local Output device sinks indexes. diff --git a/plugins/samplesink/localoutput/localoutput.pro b/plugins/samplesink/localoutput/localoutput.pro new file mode 100644 index 000000000..655d2872a --- /dev/null +++ b/plugins/samplesink/localoutput/localoutput.pro @@ -0,0 +1,51 @@ +#-------------------------------------------------------- +# +# Pro file for Windows builds with Qt Creator +# +#-------------------------------------------------------- + +TEMPLATE = lib +CONFIG += plugin + +QT += core gui widgets multimedia network opengl + +TARGET = outputlocal + +INCLUDEPATH += $$PWD +INCLUDEPATH += ../../../exports +INCLUDEPATH += ../../../sdrbase +INCLUDEPATH += ../../../sdrgui +INCLUDEPATH += ../../../swagger/sdrangel/code/qt5/client +macx:INCLUDEPATH += /opt/local/include + +CONFIG(Release):build_subdir = release +CONFIG(Debug):build_subdir = debug + +CONFIG(MINGW32):INCLUDEPATH += "C:\softs\boost_1_66_0" +CONFIG(MSVC):INCLUDEPATH += "C:\softs\boost_1_66_0" +CONFIG(macx):INCLUDEPATH += "../../../boost_1_69_0" + +SOURCES += localoutputgui.cpp\ +localoutput.cpp\ +localoutputsettings.cpp\ +localoutputplugin.cpp + +HEADERS += localoutputgui.h\ +localoutput.h\ +localoutputsettings.h\ +localoutputplugin.h + +FORMS += localoutputgui.ui + +LIBS += -L../../../sdrbase/$${build_subdir} -lsdrbase +LIBS += -L../../../sdrgui/$${build_subdir} -lsdrgui +LIBS += -L../../../swagger/$${build_subdir} -lswagger + +macx { + QMAKE_LFLAGS_SONAME = -Wl,-install_name,@rpath/ +} + +RESOURCES = ../../../sdrgui/resources/res.qrc + +CONFIG(MINGW32):DEFINES += USE_INTERNAL_TIMER=1 + diff --git a/plugins/samplesink/localoutput/localoutputgui.ui b/plugins/samplesink/localoutput/localoutputgui.ui index 9baffb313..e610cdb76 100644 --- a/plugins/samplesink/localoutput/localoutputgui.ui +++ b/plugins/samplesink/localoutput/localoutputgui.ui @@ -65,20 +65,6 @@ - - - - Toggle record I/Q samples from device - - - - - - - :/record_off.png:/record_off.png - - - diff --git a/plugins/samplesink/localoutput/readme.md b/plugins/samplesink/localoutput/readme.md new file mode 100644 index 000000000..a25993a3d --- /dev/null +++ b/plugins/samplesink/localoutput/readme.md @@ -0,0 +1,24 @@ +

Local output plugin

+ +

Introduction

+ +This output sample sink plugin sends its samples to a Local Source channel in another device set. + +

Interface

+ +![SDR Local output plugin GUI](../../../doc/img/LocalOutput_plugin.png) + +

1: Start/Stop

+ +Device start / stop button. + + - Blue triangle icon: device is ready and can be started + - Green square icon: device is running and can be stopped + +

2: Frequency

+ +This is the center frequency in Hz sent from the Local Source channel instance and corresponds to the center frequency of transmission. The sub kHz value (000 to 999 Hz) is represented in smaller digits on the right. + +

3: Stream sample rate

+ +Stream I/Q sample rate in kS/s diff --git a/sdrangel.windows.pro b/sdrangel.windows.pro index c1d1d6b0e..90fd79942 100644 --- a/sdrangel.windows.pro +++ b/sdrangel.windows.pro @@ -48,6 +48,7 @@ SUBDIRS += plugins/samplesink/bladerf2output SUBDIRS += plugins/samplesink/hackrfoutput SUBDIRS += plugins/samplesink/limesdroutput SUBDIRS += plugins/samplesink/plutosdroutput +SUBDIRS += plugins/samplesink/localoutput CONFIG(MSVC):SUBDIRS += plugins/samplesink/remoteoutput CONFIG(MSVC):SUBDIRS += plugins/samplesink/soapysdroutput SUBDIRS += plugins/channelrx/chanalyzer @@ -68,6 +69,7 @@ SUBDIRS += plugins/channeltx/modnfm SUBDIRS += plugins/channeltx/modssb SUBDIRS += plugins/channeltx/modwfm SUBDIRS += plugins/channeltx/udpsource +SUBDIRS += plugins/channeltx/localsource # Main app must be last SUBDIRS += app