1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-07-15 07:14:26 -04:00
Commit Graph

15 Commits

Author SHA1 Message Date
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
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
f4exb d82c1172cd PlutoSDR support: appply Sonar suggestion but for C++17 2026-04-16 12:00:27 +02:00
f4exb 8888759aef PlutoSDR: filter PlutoSDR and AD93 device description to catch also PlutoSDR clones. Fixes #2686 2026-04-15 23:18:53 +02:00
f4exb b120f9cb01 Rewriting of copyright notices for all but plugins (done), sdrbase, sdrgui. Part of #1893 2023-11-19 13:43:10 +01:00
Andreas Baulig 94ab1bb438 Use shared_ptr to keep track of DeviceScan across multiple collections
Fixes #681.

Relying on memory allocated by `std::vector` via direct pointers is dangerous,
as vectors may move buffers during resize. This fix puts the `DeviceScan`
allocation into a `str::shared_ptr`, which 1) allocates the memory on heap and
2) keeps track of the memory through reference counting. Thus it is safe to
store the `shared_ptr` across different vectors/maps.
2021-05-30 09:34:46 +00:00
f4exb d0858f21fb Added possibility to specify devices that cannot be discovered automatically. This implements #445 2019-12-16 01:03:47 +01:00
f4exb ee3313dc82 Plugins device enumeration optimization: factorization of common code for Rx/Tx devices 2019-10-09 07:39:52 +02:00
f4exb ef15157a50 Fixed incomplete copyright headers (1) 2019-04-11 06:39:30 +02:00
Sebastian Weiss af2cb5462c implement networked PlutoSDR 2019-03-02 17:47:00 +01:00
f4exb d110a3749d Moved logger to QtApplication level. Corrections to some messages 2017-11-11 11:11:44 +01:00
f4exb 9ba88b396b PlutoSDR: remove from device enumeration if device is not accessible (allocate context fails) 2017-09-23 03:42:58 +02:00
f4exb e4c1892930 PlutoSDR: clear the device scan list before (re)scanning 2017-09-19 23:11:03 +02:00
f4exb de88e305db PlutoSDR: added PlutoSDRDevice and PlutoSDRScan common device classes 2017-09-02 04:21:41 +02:00