From b84fde2831fe9f0240c31e5fabf230a323e255c7 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 24 Jul 2016 20:01:10 +0200 Subject: [PATCH] SDRdaemonFEC plugin: updated online documentation --- doc/img/SDRdaemonFEC_plugin.png | Bin 0 -> 32683 bytes doc/img/SDRdaemonFEC_plugin_01.png | Bin 0 -> 7160 bytes doc/img/SDRdaemonFEC_plugin_04.png | Bin 0 -> 6249 bytes plugins/samplesource/sdrdaemonfec/readme.md | 139 ++++++++++---------- 4 files changed, 69 insertions(+), 70 deletions(-) create mode 100644 doc/img/SDRdaemonFEC_plugin.png create mode 100644 doc/img/SDRdaemonFEC_plugin_01.png create mode 100644 doc/img/SDRdaemonFEC_plugin_04.png diff --git a/doc/img/SDRdaemonFEC_plugin.png b/doc/img/SDRdaemonFEC_plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..4ae82761a1eb940b885595662f623041b56185f1 GIT binary patch literal 32683 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%0D~4J~C`YfjcY&!`eW++UMpd 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%0D&fw-j#eQsVc6gP)7hlS9+k&){ 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 literal 0 HcmV?d00001 diff --git a/doc/img/SDRdaemonFEC_plugin_04.png b/doc/img/SDRdaemonFEC_plugin_04.png new file mode 100644 index 0000000000000000000000000000000000000000..25b8342df4446934249231703b63eab591e9441c GIT binary patch literal 6249 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 b$I$v0Oc7bLE>6Hd0Aw1fIx2-q)*=4^$`pVI literal 0 HcmV?d00001 diff --git a/plugins/samplesource/sdrdaemonfec/readme.md b/plugins/samplesource/sdrdaemonfec/readme.md index e643edca7..d9c0873b6 100644 --- a/plugins/samplesource/sdrdaemonfec/readme.md +++ b/plugins/samplesource/sdrdaemonfec/readme.md @@ -1,17 +1,36 @@ -

SDRdaemon plugin

+

SDRdaemonFEC plugin

Introduction

-This input sample source plugin gets its samples over tbe network from a SDRdaemon server using UDP connection. SDRdaemon refers to the SDRdaemon utility found in [this](https://github.com/f4exb/sdrdaemon) Github repostory. +This input sample source plugin gets its samples over tbe network from a SDRdaemon server using UDP connection. SDRdaemon refers to the SDRdaemon utility found in [this](https://github.com/f4exb/sdrdaemon) Github repostory. This plugin is specialized in the version of SDRdaemon that sends data with FEC (Forward Erasure Correction). When FEC is used the format of the data is completely different from what it is without FEC.

Interface

-![SDR Daemon plugin GUI](/doc/img/SDRdaemon_plugin.png) +![SDR Daemon with FEC plugin GUI](../../../doc/img/SDRdaemonFEC_plugin.png) -

1: Frequency

+

1: Common stream parameters

+ +![SDR Daemon FEC stream GUI](../../../doc/img/SDRdaemonFEC_plugin_01.png) + +

1.1: Frequency

This is the center frequency in kHz sent in the meta data from the distant SDRdaemon instance and corresponds to the center frequency of reception. +

1.2: 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 + +

1.3: Record

+ +Record I/Q stresm toggle button + +

1.4: Stream sample rate

+ +Stream I/Q sample rate in kS/s +

2: Auto correction options

These buttons control the local DSP auto correction options: @@ -21,40 +40,54 @@ These buttons control the local DSP auto correction options:

3: Date/time

-This is the current timestamp of the block of data sent from the receiver. It is refreshed about every second. This may not and is usually not the timestamp of the samples currently shown in the displays and in the audio since there is a failty large buffer in place to damper the variations of data receiving speed due to the network (see: 5.5: Main buffer length in seconds). +This is the current timestamp of the block of data sent from the receiver. It is refreshed about every second. The plugin tries to take into account the buffer that is used between the data received from the network and the data effectively used by the system however this may not be extremely accurate. It is based on the timestamps sent from the SDRdaemon utility at the other hand that does not take into account its own buffers.

9: Main buffer R/W pointers gauge

-There are two gauges separated by a dot in the center. Ideally these gauges should not display any value thus read and write pointers are always half a buffer apart. +There are two gauges separated by a dot in the center. Ideally these gauges should not display any value thus read and write pointers are always half a buffer apart. However due to the fact that a whole frame is reconstructed at once up to ~10% variation is normal and should appear on the left gauge (write leads). - The left gauge is the negative gauge. It is the value in percent of buffer size from the write pointer position to the read pointer position when this difference is less than half of a buffer distance. It means that the writes are leading or reads are lagging. - The right gauge is the positive gauge. It is the value in percent of buffer size of the difference from the read pointer position to the write pointer position when this difference is less than half of a buffer distance. It menas that the writes are lagging or reads are leading. + +The system tries to compensate read / write unbalance however at start or when a large stream distruption has occured a delay of a few tens of seconds is necessary before read / write reaches equilibrium. -

4: Lock and sizes

+

4: Stream status and sizes

-![SDR Daemon status1 GUI](/doc/img/SDRdaemon_plugin_04.png) +![SDR Daemon FEC status1 GUI](../../../doc/img/SDRdaemonFEC_plugin_04.png) -

4.1: Stream lock

+

4.1: Stream status

-Turns green when stream is locked to meta data. Meta data carries the number of UDP packets in following frame. Lock status is obtained when the correct number of UDP packets have been received when the next meta data block occurs. +The color of the icon indicates stream status: -

4.2: Frame size

+ - Green: all original blocks have been received for all frames during the last polling timeframe + - Blue: some original blocks were reconstructed from FEC blocks for some frames during the last polling timeframe + - No color: some original blocks were definitely lost for some frames during the last polling timeframe -Data is sent in frames with one meta data header. This is the size of such a frame. Frames may be compressed however the frame will be copied uncompressed to the main buffer. +

4.2: Minimum number of blocks received by frame

-

4.3: Sample rate as sent in the meta data

+Minimum number of blocks received by frame during the last polling timeframe. Ideally this should match the nominal number of blocks per frame (see 4.7) for no lost blocks (green lock icon). -The receiver sends the stream data rate with this nominal value +

4.3: Average number of blocks received by frame

-

4.4: Actual stream sample rate

+Moving average over the last 10 frames of the number of blocks received per frame. -When the auto follow sample rate is engaged the actual system sample rate may differ from the nominal sample rate sent in the meta data. This is the actual system sample rate. +

4.4: Maximum number of FEC blocks used by frame

-

4.5: Skew rate

+Maximum number of FEC blocks used for original blocks recovery during the last polling timeframe. Ideally this should be 0 when no blocks are lost but the system is able to correct lost blocks up to the nominal number of FEC blocks (blue lock icon). -This is the difference in percent between nominal sample rate sent in the meta data and actual system sample rate +

4.5: Average number of FEC blocks used for original blocks recovery by frame

-

4.6: Main buffer R/W pointers positions

+Moving average over the last 10 frames of the number of FEC blocks used for original blocks recovery per frame. + +

4.6: Receive buffer length

+ +This is the main buffer (writes from UDP / reads from DSP engine) length in units of time (seconds). As read and write pointers are normally about half the buffer apart the nominal delay introduced by the buffer is the half of this value. + +

4.7: FEC nominal values

+ +This is the nominal (Tx side) total number of blocks sent by frame (original blocks plus FEC blocks) and the nominal number of FEC blocks sent by frame separated by a slash (/) + +

4.8: Main buffer R/W pointers positions

Read and write pointers should always be a half buffer distance buffer apart. This is the difference in percent of the main buffer size from this ideal position. @@ -63,75 +96,39 @@ Read and write pointers should always be a half buffer distance buffer apart. Th This corresponds to the value shown in the gauges above (9) -

5: Compressed stream status and auto follow control buttons

+

5: Network parameters

-![SDR Daemon status2 GUI](/doc/img/SDRdaemon_plugin_05.png) +![SDR Daemon status3 GUI](../../../doc/img/SDRdaemon_plugin_06.png) -

5.1: Compressed stream

- -When lit in green it means the stream is compressed using LZ4. - -

5.2: Compression ratio

- -This is the ratio between the compressed data size and the original data size. - -

5.3: CRC OK ratio

- -This is the percentage of received data blocks with a correct CRC. It should be as closed to 100% as possible. - -

5.4: LZ4 successful decodes ratio

- -This is the percentage of LZ4 data blocks that were successfully uncompressed. It should be as closed to 100% as possible. - -

5.5: Main buffer length in seconds

- -This is the main buffer (writes from UDP / reads from DSP engine) length in units of time (seconds). Initially the write pointer is at the start of buffer and the read pointer is on the middle. Thus it takes half a buffer length in time to get the first useful sample. The minimum length is 8s and can be as long as to fit 50 average read chunks. - -

5.6: Reset buffer indexes push button

- -This forces the write and read pointers in their initial position regardless of the contents of the buffer. The write pointer position is set at the start of buffer and the read pointer position is set at the middle. - -

5.7: Auto lock main buffer R/W pointers position toggle

- -When set it engages the auto lock of R/W pointers position. It will try to maintain a half buffer distance between read and write pointers. - -

5.8: Auto lock to actual stream sample rate

- -This is rarely necessary. Only use it when you suspect that the sender data sample rate is not exactly as advertised in the meta data. This is normally exclusive of the auto lock R/W pointers position however the GUI allows both. You are advised to chose only one of the two. - -

6: Network parameters

- -![SDR Daemon status3 GUI](/doc/img/SDRdaemon_plugin_06.png) - -

6.1: Local interface IP address

+

5.1: Local interface IP address

Address of the network interface on the local (your) machine to which the SDRdaemon server sends samples to. -

6.2: Local data port

+

5.2: Local data port

UDP port on the local (your) machine to which the SDRdaemon server sends samples to. -

6.3 Distant configuration port

+

5.3 Distant configuration port

TCP port on the distant machine hosting the SDRdaemon instance to send control messages to. The IP address of the host where the SDRdaemon instance runs is guessed from the address sending the data blocks hence it does not need to be specified. -

6.4: Validation button

+

5.4: Validation button

Whenever the address (6.1), data port (6.2) or configuration port (6.3) change this button is enabled to validate the new values. -

7: Configuration parameters

+

6: Configuration parameters

-![SDR Daemon status4 GUI](/doc/img/SDRdaemon_plugin_07.png) +![SDR Daemon status4 GUI](../../../doc/img/SDRdaemon_plugin_07.png) -

7.1: Center frequency in kHz

+

6.1: Center frequency in kHz

This is the center frequency in kHz to which the hardware attached to the SDRdaemon instance will get tuned to. -

7.2: Decimation factor

+

6.2: Decimation factor

These are successive powers of two from 0 (1) to 6 (64). The SDRdaemon instance will decimate the samples coming from the attached hardware by this value. Thus the sample rate (see 7.5) will be decimated by the same value before it is sent over through the network. -

7.3: Center frequency position

+

6.3: Center frequency position

The center frequency in the passband wil be set either: @@ -139,14 +136,16 @@ The center frequency in the passband wil be set either: - above the local oscillator (NCO) or supradyne. Actually +1/4th the bandwidth. - centered on the local oscillator or zero IF. -

7.4: Send data to the distant SDRdaemon instance

+

6.4: Send data to the distant SDRdaemon instance

Whenever any of the parameters change this button gets enabled. When clicked a message is sent on the configuration port of the distant machine to which the SDRdaemon listens for instructions. Leave time for the buffering system to stabilize to get the samples flow through normally. -

7.5: Sample rate in kS/s

+

6.5: Sample rate in kS/s

The sample rate of the hardware device attached to the SDRdaemon instance will be set to this value in kS/s. -

7.6: Other parameters hardware specific

+

6.6: Other parameters hardware specific

-THese are the parameters that are specific to the hardware attached to the distant SDRdaemon instance. You have to know which device is attached to send the proper parameters. Please refer to the SDRdaemon documentation or its line help to get information on these parameters. \ No newline at end of file +These are the parameters that are specific to the hardware attached to the distant SDRdaemon instance. You have to know which device is attached to send the proper parameters. Please refer to the SDRdaemon documentation or its line help to get information on these parameters. + +In addition you can specify the inter-block transmission delay (txdelay) and number of FEC blocks per frame (fecblk). \ No newline at end of file