feat(pluto): выбор антенного разъёма RX/TX на диапазон (LibreSDR/AntSDR)

Второй разъём у AD936x-плат — это второй КАНАЛ чипа (не порт B первого), и в
1R1T-образе он выбирается мультиплексором AD9361: debug-параметры
adi,1rx-1tx-mode-use-rx-num/-tx-num + биты RX1/RX2, TX1/TX2 регистров 0x3/0x2
(как switch_rfinput.sh/switch_rfoutput.sh прошивки). rf_port_select тут ни при
чём — прошивка его к тому же блокирует.

- IIOBindings: debug-атрибуты + прямой доступ к регистрам.
- PlutoBackend: детект второго разъёма (2R2T-каналы либо мультиплексор + модель
  платы), SetAntPorts(RxPort,TxPort), ApplyRxMux/ApplyTxMux; Caps.HasAntSwitch.
  ⚠ApplyGain(Force): драйвер пропускает запись gain_control_mode, если считает
  режим неизменным, — а у нового канала AGC-регистры не запрограммированы (в
  железе крутится auto-AGC, hardwaregain отвергается EOPNOTSUPP). Форсируем
  перепрог через другой режим после смены разъёма и после ad9361_set_bb_rate.
- RadioBackend: TBackendCaps.HasAntSwitch + virtual SetAntPorts (HPSDR — no-op,
  там антеннами рулит Alex).
- Settings: секция ant936x (разъём RX/TX на диапазон и на слот трансвертера);
  hw-AGC (режим + manual gain) переехал в TBandSettings/TXvtrEntry — теперь он
  свой на каждом диапазоне и трансвертере.
- RadioController: FAnt936x + ApplyAntPorts (RestoreBand/ActivateXvtr/
  StartRunning); ApplyBandDSP восстанавливает hw-AGC диапазона.
- SettingsForm: вкладка Antenna — Alex-таблица (openHPSDR) либо таблица
  разъёмов AD936x по диапазонам/трансвертерам.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-13 21:26:18 +03:00
co-authored by Claude Opus 4.8
parent a2e403af3d
commit 9dd38e1dd3
8 changed files with 673 additions and 32 deletions
+16 -2
View File
@@ -17,9 +17,9 @@
<UseVersionInfo Value="True"/>
<AutoIncrementBuild Value="True"/>
<MinorVersionNr Value="9"/>
<BuildNr Value="258"/>
<BuildNr Value="272"/>
</VersionInfo>
<MacroValues Count="77">
<MacroValues Count="91">
<Macro1 Name="LCLWidgetType" Value="qt6"/>
<Macro2 Name="LCLWidgetType" Value="qt6"/>
<Macro3 Name="LCLWidgetType" Value="qt6"/>
@@ -97,6 +97,20 @@
<Macro75 Name="LCLWidgetType" Value="qt6"/>
<Macro76 Name="LCLWidgetType" Value="qt6"/>
<Macro77 Name="LCLWidgetType" Value="qt6"/>
<Macro78 Name="LCLWidgetType" Value="qt6"/>
<Macro79 Name="LCLWidgetType" Value="qt6"/>
<Macro80 Name="LCLWidgetType" Value="qt6"/>
<Macro81 Name="LCLWidgetType" Value="qt6"/>
<Macro82 Name="LCLWidgetType" Value="qt6"/>
<Macro83 Name="LCLWidgetType" Value="qt6"/>
<Macro84 Name="LCLWidgetType" Value="qt6"/>
<Macro85 Name="LCLWidgetType" Value="qt6"/>
<Macro86 Name="LCLWidgetType" Value="qt6"/>
<Macro87 Name="LCLWidgetType" Value="qt6"/>
<Macro88 Name="LCLWidgetType" Value="qt6"/>
<Macro89 Name="LCLWidgetType" Value="qt6"/>
<Macro90 Name="LCLWidgetType" Value="qt6"/>
<Macro91 Name="LCLWidgetType" Value="qt6"/>
</MacroValues>
<BuildModes>
<Item Name="Debug" Default="True"/>