1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-11-08 17:46:03 -05:00
sdrangel/plugins/channeltx/remotesource
2020-10-05 16:30:24 +02:00
..
CMakeLists.txt RemoteSource: refactored Thread to Worker object moved to thread. Equivalent to FileInput changes 2020-07-12 10:03:08 +02:00
readme.md SampleSourceFifo refactoring and Tx code reorganization 2019-11-15 01:05:32 +01:00
remotesource.cpp Device API: removed useless stream index parameter on channel API methods 2019-12-23 23:41:44 +01:00
remotesource.h Delete channel API from DeviceUISet. Update FeatureUISet 2020-10-04 22:16:09 +02:00
remotesourcebaseband.cpp Commented too frequent debug messages 2019-12-12 18:25:12 +01:00
remotesourcebaseband.h Renamed UpSampleChannelizer back to UpChannelizer 2019-11-15 01:39:11 +01:00
remotesourcegui.cpp Delete channel API from DeviceUISet. Update FeatureUISet 2020-10-04 22:16:09 +02:00
remotesourcegui.h Removed dangling PluginInstanceGUI references 2020-10-05 16:30:24 +02:00
remotesourcegui.ui Migration of DaemonSource channel to RemoteSource 2019-01-23 00:44:13 +01:00
remotesourceplugin.cpp Channel plugins: use specialized ChannelGUI superclass. Handle GUI lifecycle in MainWindow 2020-10-04 22:16:09 +02:00
remotesourceplugin.h Channel plugins: use specialized ChannelGUI superclass. Handle GUI lifecycle in MainWindow 2020-10-04 22:16:09 +02:00
remotesourcesettings.cpp Channel Tx plugins: added support of MIMO devices 2019-11-17 11:09:35 +01:00
remotesourcesettings.h Channel Tx plugins: added support of MIMO devices 2019-11-17 11:09:35 +01:00
remotesourcesource.cpp RemoteSource: refactored Thread to Worker object moved to thread. Equivalent to FileInput changes 2020-07-12 10:03:08 +02:00
remotesourcesource.h RemoteSource: refactored Thread to Worker object moved to thread. Equivalent to FileInput changes 2020-07-12 10:03:08 +02:00
remotesourcewebapiadapter.cpp REST API: config: use specialized ChannelWebAPIAdapter class similar to what has been done for devices 2019-08-05 00:10:56 +02:00
remotesourcewebapiadapter.h REST API: config: GET (13): corrected missing return in deserialize methods of the adapters 2019-08-05 03:42:04 +02:00
remotesourceworker.cpp RemoteSource: refactored Thread to Worker object moved to thread. Equivalent to FileInput changes 2020-07-12 10:03:08 +02:00
remotesourceworker.h RemoteSource: refactored Thread to Worker object moved to thread. Equivalent to FileInput changes 2020-07-12 10:03:08 +02:00

Remote 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 SDRangel remote format and possible FEC protection.

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_DIR=/opt/install/cm256cc to the cmake commands.

Interface

Remote source channel plugin GUI

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. Interpolation may occur to match the baseband sample rate. This will be done around the baseband center frequency (no NCO shift). Decimation is not provisionned so unpredictable results may occur if the remote stream sample rate is larger than the baseband sample rate.

To minimize processing an exact match of baseband sample rate and remote stream sample rate is recommended. If this is not possible then a power of two ratio is still preferable.

5: Stream status

Remote source channel plugin GUI

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).