1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-12-23 10:05:46 -05:00

AMBE feature: more updates to documentation

This commit is contained in:
f4exb 2022-05-25 19:58:18 +02:00
parent 9af5179e1d
commit 2971dfe3af
3 changed files with 59 additions and 110 deletions

View File

@ -18,26 +18,9 @@ To enable this plugin at compile time you will need to have DSDcc installed in y
<h2>DV serial device support</h2>
You can use a serial device connected to your system that implements and exposes the packet interface of the AMBE3000 chip. This can be for example a ThumbDV USB dongle. You may also connect to an AMBE server instance over the network.
You can use a serial device connected to your system that implements and exposes the packet interface of the AMBE3000 chip. This can be for example a ThumbDV USB dongle. You may also connect to an AMBE server instance over the network. This is supported via the [AMBE feature](../../feature/ambe/readme.md).
DV serial devices are supported using the [SerialDV](https://github.com/f4exb/serialDV) library that is a mandatory requirement. Therefore you have to compile and install it in your system. Please refer to this project Readme.md to compile and install SerialDV. f you install it in a custom location say `/opt/install/serialdv` you will need to add this define to the cmake command: `-DSERIALDV_DIR=/opt/install/serialdv`
To effectively use serial DV devices for AMBE decoding you will have to add at least one device to the list of AMBE devices in use using the `AMBE devices control` dialog opened with the `AMBE` option in the `Preferences` menu. The list of devices is saved in the program preferences so that they are persistent across program stop/start. However if the device name or server address changes in between the corresponding reference will be lost.
Although such serial devices work with a serial interface at 400 kb in practice maybe for other reasons they are capable of handling only one conversation at a time. The software will allocate the device dynamically to a conversation with an inactivity timeout of 1 second so that conversations do not get interrupted constantly making the audio output too choppy. In practice you will have to have as many devices connected to your system as the number of conversations you would like to be handled in parallel.
Note also that hardware serial devices are not supported in Windows because of trouble with COM port support (contributors welcome!).
If no AMBE devices or servers are activated with the `AMBE devices control` AMBE decoding will take place with Mbelib. Possible copyright issues apart (see next) the audio quality with the DVSI AMBE chip is much better.
---
&#9888; With kernel 4.4.52 and maybe other 4.4 versions the default for FTDI devices (that is in the ftdi_sio kernel module) is not to set it as low latency. This results in the ThumbDV dongle not working anymore because its response is too slow to sustain the normal AMBE packets flow. The solution is to force low latency by changing the variable for your device (ex: /dev/ttyUSB0) as follows:
`echo 1 | sudo tee /sys/bus/usb-serial/devices/ttyUSB0/latency_timer` or `sudo setserial /dev/ttyUSB0 low_latency`
Newer kernels do not seem to have this issue.
---
If no AMBE features are active or the AMBE support is not engaged (B.19) AMBE decoding will take place with Mbelib. Possible copyright issues apart (see next) the audio quality with the DVSI AMBE chip is much better.
<h2>Mbelib support</h2>

View File

@ -2,7 +2,24 @@
<h2>Introduction</h2>
Control AMBE3000 serial devices or AMBE server addresses to use for AMBE digital voice processing.
Control AMBE3000 serial a.k.a. DV serial devices or AMBE server addresses to use for AMBE digital voice processing.
DV serial devices are supported using the [SerialDV](https://github.com/f4exb/serialDV) library that is a mandatory requirement for this feature to be compiled. Therefore you have to compile and install SerialDV in your system. Please refer to this project Readme.md to compile and install SerialDV. f you install it in a custom location say `/opt/install/serialdv` you will need to add this define to the cmake command: `-DSERIALDV_DIR=/opt/install/serialdv`
To effectively use serial DV devices for AMBE decoding you will have to add at least one device to the list of AMBE devices (6) in use.
Although such serial devices work with a serial interface at 400 kb in practice maybe for other reasons they are capable of handling only one conversation at a time. The software will allocate the device dynamically to a conversation with an inactivity timeout of 1 second so that conversations do not get interrupted constantly making the audio output too choppy. In practice you will have to have as many devices listed in (6) as the number of conversations you would like to be handled in parallel.
Note also that hardware serial devices are not supported in Windows because of trouble with COM port support (contributors welcome!).
---
&#9888; With kernel 4.4.52 and maybe other 4.4 versions the default for FTDI devices (that is in the ftdi_sio kernel module) is not to set it as low latency. This results in the ThumbDV dongle not working anymore because its response is too slow to sustain the normal AMBE packets flow. The solution is to force low latency by changing the variable for your device (ex: /dev/ttyUSB0) as follows:
`echo 1 | sudo tee /sys/bus/usb-serial/devices/ttyUSB0/latency_timer` or `sudo setserial /dev/ttyUSB0 low_latency`
Newer kernels do not seem to have this issue.
---
<h2>Interface</h2>

View File

@ -21,7 +21,6 @@ The menu items from left to right are:
- _Audio_: opens a dialog to choose the audio output device. See the audio management documentation [here](audio.md)
- _Logging_: opens a dialog to choose logging options. See "Logging" paragraph next for details
- _FFT_: opens a dialog to run the `fftwf-wisdom` utility with a choice of direct and possibly reverse FFT sizes. It produces a so called wisdom file `fftw-wisdom` that speeds up FFT allocations. It is created at a default location and will be used at next invocations of SDRangel. See "FFT" paragraph next for details.
- _AMBE_: Opens a dialog to select AMBE3000 serial devices or AMBE server addresses to use for AMBE digital voice processing. If none is selected AMBE frames decoding will be done with mbelib if available else no audio will be produced for AMBE digital voice. See "AMBE"paragraph next for details.
- _My Position_: opens a dialog to enter your station ("My Position") coordinates in decimal degrees with north latitudes positive and east longitudes positive. This is used whenever positional data is to be displayed (APRS, DPRS, ...). For it now only works with D-Star $$CRC frames. See [DSD demod plugin](../plugins/channelrx/demoddsd/readme.md) for details on how to decode Digital Voice modes.
- _Devices_: section to deal with devices settings
- _User arguments_: opens a dialog to let the user give arguments specific to a device and its instance (sequence) in the system
@ -201,7 +200,7 @@ Use the "Cancel" button to dismiss all changes
When clicking on the FFT submenu a dialog opens for running the `fftwf-wisdom` utility with a choice of direct and possibly reverse FFT sizes. It produces a so called wisdom file `fftw-wisdom` that speeds up FFT allocations. It is created at a default location and will be used at next invocations of SDRangel.
![Main Window AMBE](../doc/img/MainWindow_fft.png)
![Main Window FFT](../doc/img/MainWindow_fft.png)
<h4>2.2.1: FFTW Wisdom program</h4>
@ -231,57 +230,7 @@ When clicking the "OK" button the `fftwf-wisdom` program is launched in the back
When clicking the "Cancel" button the dialog is dismissed without execution of the `fftwf-wisdom` program.
<h3>2.3: AMBE</h3>
When clicking on the AMBE submenu a dialog opens to let you specify physical AMBE devices to decode AMBE frames produced by digital voice signals (using DSD decoder plugin).
![Main Window AMBE](../doc/img/MainWindow_ambe.png)
<h4>2.3.1: AMBE server address and port or direct input</h4>
Use this freeflow text input box to specify either the address and port of an AMBE server in the form: &lt;IPv4 address&gt;:&lt;port&gt; or any directly attached physical device address like a COM port on Windows.
<h4>2.3.2: Import above address or device</h4>
Import the address or device specified in (1) into the list of used devices. The system will try to open the device or contact the server and will add it to the list only if successful.
<h4>2.3.3: Remove in use device or address</h4>
When a device or address is selected in the in use list (6) push this button to remove it from the list. The corresponding resources will be released.
<h4>2.3.4: Refresh in use list</h4>
Checks the list of devices or addresses currently in use and update the in use list (6).
<h4>2.3.5: Empty in use list</h4>
Removes all devices or addresses in use. The in use list (6) is cleared consequently. This removes all AMBE devices related resources attached to the current instance of the SDRangel program. Therefore consecutive AMBE frames decoding will be handled by the mbelib library if available or no audio will be output.
<h4>2.3.6: In use list</h4>
List of devices or addresses currently in use for AMBE frames decoding by this instance of the SDRangel program.
<h4>2.3.7: Import serial device</h4>
Imports a serial device scanned in the list of available AMBE 3000 serial devices (9) in the in use list. If this device is already in the in use list then nothing happens and this is reported in the status text (10)
<h4>2.3.8: Import all serial devices</h4>
Imports all serial devices scanned in the list of available AMBE 3000 serial devices (9) in the in use list. If any device is already in the in use list then it is not added twice.
<h4>2.3.9: List of available AMBE 3000 serial devices</h4>
This is the list of AMBE 3000 currently attached to the system directly. This list gets updated at every opening of the dialog.
<h4>2.3.10: Status text</h4>
A brief text reports the result of the current action
<h4>2.3.11: Close button</h4>
Use this button to dismiss the dialog
<h3>2.4: Commands</h3>
<h3>2.3: Commands</h3>
This is a tree view of the saved commands. Commands describe the path to an executable file, its arguments a possible link to a keystroke event that triggers the execution. Similarly to presets commands can be arranged into groups and have a description short text.
@ -291,43 +240,43 @@ Of course any binary that resides in your system can be used that way like `/bin
![Main Window presets view](../doc/img/MainWindow_commands_view.png)
<h4>2.4.1: Command selection</h4>
<h4>2.3.1: Command selection</h4>
You select a command or a command group by clicking on its line in the tree view. All actions (6) will be done relative to this command or command group.
<h4>2.4.2: Group</h4>
<h4>2.3.2: Group</h4>
You can organize your commands into groups. Groups can be collapsed or expanded by using the caret icon on the left.
<h4>2.4.3: Description</h4>
<h4>2.3.3: Description</h4>
Short description of a command.
<h4>2.4.4: Key binding indicator</h4>
<h4>2.3.4: Key binding indicator</h4>
- `-`: no key binding
- `P`: key press binding
- `R`: key release binding
<h4>2.4.5: Key binding sequence</h4>
<h4>2.3.5: Key binding sequence</h4>
Thisis a descriptive text of the key sequence that is used for the key binding.
<h4>2.4.6: Command control or actions</h4>
<h4>2.3.6: Command control or actions</h4>
The controls are located as icons at the bottom of the window:
![Main Window commands](../doc/img/MainWindow_commands.png)
<h5>2.4.6.1: Create new command</h5>
<h5>2.3.6.1: Create new command</h5>
Click on this icon to create a new command. This opens an edit dialog see the edit section (5B.6.3) for the details of the edit dialog.
<h5>2.4.6.2: Duplicate command</h5>
<h5>2.3.6.2: Duplicate command</h5>
Click on this icon to duplicate the currently selected command (inactive on groups). Later you can edit the details of the copy with the edit dialog (see 5B.6.3 next)
<h5>2.4.6.3: Edit command or command group</h5>
<h5>2.3.6.3: Edit command or command group</h5>
<b>Command groups</b>
@ -341,15 +290,15 @@ You can edit the details of the command with this dialog.
![Main Window command group edit](../doc/img/MainWindow_command_edit.png)
<h6>2.4.6.3.1: Edit group </h6>
<h6>2.3.6.3.1: Edit group </h6>
You can select an existing group with the combo or create a new one for this command using the text edit box
<h6>2.4.6.3.2: Edit description </h6>
<h6>2.3.6.3.2: Edit description </h6>
You can edit the description using this text box. The description will appear in the tree view.
<h6>2.4.6.3.3: Executable file selection </h6>
<h6>2.3.6.3.3: Executable file selection </h6>
Clicking on this button will open a file dialog to select the executable file that will be run with this command. The file selection dialog has predefined file pattern selections:
@ -358,11 +307,11 @@ Clicking on this button will open a file dialog to select the executable file th
- `*.sh` or `*.bat` for shell or batch files
- `*.bin` or `*.exe` for binary files
<h6>2.4.6.3.4: Executable file path </h6>
<h6>2.3.6.3.4: Executable file path </h6>
This is the full path of the selected executable file.
<h6>2.4.6.3.5: Command line arguments</h6>
<h6>2.3.6.3.5: Command line arguments</h6>
Use the text box to edit the arguments given to the executable file as in `program arguments`.
@ -372,41 +321,41 @@ You can use special codes to insert information specific to the application cont
- `%2`: the port of the web REST API
- `%3`: the currently selected device set index
<h6>2.4.6.3.6: Key binding</h6>
<h6>2.3.6.3.6: Key binding</h6>
Use this checkbox to enable or disable the command execution binding to a key or combination of keys press or release event
<h5>2.4.6.3.7: Key binding capture</h5>
<h5>2.3.6.3.7: Key binding capture</h5>
Use this button to capture the key or key combination that will be used for the key binding. After pushing this button just type in the key or key combination.
<h6>2.4.6.3.8: Key binding display</h6>
<h6>2.3.6.3.8: Key binding display</h6>
This shows the key or combination of keys used for the key binding.
<h6>2.4.6.3.9: Release key binding</h6>
<h6>2.3.6.3.9: Release key binding</h6>
Use this checkbox to bind the key or combination of keys to the key release event. If unchecked the binding will be associated to the key press event.
<h6>2.4.6.3.10: Confirm changes</h6>
<h6>2.3.6.3.10: Confirm changes</h6>
Use the "OK" button to confirm the changes.
<h6>2.4.6.3.11: Cancel changes</h6>
<h6>2.3.6.3.11: Cancel changes</h6>
Use the "Cancel" button to cancel the changes.
<h5>2.4.6.4: Run command or groups of commands</h5>
<h5>2.3.6.4: Run command or groups of commands</h5>
This will run the currently selected command. If the selection is a group it will run all commands of the group starting them in the displayed order. Please note that commands are run in independent processes and therefore all launched commands in the group will run concurrently.
<h5>2.4.6.5: View last command run details</h5>
<h5>2.3.6.5: View last command run details</h5>
This dialog will show the results of the last run including the output (merged stdout and stderr).
![Main Window command output](../doc/img/MainWindow_command_output.png)
<h6>2.4.6.5.1: Process status</h6>
<h6>2.3.6.5.1: Process status</h6>
When the process is not running the stop icon (&#9632;) is displayed. The background color indicate different states:
@ -416,31 +365,31 @@ When the process is not running the stop icon (&#9632;) is displayed. The backgr
When the process is running the play icon (&#9654;) is displayed with an orange background.
<h6>2.4.6.5.2: Refresh data</h6>
<h6>2.3.6.5.2: Refresh data</h6>
Pushing this button will update the data displayed with the latest status. Please note that the log is displayed only when the process is terminated.
<h6>2.4.6.5.3: Start time</h6>
<h6>2.3.6.5.3: Start time</h6>
This is the timestamp of process start. It is filled with dots `...` if the process has never started during this session.
<h6>2.4.6.5.4: End time</h6>
<h6>2.3.6.5.4: End time</h6>
This is the timestamp of process end. It is filled with dots `...` if the process has never terminated during this session.
<h6>2.4.6.5.3: PID</h6>
<h6>2.3.6.5.3: PID</h6>
This is the process PID. It is 0 if the process has never run during this session.
<h6>2.4.6.5.6: Process kill</h6>
<h6>2.3.6.5.6: Process kill</h6>
Use this button to kill (send SIGKILL) the running process. It has no effect if the process is not running.
<h6>2.4.6.5.7: Command line</h6>
<h6>2.3.6.5.7: Command line</h6>
This shows the actual command line that was used to start the process
<h6>2.4.6.5.8: Error status</h6>
<h6>2.3.6.5.8: Error status</h6>
This is the translation of `QProcess::ProcessError`. Possible values are:
@ -452,31 +401,31 @@ This is the translation of `QProcess::ProcessError`. Possible values are:
- `Read error`: an error occurred when attempting to read from the process. For example, the process may not be running.
- `Unknown error`: an unknown error occurred.
<h6>2.4.6.5.9: Exit code</h6>
<h6>2.3.6.5.9: Exit code</h6>
This is the program exit code. When the process crashes this is the signal by which the process end was caused. For example if you kill the process with button (6) it sends the process a SIGKILL (code 9) and therefore the value is 9.
<h6>2.4.6.5.10: Exit status</h6>
<h6>2.3.6.5.10: Exit status</h6>
There are only two possibilities: either the program exits normally but possibly with a non zero exit code or it ends with a crash.
<h6>2.4.6.5.11: Process log</h6>
<h6>2.3.6.5.11: Process log</h6>
This is the log of the process (merged stdout and stderr). Please note that it is updated only on program termination.
<h6>2.4.6.5.12: Exit</h6>
<h6>2.3.6.5.12: Exit</h6>
By pushing the "Close" button the process output window is closed.
<h5>2.4.6.6: Save commands</h5>
<h5>2.3.6.6: Save commands</h5>
This will save the commands immediately. The commands will be automatically saved when the application exits normally.
<h5>2.4.6.7: Delete commands or group of commands</h5>
<h5>2.3.6.7: Delete commands or group of commands</h5>
This will delete the currently selected command or if selection is a group this will delete all commands in the group.
<h5>2.4.6.8: Activate keyboard bindings</h5>
<h5>2.3.6.8: Activate keyboard bindings</h5>
Use this button to activate the keyboard bindings. Note that you need to have this button selected (its background should be lit in beige/orange) for the key bindings to be effective.