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
+8 -3
View File
@@ -1315,7 +1315,10 @@ begin
O.SetState(S.Mode, BW, S.TargetHz, FController.SliceSMeter(SliceId));
O.SetDSPState(0, 0, False, False, FController.FAGCMode);
O.SetSquelchState(S.FMSQOn, S.FMSQLevel);
O.SetExtState(Round(S.Volume * 100), S.Muted, False, False, False);
// TxSel: слайс — источник передачи; Tx: передача идёт именно с него.
O.SetExtState(Round(S.Volume * 100), S.Muted, False,
FController.FTransmitting and (FController.FTxSliceId = SliceId),
FController.FTxSliceId = SliceId);
// Список аудио-устройств (общий PA-список) + текущее устройство слайса.
if Assigned(FController.FAudioOut) then
begin
@@ -1342,9 +1345,11 @@ end;
procedure TPanafallPanel.PushMainFlagExtState;
begin
if not (Assigned(FMainFlag) and FMainFlag.Visible) or (FController = nil) then Exit;
// TxSel: этот слайс выбран для передачи. Пока TX только главный → всегда True.
// Главный VFO = «слайс A» (id 0). TxSel/Tx активны, когда TX-источник = главный.
FMainFlag.SetExtState(FController.ActiveVolume, FController.FMuted,
FController.FSplitTxB, FController.FTransmitting, True);
FController.FSplitTxB,
FController.FTransmitting and (FController.FTxSliceId = 0),
FController.FTxSliceId = 0);
end;
procedure TPanafallPanel.PushMainFlagAudioDevices;