1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-07-25 19:44:12 -04:00
Commit Graph

11154 Commits

Author SHA1 Message Date
Edouard Griffiths f3c1d648ee Merge pull request #2812 from rgetz/rgetz-fix-2779
PlutoSDR: Guard against null buddy shared pointers | Fix #2779
2026-07-20 05:21:49 +02:00
Edouard Griffiths 8d5bdaee80 Merge pull request #2811 from srcejon/fix_2801
Fix kiwiSDRs on Map
2026-07-19 23:52:22 +02:00
Edouard Griffiths 6d81b0ac3d Merge pull request #2810 from srcejon/fix_2806
AaroniaRTSAInput::webapiReportGet: getAaroniaRtsaReport rather than getAirspyHfReport.
2026-07-19 23:02:55 +02:00
Edouard Griffiths 04eedc5083 Merge pull request #2809 from srcejon/fix_2808
Update bladerf to 2025.10
2026-07-19 22:25:51 +02:00
Robin Getz af4c366cb7 PlutoSDR: Guard against null buddy shared pointers | Fix #2779
Add defensive null checks before dereferencing DeviceAPI::getBuddySharedPtr()
in the PlutoSDR input and output plugins.

DeviceAPI initializes the buddy shared pointer to nullptr, so a buddy may
exist before its shared state has been attached. This could result in null
pointer dereferences during device initialization, buddy thread
suspend/resume, or settings application.

Changes include:
- Validate buddy shared pointer in openDevice() and fail gracefully if absent.
- Guard suspendBuddies() and resumeBuddies() against null shared pointers.
- Skip buddies without shared state during applySettings() while logging a
  warning.
- Prevent dereferencing null buddy shared pointers when restarting buddy
  threads.

These changes improve robustness during PlutoSDR buddy initialization and
avoid crashes caused by partially initialized buddy relationships.

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-07-19 12:59:17 -04:00
Jon Beniston 7d84040e77 Update kiwisdr list URL 2026-07-19 17:16:04 +01:00
Jon Beniston ad5ca070e8 Fix constant to be 32MHz instead of 320MHz. Fixes #2801 2026-07-19 17:09:30 +01:00
Jon Beniston 97cabdeb71 getAaroniaRtsaReport rather than airspy. 2026-07-19 16:35:58 +01:00
Jon Beniston ca8ad7e45b Update bladerf to 2025.10 for #2808 2026-07-19 16:23:31 +01:00
Edouard Griffiths 50fee6f643 Merge pull request #2800 from rgetz/rgetz-fix-coverity-adsbmodgui
fix some minor issues coverity pointed out in adsbmodgui
2026-07-13 12:44:16 +02:00
Robin Getz b834b80f05 adsb: fix BDS 2,1 registration character decoding
Fix an incorrect bit shift when decoding aircraft registration
markings from BDS 2,1 Comm-B messages.

Coverity (CID 649088) reported that the expression
'(data[7] & 0x1) >> 3' always evaluates to zero, causing one bit of
the 6-bit character value to be discarded.

The BDS 2,1 aircraft registration marking format encodes seven
6-bit characters. Based on the bit layout defined in ICAO Doc 9871
(Technical Provisions for Mode S Specific Services) and verified
against independent implementations such as pyModeS/rs1090, the
remaining bit from data[7] is the most significant bit of the
character and must be shifted left, not right.

Update the extraction to preserve this bit when combining it with
the remaining bits from data[8].

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-07-12 19:35:04 -04:00
Robin Getz 810b0524fb adsb: fix Coverity UNINIT_CTOR warning in AircraftModel
Initialize the AircraftModel settings pointer to nullptr.

Coverity (CID 649096) flagged m_settings as potentially
uninitialized because the compiler-generated constructor does not
initialize it. Initialize it to nullptr, which is the appropriate
default until setSettings() provides a valid pointer.

This is likely not an issue, as m_settings is typically assigned
shortly after construction. However, correctness depends on that
assumption holding everywhere. Initializing it in the declaration
costs nothing, removes the dependency on initialization order, and
eliminates this class of bugs.

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-07-12 19:16:08 -04:00
Robin Getz b3afa02023 adsb: fix Coverity UNINIT_CTOR warning in Aircraft
Initialize the remaining Aircraft members that were previously left
uninitialized by the constructor.

Coverity (CID 649090) flagged m_pressureAltitude, m_squawk,
m_range, m_lastColor, m_prevTrack, and
m_trackWhenHeadingSet as potentially uninitialized. Initialize
them to sensible default values consistent with their intended use.

This is likely not an issue, as these members are generally
initialized before use. However, correctness depends on that
assumption holding everywhere. Initializing them in the constructor
costs nothing, removes the dependency on call ordering, and
eliminates this class of bugs.

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-07-12 19:07:43 -04:00
Robin Getz 12aa80686d adsb: fix Coverity UNINIT_CTOR warning in Interogator
Initialize all coordinate boundary members in the Interogator
constructor.

Coverity (CID 649097) flagged m_minLatitude, m_maxLatitude,
m_minLongitude, and m_maxLongitude as potentially uninitialized.
Initialize them to max()/lowest() sentinel values so subsequent
min/max accumulation logic operates on defined data.

This is likely not an issue, but safety depends on discipline
across the entire codebase, every place these members are
accessed must check m_valid first. Cleaner approach is to just
initialize them, it costs nothing and eliminates the entire class of bugs.

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-07-12 18:37:13 -04:00
Edouard Griffiths 92421b02ff Merge pull request #2799 from rgetz/rgetz-cmake-updates
cmake: enforce minimum versions for CM256cc and Codec2 dependencies
2026-07-11 19:34:29 +02:00
Edouard Griffiths 9a3bd35608 Merge pull request #2797 from munzzyy/fix_2764
LocalSink: fix crash when adding channel with no Local Input device (#2764)
2026-07-11 15:49:47 +02:00
Edouard Griffiths 315f642861 Merge pull request #2796 from srcejon/android_fixes
Android Qt6 support
2026-07-11 15:05:06 +02:00
Edouard Griffiths 7d622d180b Merge pull request #2795 from munzzyy/fix-faad2-heap-overflow-2766
bump bundled faad2 to 2.10.1, fixes heap overflow (#2766)
2026-07-11 03:40:50 +02:00
Robin Getz 6b353ffd1c cmake: verify minimum codec2 version during discovery
Use pkg-config to verify that codec2 >= 1.1.1 is available before
searching for the headers and library.

If CODEC2_DIR is specified, treat it as an explicit user override and
search that installation directly. Otherwise, use pkg-config to validate
the minimum supported version. If pkg-config is unavailable or an older
codec2 version is installed, disable codec2 support while allowing the
rest of the project to configure normally.

Also update the pkg-config search hints to use the documented
PC_CODEC2_INCLUDE_DIRS and PC_CODEC2_LIBRARY_DIRS variables.

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-07-10 20:32:52 -04:00
Robin Getz 0f905d015a cmake: verify minimum libcm256cc version via pkg-config
libcm256cc does not expose its package version through its headers or
shared library, making it impossible to verify a minimum supported
version after discovery leading to errors when building.

When CM256CC_DIR is not specified, use pkg-config to verify that
libcm256cc >= 1.1.2 is available before searching for the headers and
library. If the required version is not found, disable CM256 support
and continue configuring the rest of the project.

When CM256CC_DIR is provided, treat it as an explicit user override and
search that installation directly and blindly (don't check version).

Also update the pkg-config hint variables to use the documented
*_INCLUDE_DIRS and *_LIBRARY_DIRS outputs from pkg_check_modules().
https://cmake.org/cmake/help/latest/module/FindPkgConfig.html

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-07-10 20:02:08 -04:00
Edouard Griffiths bb52c52c9e Merge pull request #2794 from srcejon/fix_api_address
Fix WebAPI link in About dialog (Display 127.0.0.1 rather than 0.0.0.0)
2026-07-10 22:15:48 +02:00
munzzyy 9115e23184 LocalSink: fix crash when adding channel with no Local Input device. Fixes #2764 2026-07-10 14:15:24 -05:00
Edouard Griffiths d51e05acbd Merge pull request #2792 from dawkagaming/master
Add detection for 3 more architectures
2026-07-10 16:34:23 +02:00
Edouard Griffiths a86ae78f3a Merge pull request #2791 from srcejon/fix_2788
Attempt to fix corrupt spectrum on Mac when MSAA enabled.
2026-07-10 10:47:13 +02:00
Cole Munz 63f61b9086 faad2: build from git with cmake instead of bootstrapping the tarball
Review feedback on the 2.10.1 bump: the autotools bootstrap step won't
work on Windows. faad2 gained CMake support in 2.11.0, so fetch the
repo at 2.11.2 and build it the same way as opus and hidapi.
FAAD_BUILD_CLI=OFF skips the frontend executable; only libfaad is
needed.
2026-07-09 21:11:09 -05:00
Jon Beniston b3fe4235a3 Fix pinch on Android 2026-07-09 23:33:21 +01:00
Edouard Griffiths 85a67e513d Merge pull request #2790 from srcejon/mac_ci
libsigmf: Fix path to library for Mac build
2026-07-10 00:23:46 +02:00
Jon Beniston 83c929a63a Add Android activity and resources. 2026-07-09 23:23:32 +01:00
Jon Beniston 4a21b0cf9b Request location, microphone and camera permissions. 2026-07-09 23:19:21 +01:00
Jon Beniston 4f06215965 Get Qt6 build working on Android. 2026-07-09 23:16:19 +01:00
Cole Munz 499b75f0d2 bump bundled faad2 to 2.10.1, fixes heap overflow (#2766) 2026-07-09 16:37:40 -05:00
Jon Beniston 9241af25a7 Fix WebAPI link in About dialog (Display 127.0.0.1 rather than 0.0.0.0) 2026-07-09 10:30:25 +01:00
dawkagaming 367c86d289 Add detection for 3 more architectures 2026-07-08 19:13:56 +02:00
Jon Beniston a83dd8b8a0 Use default QSurfaceFormat when MSAA enabled. May fix #2788, #2022 and #1616 2026-07-07 14:06:13 +01:00
Jon Beniston 84613e71bf libsigmf: Fix path to library for Mac build 2026-07-07 00:36:37 +01:00
Edouard Griffiths 8fb29c9ddd Merge pull request #2787 from rgetz/rgetz-update-plutosdr-connection-mgr
Improve PlutoSDR discovery robustness and identitection mgr
2026-07-05 04:59:01 +02:00
Robin Getz 9632d6d9c7 plutosdr: resolve ambiguous mDNS URIs using discovered endpoint
Fix mDNS discovery ambiguity where multiple devices across
different network segments/subnets can advertise the same hostname (e.g.
"ip:pluto.local"), resulting in non-unique or misleading URIs.

Replace unresolved mDNS hostnames with the actual discovered endpoint
reported in the scan description.
- Detect ".local" URIs on IP backend and substitute hostname with
  resolved endpoint from libiio scan results.
- Preserve URI semantics:
  - Keep backend prefix ("ip:")
  - Preserve optional port suffix
  - Correctly format IPv6 literals with RFC2732 bracket notation when
    required
- Add replaceHostnameWithIP() to perform URI normalization during scan:
  - Only applies to IP backend URIs
  - Only triggers for mDNS-based ".local" hostnames
  - Uses scan-provided endpoint (from description string) as authoritative
    address instead of advertised hostname
- Extend scan() to emit both original and resolved URIs for debugging
  and verification during device discovery.

This resolves inconsistent device addressing when multiple PlutoSDRs
are accessible via mDNS across different subnets or network segments.

No change to backend enumeration or device identity logic; this only
normalizes .local IP URI resolution at scan time.

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-07-04 16:46:23 -04:00
Robin Getz cfeac1dc11 plutosdr: refactor device identity and backend-based grouping
Improve PlutoSDR device identity handling to correctly distinguish
multiple libiio backends (IP, USB, etc.) and provide stable grouping
of physically identical hardware in the UI.
- Append backend prefix to scanned device serials to ensure uniqueness
  across multiple discovery paths (e.g. "<serial>_ip", "<serial>_usb").
  This prevents collisions when the same device is visible through
  different transports.
- Add physical serial extraction and grouping logic so that devices
  discovered via multiple backends are treated as a single physical
  unit for display purposes. This stabilizes UI numbering and avoids
  duplicate entries for the same hardware.
- Update enumOriginDevices() to:
  - group devices by physical serial rather than scan index
  - assign stable per-device indices independent of backend enumeration
  - include backend label in the display name to distinguish connection
    paths when multiple backends are active
- Introduce helper utilities:
  - createBackendSuffix(): extract backend identifier from libiio URI
  - getPhysicalSerial(): strip backend suffix for grouping logic
  - getBackendLabel(): format backend suffix for user-facing display

These changes ensure:
- unique internal identifiers per backend connection
- consistent grouping per physical device across discovery mechanisms
- improved UI clarity when multiple access paths exist for the same SDR

No change to RF/data path behavior; this is purely a discovery and
presentation-layer refactor.

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-07-04 16:41:16 -04:00
f4exb 1f9b0ebb31 Release v7.27.1 v7.27.1 2026-07-04 18:22:23 +02:00
Edouard Griffiths 60c3885469 Merge pull request #2784 from gretel/fix-meshcore
fix incomplete modmeshcore
2026-07-04 16:44:32 +02:00
Tom Hensel 3036bbdccc fix: guard GCC-specific COMPILE_FLAGS in modemmeshcore with if (NOT MSVC)
The Monocypher vendored C files use -Wno-unused-function / -Wno-unused-parameter
compile flags that are GCC/Clang-only syntax. MSVC chokes on them with:

  cl : Command line error D8021 : invalid numeric argument '/Wno-unused-function'

Wrap the set_source_files_properties call in if (NOT MSVC) so the flags
are applied on macOS/Linux but skipped on Windows. The swagger CMakeLists.txt
uses the same pattern.
2026-07-04 13:17:44 +02:00
Tom Hensel dd0b2a4f1d docs: update readmes to reflect dedicated MeshCore SWG schemas (PR #2784)
Both plugin readmes listed the SWGMeshtastic* placeholder as an
outstanding item needing dedicated SWGMeshcore* schemas. This PR
provides exactly that — strike the stale todo and note the resolution.
2026-07-04 12:42:22 +02:00
Tom Hensel 2692b56c64 fixup: add missing CMake integration, export.h, and MeshCore swagger schemas
PR #2775 merged the MeshCore plugin source files but omitted the
parent CMakeLists.txt changes, the export.h API macro, and all
MeshCore-specific Swagger schema types. Without these the plugins
do not build and the REST API serves Meshtastic types for MeshCore
channels.

Adds:
- CMakeLists.txt parent directories + option definitions
- exports/export.h MODEMMESHCORE_API macro
- MeshcoreDemod/Mod swagger YAML specs + SWG client classes
- SWGChannelSettings/Report/Actions/ModelFactory MeshCore types
- Rename 164 Meshtastic donor references in plugin code
2026-07-04 12:31:14 +02:00
f4exb 0bb7a1e600 Release v7.27.0 v7.27.0 2026-07-04 09:55:26 +02:00
Robin Getz b7b9e2c9e6 style: normalize indentation by replacing tabs with spaces
Convert tab-based indentation to spaces to match the project's
existing coding style. No functional changes.

Signed-off-by: Robin Getz <rgetz503@gmail.com>
2026-06-26 20:26:39 -04:00
Edouard Griffiths 728a2ac444 Merge pull request #2776 from gretel/pr/soapysdr-tx-fixes
Fix SoapyUHD TX signal path and MCR pinning
2026-06-25 16:21:38 +02:00
Edouard Griffiths 01a33ef1d7 Merge pull request #2775 from gretel/pr/meshcore-plugins
Add MeshCore protocol RX and TX channel plugins
2026-06-25 04:16:12 +02:00
Edouard Griffiths 089b1d4b06 Merge pull request #2772 from srcejon/fix_2771
Disable AVX instructions in limesuite for flatpak and snap
2026-06-24 21:40:28 +02:00
Tom Hensel abc8bd32df soapysdroutput: fix SoapyUHD TX signal path and MCR pinning
Fix multiple issues preventing SoapySDR output from producing RF:

- handleInputMessages() never called in DSP engine thread (Qt signal
  lost without event loop) - scheduled properly
- setGain() moved to start() post-activation (pre-activation gain
  silently fails on SoapyUHD)
- fullScale threshold corrected for CS16 format detection
- Timed first write pattern matching gr4-lora SoapySink

MCR pinning for SoapyUHD: inject auto_tick_rate=0 in
DeviceSoapySDR device-open path to prevent UHD from re-deriving the
master clock rate on set_tx_rate(), which breaks the decimator chain
and produces no RF. Also reads SDRANGEL_USRP_MASTER_CLOCK_RATE_HZ env
var for optional MCR override.

TX diagnostic counters: SoapySDROutputThread tracks packets,
underflows, errors. Exposed via REST as streamSettingsArgs
key-value pairs.
2026-06-24 20:19:27 +02:00
Tom Hensel 92552f6b4f meshcore: add MeshCore protocol RX/TX channel plugins 2026-06-24 20:19:20 +02:00