Remote source and output: updated documentation

pull/1092/head
f4exb 2021-12-16 02:11:03 +01:00
rodzic d471f09cc2
commit 73d676060b
6 zmienionych plików z 79 dodań i 90 usunięć

Plik binarny nie jest wyświetlany.

Przed

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

Po

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

Plik binarny nie jest wyświetlany.

Plik binarny nie jest wyświetlany.

Przed

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

Po

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

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -24,25 +24,55 @@ Local port from where the I/Q samples are fetched via UDP
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: Stream sample rate</h3>
<h3>4: Interpolation factor</h3>
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.
The device baseband can be interpolated from the channel and its center can be selected with (5). The resulting sample rate of the I/Q stream pulled from the Remote Output device sink is the baseband sample rate divided by this value. The value is displayed in (5).
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.
<h3>5: I/Q stream sample rate</h3>
<h3>5: Stream status</h3>
This is the sample rate in kS/s of the I/Q stream pulled from the Remote Output device sink instance.
<h3>6: Half-band filters chain sequence</h3>
This string represents the sequence of half-band filters used in the interpolation. Each character represents a filter type:
- **L**: lower half-band
- **H**: higher half-band
- **C**: centered
<h3>7: 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 interpolation (1) and the filter chain sequence (5).
<h3>8: 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.
<h3>9: Half-band filter sequence</h3>
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>10: Meta data stream sample rate</h3>
This is the sample rate set in the stream meta data
<h3>11: Stream status</h3>
![Remote source channel plugin GUI](../../../doc/img/RemoteSource_5.png)
<h4>5.1: Total number of frames and number of FEC blocks</h4>
<h4>11.1: 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.
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 in the remote 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.
<h4>5.2: Stream status</h4>
<h4>11.2: Stream status</h4>
The color of the icon indicates stream status:
@ -50,30 +80,30 @@ 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>5.3: Actual stream sample rate</h4>
<h4>11.3: Actual stream sample rate</h4>
This is the sample rate calculated using the counter of samples between two consecutive polls
<h4>5.4: Reset events counters</h4>
<h4>11.4: Reset events counters</h4>
This push button can be used to reset the events counters (5.5 and 5.6) and reset the event counts timer (5.7)
This push button can be used to reset the events counters (11.5 and 5.6) and reset the event counts timer (11.7)
<h4>5.5: Unrecoverable error events counter</h4>
<h4>11.5: 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.
This counter counts the unrecoverable error conditions found (i.e. lower than 128) since the last counters reset.
<h4>5.6: Recoverable error events counter</h4>
<h4>11.6: 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.
This counter counts the unrecoverable error conditions found (i.e. between 128 and 128 plus the number of FEC blocks) since the last counters reset.
<h4>5.7: events counters timer</h4>
<h4>11.7: events counters timer</h4>
This HH:mm:ss time display shows the time since the reset events counters button (5.4) was pushed.
This HH:mm:ss time display shows the time since the reset events counters button (11.4) was pushed.
<h3>6: Transmitter queue length gauge</h3>
<h3>12: Transmitter queue length gauge</h3>
This is ratio of the reported number of data frame blocks in the remote queue over the total number of blocks in the queue.
<h3>7: Transmitter queue length status</h3>
<h3>13: Transmitter queue length status</h3>
This is the detail of the ratio shown in the gauge. Each frame block is a block of 127 &#x2715; 126 samples (16 bit I or Q samples) or 127 &#x2715; 63 samples (24 bit I or Q samples).

Wyświetl plik

@ -10,8 +10,6 @@ The remote SDRangel instance to which the data stream is sent is controlled via
The sample size used in the I/Q stream is the Rx sample size of the local instance. Possible conversion takes place in the remote Remote source channel plugin to match the Rx sample size of the remote instance. Best performace is obtained when both instances use the same sample size.
It is present only in Linux binary releases.
<h2>Build</h2>
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_DIR=/opt/install/cm256cc` to the cmake commands.
@ -27,9 +25,9 @@ Device start / stop button.
- Blue triangle icon: device is ready and can be started
- Green square icon: device is running and can be stopped
<h3>2: Stream sample rate</h3>
<h3>2: Baseband sample rate</h3>
I/Q sample rate in kS/s of the stream that is sent over the network.
I/Q sample rate in kS/s of the baseband sample rate.
<h3>3: Frequency</h3>
@ -37,46 +35,25 @@ This is the center frequency in kHz of the remote instance device.
<h3>4: Remote baseband sample rate</h3>
This is the remote instance baseband sample rate. It can be a power of two multiple of the stream sample rate (2) but it will not work for other values.
This is the remote instance baseband sample rate. It is normally equal to the system sample rate (2).
<h3>5: Stream controls and API destination</h3>
![SDR Remote output sample rate GUI](../../../doc/img/RemoteOutput_plugin_05.png)
<h4>5.1: Network stream sample rate</h4>
This is the I/Q stream sample rate transmitted via UDP over the network
<h4>5.2: Delay between UDP blocks transmission</h4>
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 &#x2715; 126 &#x2715; _d_) / _SR_) / (128 + _F_)
<h4>5.3: remote instance device set index</h4>
<h3>5: remote instance device set index</h3>
This is the device set index in the remote instance to which the stream is connected to. Use this value to properly address the API to get status.
<h4>5.4: remote instance channel index</h4>
<h3>6: remote instance channel index</h3>
This is the channel index of the Remote source in the remote instance to which the stream is connected to. Use this value to properly address the API to get status.
<h3>6: Forward Error Correction setting and status</h3>
<h3>7: Forward Error Correction setting and status</h3>
![SDR Remote output FEC GUI](../../../doc/img/RemoteOutput_plugin_06.png)
<h4>6.1: Desired number of FEC blocks per frame</h4>
<h4>7.1: Desired number of FEC blocks per frame</h4>
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 (/).
<h4>6.2: Stream status</h4>
<h4>7.2: Stream status</h4>
The color of the icon indicates stream status:
@ -85,76 +62,58 @@ The color of the icon indicates stream status:
- Red: some original blocks were definitely lost for some frames during the last polling timeframe (ex: less than 128)
- Blue: stream is idle
<h4>6.3: Remote stream rate</h4>
<h4>7.3: Remote stream rate</h4>
This is the remote stream rate calculated from the samples counter between two consecutive API polls. It is normal for it to oscillate moderately around the nominal stream rate (2).
<h4>6.4: Reset events counters</h4>
<h4>7.4: Reset events counters</h4>
This push button can be used to reset the events counters (6.6 and 6.7) and reset the event counts timer (6.8)
This push button can be used to reset the events counters (7.6 and 7.7) and reset the event counts timer (6.8)
<h4>6.5: Unrecoverable error events counter</h4>
<h4>7.5: Unrecoverable error events counter</h4>
This counter counts the unrecoverable error conditions found (i.e. 6.4 lower than 128) since the last counters reset.
This counter counts the unrecoverable error conditions found (i.e. 7.4 lower than 128) since the last counters reset.
<h4>6.6: Recoverable error events counter</h4>
<h4>7.6: Recoverable error events counter</h4>
This counter counts the unrecoverable error conditions found (i.e. 6.4 between 128 and 128 plus the number of FEC blocks) since the last counters reset.
This counter counts the unrecoverable error conditions found (i.e. 7.4 between 128 and 128 plus the number of FEC blocks) since the last counters reset.
<h4>6.7: events counters timer</h4>
<h4>7.7: events counters timer</h4>
This HH:mm:ss time display shows the time since the reset events counters button (4.6) was pushed.
<h3>7: Remote transmitter queue length gauge</h3>
<h3>8: Remote transmitter queue length gauge</h3>
This is ratio of the reported number of data frame blocks in the remote queue over the total number of blocks in the queue.
<h3>8: Remote transmitter queue length status</h3>
<h3>9: Remote transmitter queue length status</h3>
This is the detail of the ratio shown in the gauge. Each frame block is a block of 127 &#x2715; 126 samples (16 bit I or Q samples) or 127 &#x2715; 63 samples (24 bit I or Q samples).
<h3>9: Remote server test</h3>
<h3>10: Remote server information</h3>
Test remote connection with its API.
Press button to get remote instance information that will be displayed in (16). The button stays green as long as the connection with the remote is established.
![SDR Remote input stream GUI](../../../doc/img/RemoteInput_plugin_05.png)
<h3>11: API IP address and port</h3>
<h4>9.1: Remote connection indicator</h4>
IP address and port of the remote SDRangel instance REST API
The "Remote" label is lit in green when the connection is successful
<h3>12: Set API address</h3>
<h4>9.2: API IP address</h4>
When the return key is hit within the address or port (11) the changes are effective immediately. You can also use this button to set again these values.
IP address of the remote SDRangel instance REST API
<h3>13: Remote data address and port</h3>
<h4>9.3: API port</h4>
Address and port of the remote endpoint where UDP data blocks are sent.
Port of the remote SDRangel instance REST API
<h3>14: Set remote data IP and port</h3>
<h4>9.4: Get information button</h4>
When the return key is hit within the address or port (13) 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 (9.2) or port (9.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 remote SDRangel instance information that is displayed in the API message box (8)
<h3>10: Local data address and port</h3>
![SDR Remote input stream GUI](../../../doc/img/RemoteInput_plugin_06.png)
<h4>10.1: Data IP address</h4>
IP address of the local network interface the remote SDRangel instance sends the data to
<h4>10.2: Data port</h4>
Local port the remote SDRangel instance sends the data to
<h4>10.3: Validation button</h4>
When the return key is hit within the address (10.2) or port (10.3) the changes are effective immediately. You can also use this button to set again these values.
<h3>11: Status message</h3>
<h3>15: 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>12: Remote information</h3>
<h3>16: Remote information</h3>
This is the information returned by the remote when connection with its API is successful
This is the information returned by the remote when remote button is pressed (10)