Lab043: add hardware diagnostics and HackRF comparison tools
This commit is contained in:
@@ -41,12 +41,31 @@ class CapturedPrbsAnalysis:
|
||||
modes: dict[str, lab043.PrbsModeMetrics]
|
||||
|
||||
|
||||
def preflight_pluto() -> dict:
|
||||
def discover_pluto_usb_uri() -> str:
|
||||
"""Найти единственный Pluto+ через прямой USB-IIO без изменения сети."""
|
||||
|
||||
import iio
|
||||
|
||||
contexts = iio.scan_contexts()
|
||||
candidates = sorted(
|
||||
uri
|
||||
for uri, description in contexts.items()
|
||||
if uri.startswith("usb:") and "PlutoSDR" in description
|
||||
)
|
||||
if len(candidates) != 1:
|
||||
raise RuntimeError(
|
||||
"Ожидался ровно один USB-IIO контекст PlutoSDR, "
|
||||
f"получено {len(candidates)}: {candidates}"
|
||||
)
|
||||
return candidates[0]
|
||||
|
||||
|
||||
def preflight_pluto(uri: str = PLUTO_URI) -> dict:
|
||||
"""Подтвердить IIO-контекст, PHY и первый TX-канал без передачи."""
|
||||
|
||||
import iio
|
||||
|
||||
context = iio.Context(PLUTO_URI)
|
||||
context = iio.Context(uri)
|
||||
phy = context.find_device("ad9361-phy")
|
||||
tx_device = context.find_device("cf-ad9361-dds-core-lpc")
|
||||
tx_channel = tx_device.find_channel("voltage0", True) if tx_device is not None else None
|
||||
@@ -55,7 +74,7 @@ def preflight_pluto() -> dict:
|
||||
if tx_device is None or tx_channel is None:
|
||||
raise RuntimeError("IIO-контекст открыт, но первый TX-канал недоступен")
|
||||
return {
|
||||
"uri": PLUTO_URI,
|
||||
"uri": uri,
|
||||
"context_opened": True,
|
||||
"phy_name": str(phy.name),
|
||||
"tx_device_name": str(tx_device.name),
|
||||
@@ -100,16 +119,17 @@ def preflight_rtlsdr() -> dict:
|
||||
sdr.close()
|
||||
|
||||
|
||||
def configure_pluto() -> tuple[object, dict]:
|
||||
def configure_pluto(uri: str = PLUTO_URI) -> tuple[object, dict]:
|
||||
import adi
|
||||
|
||||
device = adi.Pluto(uri=PLUTO_URI)
|
||||
device = adi.Pluto(uri=uri)
|
||||
device.sample_rate = int(lab043.SAMPLE_RATE_HZ)
|
||||
device.tx_lo = int(lab043.CARRIER_HZ)
|
||||
device.tx_rf_bandwidth = int(RF_BANDWIDTH_HZ)
|
||||
device.tx_hardwaregain_chan0 = float(TX_GAIN_DB)
|
||||
device.tx_cyclic_buffer = False
|
||||
return device, {
|
||||
"uri": uri,
|
||||
"requested_center_frequency_hz": int(lab043.CARRIER_HZ),
|
||||
"actual_center_frequency_hz": int(device.tx_lo),
|
||||
"requested_sample_rate_hz": int(lab043.SAMPLE_RATE_HZ),
|
||||
|
||||
Reference in New Issue
Block a user