From 94befa3e4ec60b336c9890f38ff46178416f2a58 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sat, 15 Sep 2018 20:24:49 +0200 Subject: [PATCH] SDRDaemonSource: updated documentation --- doc/img/DaemonSink.png | Bin 0 -> 13192 bytes doc/img/DaemonSink.xcf | Bin 0 -> 38235 bytes doc/img/DaemonSource.png | Bin 0 -> 18222 bytes doc/img/DaemonSource.xcf | Bin 0 -> 52368 bytes doc/img/DaemonSource_5.png | Bin 0 -> 7298 bytes doc/img/DaemonSource_5.xcf | Bin 0 -> 28074 bytes plugins/channelrx/daemonsink/readme.md | 46 +++++++++++++ plugins/channeltx/daemonsource/readme.md | 79 +++++++++++++++++++++++ 8 files changed, 125 insertions(+) create mode 100644 doc/img/DaemonSink.png create mode 100644 doc/img/DaemonSink.xcf create mode 100644 doc/img/DaemonSource.png create mode 100644 doc/img/DaemonSource.xcf create mode 100644 doc/img/DaemonSource_5.png create mode 100644 doc/img/DaemonSource_5.xcf create mode 100644 plugins/channelrx/daemonsink/readme.md create mode 100644 plugins/channeltx/daemonsource/readme.md diff --git a/doc/img/DaemonSink.png b/doc/img/DaemonSink.png new file mode 100644 index 0000000000000000000000000000000000000000..1a6f1afcd98f6ff4a58226ef2d39a600f7729627 GIT binary patch literal 13192 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 literal 0 HcmV?d00001 diff --git a/doc/img/DaemonSink.xcf b/doc/img/DaemonSink.xcf new file mode 100644 index 0000000000000000000000000000000000000000..ba60ba5e907d66428a51913887daed4eb2922d48 GIT binary patch literal 38235 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 literal 0 HcmV?d00001 diff --git a/doc/img/DaemonSource.png b/doc/img/DaemonSource.png new file mode 100644 index 0000000000000000000000000000000000000000..1adf4ac079c8fa7ec0554adbeda5119bb159fec6 GIT binary patch literal 18222 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 literal 0 HcmV?d00001 diff --git a/doc/img/DaemonSource_5.png b/doc/img/DaemonSource_5.png new file mode 100644 index 0000000000000000000000000000000000000000..723242bddf8080af98398eac12aecd402318f0b5 GIT binary patch literal 7298 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 literal 0 HcmV?d00001 diff --git a/doc/img/DaemonSource_5.xcf b/doc/img/DaemonSource_5.xcf new file mode 100644 index 0000000000000000000000000000000000000000..fee564fec3703dab53d32d437dd2ed574f0ffcb0 GIT binary patch literal 28074 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 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](https://github.com/f4exb/cm256cc) 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](../../../doc/img/DaemonSink.png) + +

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. \ No newline at end of file diff --git a/plugins/channeltx/daemonsource/readme.md b/plugins/channeltx/daemonsource/readme.md new file mode 100644 index 000000000..8a68a4db1 --- /dev/null +++ b/plugins/channeltx/daemonsource/readme.md @@ -0,0 +1,79 @@ +

Daemon source channel plugin

+ +

Introduction

+ +This plugin receives I/Q samples from UDP and copies them to the baseband to be transmitted by the sink output device. It uses SDRDaemon format and possible FEC protection. + +It is present only in Linux binary releases. + +

Build

+ +The plugin will be built only if the [CM256cc library](https://github.com/f4exb/cm256cc) 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 source channel plugin GUI](../../../doc/img/DaemonSource.png) + +

1: Data local address

+ +IP address of the local network interface from where the I/Q samples are fetched via UDP + +

2: Data local port

+ +Local port from where the I/Q samples are fetched 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: Stream sample rate

+ +Stream sample rate as specified in the stream meta data + +

5: Stream status

+ +![Daemon source channel plugin GUI](../../../doc/img/DaemonSource_5.png) + +

5.1: Total number of frames and number of FEC blocks

+ +This is the total number of frames and number of FEC blocks separated by a slash '/' as sent in the meta data block thus acknowledged by the distant server. When you set the number of FEC blocks with (4.1) the effect may not be immediate and this information can be used to monitor when it gets effectively set in the distant server. + +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. + +Using the Cauchy MDS block erasure correction ensures that if at least the number of data blocks (128) is received per complete frame then all lost blocks in any position can be restored. For example if 8 FEC blocks are used then 136 blocks are transmitted per frame. If only 130 blocks (128 or greater) are received then data can be recovered. If only 127 blocks (or less) are received then none of the lost blocks can be recovered. + +

5.2: Stream status

+ +The color of the icon indicates stream status: + + - Green: all original blocks have been received for all frames during the last polling timeframe (ex: 136) + - No color: some original blocks were reconstructed from FEC blocks for some frames during the last polling timeframe (ex: between 128 and 135) + - Red: some original blocks were definitely lost for some frames during the last polling timeframe (ex: less than 128) + +

5.3: Actual stream sample rate

+ +This is the sample rate calculated using the counter of samples between two consecutive polls + +

5.4: Reset events counters

+ +This push button can be used to reset the events counters (5.5 and 5.6) and reset the event counts timer (5.7) + +

5.5: Unrecoverable error events counter

+ +This counter counts the unrecoverable error conditions found (i.e. 4.4 lower than 128) since the last counters reset. + +

5.6: Recoverable error events counter

+ +This counter counts the unrecoverable error conditions found (i.e. 4.4 between 128 and 128 plus the number of FEC blocks) since the last counters reset. + +

5.7: events counters timer

+ +This HH:mm:ss time display shows the time since the reset events counters button (5.4) was pushed. + +

6: Transmitter queue length gauge

+ +This is ratio of the reported number of data frame blocks in the remote queue over the total number of blocks in the queue. + +

7: Transmitter queue length status

+ +This is the detail of the ratio shown in the gauge. Each frame block is a block of 127 ✕ 126 samples (16 bit I or Q samples) or 127 ✕ 63 samples (24 bit I or Q samples).