From ef1e9c2b257a9ed13ea6f9158a75c838d01dd980 Mon Sep 17 00:00:00 2001 From: f4exb Date: Tue, 9 Oct 2018 23:15:59 +0200 Subject: [PATCH] File source: added documentation. Bumped version --- Readme.md | 2 +- app/main.cpp | 2 +- appbench/main.cpp | 2 +- appsrv/main.cpp | 2 +- debian/changelog | 4 +- doc/img/FileSource_plugin.png | Bin 0 -> 22810 bytes doc/img/FileSource_plugin.xcf | Bin 0 -> 98617 bytes .../bladerf2output/bladerf2outputplugin.cpp | 2 +- .../bladerf2input/bladerf2inputplugin.cpp | 2 +- .../filesource/filesourceplugin.cpp | 2 +- plugins/samplesource/filesource/readme.md | 106 ++++++++++++++++++ 11 files changed, 115 insertions(+), 9 deletions(-) create mode 100644 doc/img/FileSource_plugin.png create mode 100644 doc/img/FileSource_plugin.xcf create mode 100644 plugins/samplesource/filesource/readme.md diff --git a/Readme.md b/Readme.md index 49919f2c7..90d3fa11c 100644 --- a/Readme.md +++ b/Readme.md @@ -263,7 +263,7 @@ This is the `demoddsd` plugin. At present it can be used to decode the following It is based on the [DSDcc](https://github.com/f4exb/dsdcc) C++ library which is a rewrite of the original [DSD](https://github.com/szechyjs/dsd) program. So you will need to have DSDcc installed in your system. Please follow instructions in [DSDcc readme](https://github.com/f4exb/dsdcc/blob/master/Readme.md) to build and install DSDcc. If you install it in a custom location say `/opt/install/dsdcc` you will need to add these defines to the cmake command: `-DLIBDSDCC_INCLUDE_DIR=/opt/install/dsdcc/include/dsdcc -DLIBDSDCC_LIBRARIES=/opt/install/dsdcc/lib/libdsdcc.so` -If you have one or more serial devices interfacing the AMBE3000 chip in packet mode you can use them to decode AMBE voice frames. For that purpose you will need to compile with [SerialDV](https://github.com/f4exb/serialDV) support. Please refer to this project Readme.md to compile and install SerialDV. If you install it in a custom location say `/opt/install/serialdv` you will need to add these defines to the cmake command: `-DLIBSERIALDV_INCLUDE_DIR=/opt/install/serialdv/include/serialdv -DLIBSERIALDV_LIBRARY=/opt/install/serialdv/lib/libserialdv.so` Also your user must be a member of group `dialout` to be able to use the dongle. +If you have one or more serial devices interfacing the AMBE3000 chip in packet mode you can use them to decode AMBE voice frames. For that purpose you will need to compile with [SerialDV](https://github.com/f4exb/serialDV) support. Please refer to this project Readme.md to compile and install SerialDV. If you install it in a custom location say `/opt/install/serialdv` you will need to add these defines to the cmake command: `-DLIBSERIALDV_INCLUDE_DIR=/opt/install/serialdv/include/serialdv -DLIBSERIALDV_LIBRARY=/opt/install/serialdv/lib/libserialdv.so` Also your user must be a member of group `dialout` (Ubuntu/Debian) or `uucp` (Arch) to be able to use the dongle. Although such serial devices work with a serial interface at 400 kb in practice maybe for other reasons they are capable of handling only one conversation at a time. The software will allocate the device dynamically to a conversation with an inactivity timeout of 1 second so that conversations do not get interrupted constantly making the audio output too choppy. In practice you will have to have as many devices connected to your system as the number of conversations you would like to be handled in parallel. diff --git a/app/main.cpp b/app/main.cpp index 464499d50..a0fddcdf5 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -35,7 +35,7 @@ static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *lo */ QCoreApplication::setOrganizationName("f4exb"); QCoreApplication::setApplicationName("SDRangel"); - QCoreApplication::setApplicationVersion("4.2.0"); + QCoreApplication::setApplicationVersion("4.2.1"); #if 1 qApp->setStyle(QStyleFactory::create("fusion")); diff --git a/appbench/main.cpp b/appbench/main.cpp index 61eca0e2b..0ec5d274a 100644 --- a/appbench/main.cpp +++ b/appbench/main.cpp @@ -57,7 +57,7 @@ static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *lo QCoreApplication::setOrganizationName("f4exb"); QCoreApplication::setApplicationName("SDRangelBench"); - QCoreApplication::setApplicationVersion("4.2.0"); + QCoreApplication::setApplicationVersion("4.2.1"); int catchSignals[] = {SIGQUIT, SIGINT, SIGTERM, SIGHUP}; std::vector vsig(catchSignals, catchSignals + sizeof(catchSignals) / sizeof(int)); diff --git a/appsrv/main.cpp b/appsrv/main.cpp index 6230ef960..8141b79ea 100644 --- a/appsrv/main.cpp +++ b/appsrv/main.cpp @@ -56,7 +56,7 @@ static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *lo QCoreApplication::setOrganizationName("f4exb"); QCoreApplication::setApplicationName("SDRangelSrv"); - QCoreApplication::setApplicationVersion("4.2.0"); + QCoreApplication::setApplicationVersion("4.2.1"); int catchSignals[] = {SIGQUIT, SIGINT, SIGTERM, SIGHUP}; std::vector vsig(catchSignals, catchSignals + sizeof(catchSignals) / sizeof(int)); diff --git a/debian/changelog b/debian/changelog index 4d864899b..a977768c6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,9 @@ sdrangel (4.2.1-1) unstable; urgency=medium * FileRecord improvement with robust header and some fixes. Fixes issue #206 - * BladeRF2 MO Tx fix so that the two channels are used effectively + * BladeRF2 MO Tx fix so that the two channels are used effectively. Fixes issue #225 - -- Edouard Griffiths, F4EXB Sun, 14 Oct 2018 21:14:18 +0200 + -- Edouard Griffiths, F4EXB Wed, 10 Oct 2018 21:14:18 +0200 sdrangel (4.2.0-1) unstable; urgency=medium diff --git a/doc/img/FileSource_plugin.png b/doc/img/FileSource_plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..3f45840f9eed598069c9b78c647541e15a5d2512 GIT binary patch literal 22810 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 literal 0 HcmV?d00001 diff --git a/doc/img/FileSource_plugin.xcf b/doc/img/FileSource_plugin.xcf new file mode 100644 index 0000000000000000000000000000000000000000..6e22a5a396ffc57bee07b0d4c37e17e21181a668 GIT binary patch literal 98617 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 Yfsj^JU_O<-Qr9HUBJa{6CMXa24~C;gkN^Mx literal 0 HcmV?d00001 diff --git a/plugins/samplesink/bladerf2output/bladerf2outputplugin.cpp b/plugins/samplesink/bladerf2output/bladerf2outputplugin.cpp index 09fc023a1..c65b66fa5 100644 --- a/plugins/samplesink/bladerf2output/bladerf2outputplugin.cpp +++ b/plugins/samplesink/bladerf2output/bladerf2outputplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor BladeRF2OutputPlugin::m_pluginDescriptor = { QString("BladeRF2 Output"), - QString("4.2.0"), + QString("4.2.1"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/bladerf2input/bladerf2inputplugin.cpp b/plugins/samplesource/bladerf2input/bladerf2inputplugin.cpp index a3536a860..59e13c0dd 100644 --- a/plugins/samplesource/bladerf2input/bladerf2inputplugin.cpp +++ b/plugins/samplesource/bladerf2input/bladerf2inputplugin.cpp @@ -30,7 +30,7 @@ const PluginDescriptor Blderf2InputPlugin::m_pluginDescriptor = { QString("BladeRF2 Input"), - QString("4.2.0"), + QString("4.2.1"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/filesource/filesourceplugin.cpp b/plugins/samplesource/filesource/filesourceplugin.cpp index 10057f205..71a128bc2 100644 --- a/plugins/samplesource/filesource/filesourceplugin.cpp +++ b/plugins/samplesource/filesource/filesourceplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor FileSourcePlugin::m_pluginDescriptor = { QString("File source input"), - QString("3.14.5"), + QString("4.2.1"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/filesource/readme.md b/plugins/samplesource/filesource/readme.md new file mode 100644 index 000000000..aebd4ee64 --- /dev/null +++ b/plugins/samplesource/filesource/readme.md @@ -0,0 +1,106 @@ +

File source input plugin

+ +

Introduction

+ +This plugin reads a file of I/Q samples that have been previously saved with the file record button of other sampling source devices. The file starts with a 32 byte header of all unsigned integer of various sizes containing meta data: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Displ.BytesDescription
04Sample rate in S/s
48Center frequency in Hz
128Unix epoch (timestamp) of start
204Sample size (16 or 24 bits)
244Filler with zeroes
284CRC32 of the previous 28 bytes
+ +The header takes an integer number of 16 (4 bytes) or 24 (8 bytes) bits samples. To calculate CRC it is assumed that bytes are in little endian order. + +

Interface

+ +![FileSource input plugin GUI](../../../doc/img/FileSource_plugin.png) + +

1: Start/Stop

+ +Device start / stop button. + + - Blue triangle icon: ready to be started + - Green square icon: currently running and can be stopped + - Magenta (or pink) square icon: an error occurred. The file may not be found or this can be a header CRC error or the file is too small (less than the header length). You may stop and choose another file. + +

2: Stream sample rate

+ +Baseband I/Q sample rate in kS/s. This is the sample rate present in the header. + +

3: Frequency

+ +This is the center frequency of reception in kHz when the record was taken and written in the header. + +

4: Open file

+ +Opens a file dialog to select the input file. It expects a default extension of `.sdriq`. This button is disabled when the stream is running. You need to pause (button 11) to make it active and thus be able to select another file. + +

5: File path

+ +Absolute path of the file being read + +

6: File recorded sample rate

+ +Sample rate of the record in kS/s as written in the header. The reading process is based on this sample rate. + +

7: Sample size

+ +This is the sample size in bits as written in the header. The reading process is based on this sample size. + +

8: CRC indicator

+ +Indicates if the header block CRC check has succeeded (green) or failed (red) or undetermined yet (grey). If the header is corrupted you may try to reconstruct a valid header using the `rescuesdriq` utility in the folder with the same name. See the [readme](../../../rescuesdriq/readme.md) for details. + +

9: Current timestamp

+ +This is the timestamp of the current pointer in the file based on the start time, number of samples read and sample rate. + +

10: Loop

+ +Use this button to read in a loop or read only once + +

11: Play/pause

+ +This is the play/pause button + +

12: Relative timestamp and record length

+ +Left is the relative timestamp of the current pointer from the start of the record. Right is the total record time. + +

13: Current pointer gauge

+ +This represents the position of the current pointer position in the complete recording. It can be used it paused mode to position the current pointer by moving the slider. + \ No newline at end of file