1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-11-08 17:46:03 -05:00
sdrangel/plugins/channelrx/daemonsink
2018-11-18 11:06:41 +01:00
..
CMakeLists.txt Fixed Debian build on Bionic 2018-09-15 23:55:41 +00:00
daemonsink.cpp PVS-Studio Analysis corrections for less serious issues 2018-11-18 11:06:41 +01:00
daemonsink.h SDRDaemon: cleanup on UDP Tx side to use sdrdaemondatablock.h definitions and Rx sample size 2018-09-13 00:31:49 +02:00
daemonsinkgui.cpp Windows: MSVC2017: fixed more attribute unused cases (1) 2018-11-13 00:45:03 +01:00
daemonsinkgui.h DaemonSink (5) 2018-09-06 04:23:27 +02:00
daemonsinkgui.ui DaemonSink (6) 2018-09-06 04:36:56 +02:00
daemonsinkplugin.cpp Rename libdaemonsrc to libdaemonsource 2018-09-11 17:05:16 +02:00
daemonsinkplugin.h DaemonSink (2) 2018-09-05 08:44:14 +02:00
daemonsinksettings.cpp PVS-Studio Analysis corrections for less serious issues 2018-11-18 11:06:41 +01:00
daemonsinksettings.h DaemonSink (2) 2018-09-05 08:44:14 +02:00
daemonsinkthread.cpp SDRDaemon: cleanup on UDP Tx side to use sdrdaemondatablock.h definitions and Rx sample size 2018-09-13 00:31:49 +02:00
daemonsinkthread.h PVS-Studio Analysis corrections for serious issues 2018-11-18 09:39:22 +01:00
readme.md SDRDaemonSource: updated documentation 2018-09-15 20:24:49 +02:00

Daemon sink channel plugin

Introduction

This plugin sends I/Q samples from the baseband via UDP to a distant network end point. It can use FEC protection to prevent possible data loss inherent to UDP protocol.

It is present only in Linux binary releases.

Build

The plugin will be built only if the CM256cc library is installed in your system. For CM256cc library you will have to specify the include and library paths on the cmake command line. Say if you install cm256cc in /opt/install/cm256cc you will have to add -DCM256CC_INCLUDE_DIR=/opt/install/cm256cc/include/cm256cc -DCM256CC_LIBRARIES=/opt/install/cm256cc/lib/libcm256cc.so to the cmake commands.

Interface

Daemon sink channel plugin GUI

1: Distant address

IP address of the distant network interface from where the I/Q samples are sent via UDP

2: Data distant port

Distant port to which the I/Q samples are sent via UDP

3: Validation button

When the return key is hit within the address (1) or port (2) the changes are effective immediately. You can also use this button to set again these values.

4: Desired number of FEC blocks per frame

This sets the number of FEC blocks per frame. A frame consists of 128 data blocks (1 meta data block followed by 127 I/Q data blocks) and a variable number of FEC blocks used to protect the UDP transmission with a Cauchy MDS block erasure correction. The two numbers next are the total number of blocks and the number of FEC blocks separated by a slash (/).

5: Delay between UDP blocks transmission

This sets the minimum delay between transmission of an UDP block (send datagram) and the next. This allows throttling of the UDP transmission that is otherwise uncontrolled and causes network congestion.

The value is a percentage of the nominal time it takes to process a block of samples corresponding to one UDP block (512 bytes). This is calculated as follows:

  • Sample rate on the network: SR
  • Delay percentage: d
  • Number of FEC blocks: F
  • There are 127 blocks of I/Q data per frame (1 meta block for 128 blocks) and each I/Q data block of 512 bytes (128 samples) has a 8 bytes header (2 samples) thus there are 126 samples remaining effectively. This gives the constant 127*126 = 16002 samples per frame in the formula

Formula: ((127 ✕ 126 ✕ d) / SR) / (128 + F)

The percentage appears first at the right of the dial button and then the actual delay value in microseconds.