feat(slices): мультислайс-TX — выбор TX-слайса, кросс-банд (Flex-паритет)

- RadioController: FTxSliceId (0=главный VFO, >0=слайс), SetTxSlice
  эксклюзивно; ActiveTXFreqHz/ActiveTXMode с TX-слайса, режим применяется
  в SetMOX(True) перед SetTXRun; TxBandIdx для PA-кал и safety DoNotTx
  при кросс-банде; RemoveSlice сбрасывает TX-слайс.
- HPSDRNetwork: TX-антенна выбиралась по RX-бэнду → по TX-частоте
  (TxAnt[FreqToBandIndex(TXFreqHz)]).
- MainForm/PanafallPanel: клик TX на флаге слайса → SetTxSlice, TX-бейджи
  (янтарь=выбран, красный=передаёт), RefreshTxIndicators по rfTransmitting.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-13 18:15:52 +03:00
co-authored by Claude Opus 4.8
parent 9bb86b59b8
commit 8d65f4d6e8
5 changed files with 86 additions and 14 deletions
+4 -2
View File
@@ -1390,9 +1390,11 @@ begin
// Если активен XVTR с RX antenna override (XvtrRxAnt 1..3) — он переопределяет
// RX антенну. TX антенна для XVTR всё равно берётся из Alex.TxAnt[band] —
// обычно та же что для основного HF-band за этой IF-частотой.
BandIdx := FreqToBandIndex(RXFreqHz);
BandIdx := FreqToBandIndex(RXFreqHz); // RX-банд (антенна RX + вторичный вход)
// TX-антенна — по TX-частоте (кросс-банд мультислайс-TX: TX-слайс может быть
// в другом диапазоне, чем RX). RX-антенна — по RX-частоте.
if Transmitting then
AntVal := Alex.TxAnt[BandIdx]
AntVal := Alex.TxAnt[FreqToBandIndex(TXFreqHz)]
else if (XvtrRxAnt >= 1) and (XvtrRxAnt <= 3) then
AntVal := XvtrRxAnt
else