65 Commits
Author SHA1 Message Date
Robin Getz 1b20e538d3 plutoSDR: Make thread running state atomic
m_running is used to synchronize the PlutoSDR manager and runner
threads. The manager-side startWork() and stopWork() functions control
whether the runner in run() should execute.

startWork() reads m_running before starting the QThread and then waits
for run() to set it true. stopWork() sets m_running false to request
that the runner exit, while run() continuously reads the flag and sets
it false when it terminates.

These accesses occur across the manager and runner threads without
atomic synchronization. Make m_running an atomic_bool in the PlutoSDR
input, output, MIMO input, and MIMO output threads to eliminate the data
race identified by ThreadSanitizer.

This can prevent inconsistent thread state during user-driven device
start, stop, and reload operations, where the GUI can cause the manager
thread to start or stop a PlutoSDR runner while that runner is
processing.

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-09-06 23:53:53 -04:00
Robin Getz 893b4ee044 PlutoSDR : Handle PlutoSDR device errors in the GUI
Update the PlutoSDR input, output, and MIMO GUIs to properly handle the
SDRangel device engine entering the StError state following an
asynchronous device failure.

Clear the affected start/stop controls without emitting their signals,
preventing the GUI from attempting to restart or otherwise operate on a
device that has become unavailable. Indicate the error state visually
and display the error message reported by the device engine.

Stop updating device-specific status information while the device engine
is in the error state, since the underlying PlutoSDR device and streaming
resources may already have been closed.

This keeps the GUI state synchronized with the SDRangel device engine
after asynchronous failures such as a disconnected or unavailable
PlutoSDR.

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-09-04 19:48:50 -04:00
Robin Getz 0ec8363c43 PlutoSDR : Handle asynchronous PlutoSDR device errors
Handle asynchronous errors reported by the PlutoSDR streaming threads and
transition the affected SDRangel device to a stopped and closed state.

When a PlutoSDR acquisition or generation thread reports an error, stop
and destroy the affected streaming threads and release the associated
buffers and device resources. For MIMO devices, shut down both acquisition
and generation paths and close the associated RX and TX resources so the
device is left in a consistent state.

Propagate the failure to the SDRangel device engine using the
DSPAcquisitionError and DSPGenerationError messages, including the
underlying error code and a message indicating that the PlutoSDR needs
to be restarted.

Also guard PlutoSDRInput::start() against an unavailable device parameter
object. This can occur after an asynchronous device failure has already
closed the device and prevents a subsequent start operation from
dereferencing an invalid device state.

This ensures that asynchronous failures such as a disconnected PlutoSDR
or an unrecoverable acquisition or generation error do not leave the
SDRangel device engine running against an unavailable device.

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-09-04 19:39:16 -04:00
Robin Getz 9b10827cb4 PlutoSDR: Report PlutoSDR streaming errors from worker threads
Detect negative return values from rxBufferRefill() and txBufferPush() in
the PlutoSDR input, output, and MIMO worker threads. These calls can fail
asynchronously after the device has successfully started, for example
when the PlutoSDR is disconnected or the underlying I/O connection
encounters an error.

Log the underlying error and emit the error code from the affected worker
thread instead of treating the negative return value as an ordinary
short or incomplete buffer.

This allows asynchronous PlutoSDR acquisition and generation failures to
be propagated out of the worker threads and handled by the device and DSP
error-handling infrastructure, rather than allowing the streaming thread
to continue operating with an invalid device state.

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-09-04 19:36:56 -04:00
f4exb ef4357f26b Release 7.25.0 2026-05-04 06:00:17 +02:00
Tammo Jan Dijkema c86c178363 Use Qt6.2 compatible qt_add_plugin in CMake 2026-04-25 17:11:41 +02:00
f4exb 5ae74e9e19 Release 7.23.2 2026-02-14 10:58:43 +01:00
f4exb fcbaf95403 Fixed settings keys 2026-02-12 23:23:27 +01:00
f4exb c8389506e4 Release v7.23.1 2026-02-02 21:38:25 +01:00
f4exb 63348eeee1 Make device title editable in the basic device settings. Fixes #2292 2026-01-28 03:05:39 +01:00
f4exb b935db0228 Publish version 7.22.9 2025-09-28 21:27:43 +02:00
Jon Beniston f204c168f6 Add crash handler on Windows.
Add memory buffer to Logger, so last 500 log messages can be included in crash report.
Generate and include stripped pdb files so stack trace can include function names.
2025-07-31 16:35:44 +01:00
f4exb 8f2ac70621 Updated plugin versions 2024-10-06 10:53:38 +02:00
Edouard Griffiths f522d88fc5 Merge pull request #2252 from srcejon/freq_scanner
Update CMakeLists.txt to allow static libraries to be built
2024-09-13 21:07:04 +02:00
srcejon 1df07b21ae Update CMakeLists.txt to allow static libraries to be built, as well as shared.
Add BUILD_BENCH, BUILD_SHARED_LIBS, ENABLE_AARONIARTSA and ENABLE_METIS options.
2024-09-11 20:16:40 +01:00
DreamNik 202fc96de6 Append prefix to plugin name when running on Android.
Android libraries can't be placed inside subdirectory, so to
distinguish plugins from regular libraries the new prefix is used.
2024-09-05 13:37:51 +03:00
f4exb 585d806ef8 All device plugins: make sure start and stop are effective once only. PArt of #2159 2024-08-27 09:54:09 +02:00
f4exb 3e909d2016 Updated versions and changelogs 2024-06-25 22:19:14 +02:00
Daniele Forsi d8c733cab7 Update properties related to fonts
Automatically updated by opening the .ui file in Qt Creator.
2024-06-23 17:32:49 +02:00
Daniele Forsi 1f9c7efcab Remove uneeded unlocks of QMutexLocker
The mutex will get unlocked anyway when falling out of scope.
2024-06-23 17:32:48 +02:00
f4exb 4770e2d281 Updated versions and changelogs 2024-06-18 00:52:36 +02:00
Daniele Forsi 406bb674c5 Fix typos 2024-06-16 23:38:33 +02:00
Simon Ruderich 3307000a72 plugins: fix non-matching <hx> tags in readme.md 2024-04-26 08:37:24 +02:00
Mykola Dvornik 15337cac66 Fix bug that prevents settings changes updates via reverse API
Most plugins that use reverse API to PATCH settings updates to remote
server only do so when `useReverseAPI` is toggled, but not when the
relevant settings are being updated. So lets fix the precondition to
use the `m_useReverseAPI` flag instead.
2024-04-14 18:58:12 +02:00
f4exb cdae5ca048 Updated versions and changelogs 2024-04-14 11:41:00 +02:00
Daniele Forsi 8c3f7e3775 Remove unused includes and use more direct includes 2024-04-11 23:31:34 +02:00
f4exb ac651ff798 Updated versions and changelogs 2024-02-18 11:56:40 +01:00
hexinyue02 09ba1cc700 Fix: GUI handle Startstop message 2024-02-04 18:53:32 +08:00
f4exb 8ce5ca51e2 Apply PR #1888 changes to samplemimo plugins 2023-11-29 05:06:54 +01:00
f4exb 743260db96 Rewriting of copyright notices for plugins/samplemimo. Part of #1893 2023-11-18 06:40:23 +01:00
f4exb 028a44ce48 Updated versions and changelogs 2023-08-20 23:12:59 +02:00
Benjamin Menkuec 4696c9dd56 fix variable names in in plutosdrmimosettings.cpp 2023-08-09 13:14:18 +02:00
Daniele Forsi c6195634f9 Fix repeated words
Found with:
grep -r " \([[:alpha:]]\+\) \1 " --color=yes --include=*.md
2023-05-04 21:42:49 +02:00
Jon Beniston 0dd466a900 Add DialogPositioner to ensure dialogs are fully on screen and remain on
screen when screen orientation changes.
Add DialPopup to allow dials to adjusted with a slider, which is easier
on touchscreens.
Add TableTapAndHold to support table context menus on touchscreens.
2022-12-20 10:31:15 +00:00
Jon Beniston fc7c9c1fc8 Update CMakeLists.txt to support both Qt5 and Qt6. Add option ENABLE_QT6 2022-11-17 14:34:54 +00:00
Jon Beniston ee8b8ade88 Device GUIs: Constain window size via minimumSize/maximumSize, rather than handling resizeEvent. Add maximum button. Hide size buttons when window size is fixed 2022-11-09 15:53:44 +00:00
f4exb 3814a95073 Updated versions and changelogs 2022-11-01 23:51:06 +01:00
f4exb 9576dd0f7b PlutoSDR MIMO: Make settings assignments atomic. Part of #1329 2022-11-01 18:52:17 +01:00
f4exb f034319c22 Updated versions and changelogs 2022-10-19 17:40:14 +02:00
Jon Beniston 929e0d34dc Adjust number of frequency digits depending whether transverter is enabled 2022-10-17 13:43:32 +01:00
f4exb 949a9e9380 Center frequency dials up to 9 digits and transverter delta frequency dial up to 12 digits. Fixes #1476 2022-10-15 03:04:29 +02:00
f4exb de94ea01b5 Updated main and plugin versions 2022-05-14 13:16:33 +02:00
f4exb 9e5c629473 v7: API: added workspace handling for device, spectrum, feature and channel. Implements #1242 2022-05-13 22:24:48 +02:00
f4exb 520106c7ba Massive UI revamping (v7): fixed devices .ui files to correct display wwhen creating device. Part of #1209 2022-04-27 02:06:17 +02:00
f4exb 218237c466 Massive UI revamping (v7): Devices: set the border on the outer side of the window. Part of #1213 2022-04-24 02:13:18 +02:00
f4exb 5a265d7fe3 Massive UI revamping (v7): fixed widget size handling: sample MIMO. Part of #1209 2022-04-21 21:44:57 +02:00
f4exb 249db03cf3 Massive UI revamping (v7): fixed device workspace index save/restore and removed useless geometry blobs. Fixes #1207 2022-04-20 20:08:41 +02:00
f4exb 40e34bdebd Massive UI revamping (v7): implemented device common settings from top bar and added documentation on device windows top and bottom bars 2022-04-17 01:31:50 +02:00
f4exb 32973132d9 Massive UI revamping (v7): unify custom widget borders 2022-04-10 02:19:26 +02:00
f4exb cfde845b5a Massive UI revamping (v7): devices UIs update 2022-04-09 22:05:55 +02:00