Remote sink and input: update documentation

pull/340/head
f4exb 2019-04-30 21:23:49 +02:00
rodzic f9107b78b2
commit 65f7e185b4
6 zmienionych plików z 80 dodań i 56 usunięć

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 29 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 35 KiB

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 13 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 19 KiB

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -14,23 +14,51 @@ The plugin will be built only if the [CM256cc library](https://github.com/f4exb/
![Remote sink channel plugin GUI](../../../doc/img/RemoteSink.png)
<h3>1: Distant address</h2>
<h3>1: Decimation factor</h3>
The device baseband can be decimated in the channel and its center can be selected with (5). The resulting sample rate of the I/Q stream sent over the network is the baseband sample rate divided by this value. The value is displayed in (2).
<h3>2: Network I/Q stream sample rate</h3>
This is the sample rate in kS/s of the I/Q stream sent over the network.
<h3>3: Half-band filters chain sequence</h3>
This string represents the sequence of half-band filters used in the decimation from device baseband to resulting I/Q stream. Each character represents a filter type:
- **L**: lower half-band
- **H**: higher half-band
- **C**: centered
<h3>4: Center frequency shift</h3>
This is the shift of the channel center frequency from the device center frequency. Its value is driven by the device sample rate , the decimation (1) and the filter chain sequence (5).
<h3>5: Half-band filter chain sequence</h3>
The slider moves the channel center frequency roughly from the lower to the higher frequency in the device baseband. The number on the right represents the filter sequence as the decimal value of a base 3 number. Each base 3 digit represents the filter type and its sequence from MSB to LSB in the filter chain:
- **0**: lower half-band
- **1**: centered
- **2**: higher half-band
<h3>6: Distant address</h2>
IP address of the distant network interface from where the I/Q samples are sent via UDP
<h3>2: Data distant port</h2>
<h3>7: Data distant port</h2>
Distant port to which the I/Q samples are sent via UDP
<h3>3: Validation button</h3>
<h3>8: Validation button</h3>
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.
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.
<h3>4: Desired number of FEC blocks per frame</h3>
<h3>9: Desired number of FEC blocks per frame</h3>
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 (/).
<h3>5: Delay between UDP blocks transmission</h3>
<h3>10: Delay between UDP blocks transmission</h3>
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.
@ -40,7 +68,7 @@ The value is a percentage of the nominal time it takes to process a block of sam
- 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 &#x2715; 126 &#x2715; _d_) / _SR_) / (128 + _F_)
Formula: ((127 &#x2715; 126 &#x2715; _d_) / _SR_) / (128 + _F_)
The percentage appears first at the right of the dial button and then the actual delay value in microseconds.

Wyświetl plik

@ -22,75 +22,71 @@ The plugin will be built only if the [CM256cc library](https://github.com/f4exb/
![SDR Remote input plugin GUI](../../../doc/img/RemoteInput_plugin.png)
<h3>1: Common stream parameters</h3>
<h3>1: Start/Stop</h3>
![SDR Remote input stream GUI](../../../doc/img/RemoteInput_plugin_01.png)
<h4>1.1: Frequency</h4>
This is the center frequency in kHz sent in the meta data from the distant SDRangel instance and corresponds to the center frequency of reception.
<h4>1.2: Start/Stop</h4>
Device start / stop button.
Device start / stop button.
- Blue triangle icon: device is ready and can be started
- Green square icon: device is running and can be stopped
<h4>1.3: Record</h4>
<h3>2: Record</h3>
Record I/Q stream toggle button
<h4>1.4: Stream sample rate</h4>
<h3>3: Frequency</h3>
Stream I/Q sample rate in kS/s
This is the center frequency in Hz sent in the meta data from the distant SDRangel instance and corresponds to the center frequency of reception. The sub kHz value (000 to 999 Hz) is represented in smaller digits on the right.
<h3>2: Auto correction options and stream status</h3>
<h3>4: Stream sample rate</h3>
Stream I/Q sample rate in kS/s
<h3>5: Auto correction options and stream status</h3>
![SDR Remote input stream GUI](../../../doc/img/RemoteInput_plugin_02.png)
<h4>2.1: Auto correction options</h4>
<h4>5.1: Auto correction options</h4>
These buttons control the local DSP auto correction options:
- **DC**: auto remove DC component
- **IQ**: auto make I/Q balance
<h4>2.2: Receive buffer length</h4>
<h4>5.2: Receive buffer length</h4>
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.
<h4>2.3: Main buffer R/W pointers positions</h4>
<h4>5.3: Main buffer R/W pointers positions</h4>
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.
- When positive it means that the read pointer is leading
- When negative it means that the write pointer is leading (read is lagging)
This corresponds to the value shown in the gauges above (9)
<h4>2.4: Date/time</h4>
<h4>5.4: Date/time</h4>
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 Remote sink channel at the other hand that does not take into account its own buffers.
<h3>3: Main buffer R/W pointers gauge</h3>
<h3>6: Main buffer R/W pointers gauge</h3>
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 disruption has occurred a delay of a few tens of seconds is necessary before read / write reaches equilibrium.
<h3>4: Data stream status</h3>
<h3>7: Data stream status</h3>
![SDR Remote input stream GUI](../../../doc/img/RemoteInput_plugin_04.png)
<h4>4.1: Sample size</h4>
<h4>7.1: Sample size</h4>
This is the size in bits of a I or Q sample sent in the stream by the distant server.
This is the size in bits of a I or Q sample sent in the stream by the distant server.
<h4>4.2: Total number of frames and number of FEC blocks</h4>
<h4>7.2: Total number of frames and number of FEC blocks</h4>
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.
@ -98,7 +94,7 @@ A frame consists of 128 data blocks (1 meta data block followed by 127 I/Q data
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.
<h4>4.3: Stream status</h4>
<h4>7.3: Stream status</h4>
The color of the icon indicates stream status:
@ -106,72 +102,72 @@ The color of the icon indicates stream status:
- 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)
<h4>4.4: Minimum total number of blocks per frame</h4>
<h4>7.4: Minimum total number of blocks per frame</h4>
This is the minimum total number of blocks per frame during the last polling period. If all blocks were received for all frames then this number is the nominal number of original blocks plus FEC blocks (Green lock icon). In our example this is 128+8 = 136.
If this number falls below 128 then some blocks are definitely lost and the lock lights in red.
<h4>4.5: Maximum number of FEC blocks used by frame</h4>
<h4>7.5: Maximum number of FEC blocks used by frame</h4>
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 (Neutral lock icon).
<h4>4.6: Reset events counters</h4>
<h4>7.6: Reset events counters</h4>
This push button can be used to reset the events counters (4.7 and 4.8) and reset the event counts timer (4.9)
<h4>4.7: Unrecoverable error events counter</h4>
<h4>7.7: Unrecoverable error events counter</h4>
This counter counts the unrecoverable error conditions found (i.e. 4.4 lower than 128) since the last counters reset.
<h4>4.8: Recoverable error events counter</h4>
<h4>7.8: Recoverable error events counter</h4>
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.
<h4>4.9: events counters timer</h4>
<h4>7.9: events counters timer</h4>
This HH:mm:ss time display shows the time since the reset events counters button (4.6) was pushed.
<h3>5: Distant server API address and port</h3>
<h3>8: Distant server API address and port</h3>
![SDR Remote input stream GUI](../../../doc/img/RemoteInput_plugin_05.png)
<h4>5.1: API connection indicator</h4>
<h4>8.1: API connection indicator</h4>
The "API" label is lit in green when the connection is successful
<h4>5.2: API IP address</h4>
<h4>8.2: API IP address</h4>
IP address of the distant SDRangel instance REST API
<h4>5.3: API port</h4>
<h4>8.3: API port</h4>
Port of the distant SDRangel instance REST API
<h4>5.4: Validation button</h4>
<h4>8.4: Validation button</h4>
When the return key is hit within the address (5.2) or port (5.3) the changes are effective immediately. You can also use this button to set again these values. Clicking on this button will send a request to the API to get the distant SDRangel instance information that is displayed in the API message box (8)
When the return key is hit within the address (5.2) or port (5.3) the changes are effective immediately. You can also use this button to set again these values. Clicking on this button will send a request to the API to get the distant SDRangel instance information that is displayed in the API message box (8)
<h3>6: Local data address and port</h3>
<h3>9: Local data address and port</h3>
![SDR Remote source input stream GUI](../../../doc/img/RemoteInput_plugin_06.png)
<h4>6.1: Data IP address</h4>
<h4>9.1: Data IP address</h4>
IP address of the local network interface the distant SDRangel instance sends the data to
<h4>6.2: Data port</h4>
<h4>9.2: Data port</h4>
Local port the distant SDRangel instance sends the data to
<h4>6.3: Validation button</h4>
<h4>9.3: Validation button</h4>
When the return key is hit within the address (5.2) or port (5.3) the changes are effective immediately. You can also use this button to set again these values.
When the return key is hit within the address (5.2) or port (5.3) the changes are effective immediately. You can also use this button to set again these values.
<h3>7: Status message</h3>
<h3>10: Status message</h3>
The API status is displayed in this box. It shows "API OK" when the connection is successful and reply is OK
<h3>8: API information</h3>
<h3>11: API information</h3>
This is the information returned by the API and is the distance SDRangel instance information if transaction is successful