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 000000000..3f45840f9 Binary files /dev/null and b/doc/img/FileSource_plugin.png differ diff --git a/doc/img/FileSource_plugin.xcf b/doc/img/FileSource_plugin.xcf new file mode 100644 index 000000000..6e22a5a39 Binary files /dev/null and b/doc/img/FileSource_plugin.xcf differ 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