feat: BladeRF and HydraSDR RFOne support (closes #121, closes #203)

- BladeRF 2.0 micro / x40 / x115 detected via SoapyBladeRF (47 MHz–6 GHz,
  TX capable, gain 0–66 dB)
- HydraSDR RFOne detected via SoapyHydraSDR (24 MHz–1800 MHz, RX only,
  linear gain 0–21)
- Both follow the established SoapySDR command-builder pattern and support
  FM demod, ADS-B, ISM, AIS, and I/Q capture
- Bump version to 2.31.0

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
James Smith
2026-07-07 12:08:03 +01:00
parent dfab714104
commit 1faa390ea7
8 changed files with 342 additions and 6 deletions
+6
View File
@@ -27,8 +27,10 @@ from typing import Optional
from .airspy import AirspyCommandBuilder
from .base import CommandBuilder, SDRCapabilities, SDRDevice, SDRType
from .bladerf import BladeRFCommandBuilder
from .detection import detect_all_devices, invalidate_device_cache, probe_rtlsdr_device
from .hackrf import HackRFCommandBuilder
from .hydrasdr import HydraSDRCommandBuilder
from .limesdr import LimeSDRCommandBuilder
from .rtlsdr import RTLSDRCommandBuilder
from .sdrplay import SDRPlayCommandBuilder
@@ -55,6 +57,8 @@ class SDRFactory:
SDRType.AIRSPY: AirspyCommandBuilder,
SDRType.SDRPLAY: SDRPlayCommandBuilder,
SDRType.USRP: USRPCommandBuilder,
SDRType.BLADE_RF: BladeRFCommandBuilder,
SDRType.HYDRA_SDR: HydraSDRCommandBuilder,
}
@classmethod
@@ -214,6 +218,8 @@ __all__ = [
"AirspyCommandBuilder",
"SDRPlayCommandBuilder",
"USRPCommandBuilder",
"BladeRFCommandBuilder",
"HydraSDRCommandBuilder",
# Validation
"SDRValidationError",
"validate_frequency",