mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
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:
+14
-3
@@ -573,6 +573,7 @@ type
|
||||
procedure OnVfoOverlayAudioDevice(DevIndex: Integer; const DevName: string);
|
||||
procedure OnVfoOverlaySplit(Sender: TObject);
|
||||
procedure OnVfoOverlayTxSelect(Sender: TObject);
|
||||
procedure RefreshTxIndicators; // TX-бейджи всех флагов
|
||||
procedure OnVfoOverlaySliceSelect(Sender: TObject); // выбрать слайс активным
|
||||
procedure OnVfoOverlayClose(Sender: TObject); // × — удалить слайс
|
||||
procedure OnVfoOverlayInvalidate(Sender: TObject);
|
||||
@@ -1351,6 +1352,7 @@ begin
|
||||
FSpecView.TXMode := FController.FTransmitting and not FController.FDisplayDuplex;
|
||||
FSpecView.TXOverlay := FController.FTransmitting;
|
||||
ApplySpecViewGridFromState; // сетка спектра под активный тракт
|
||||
RefreshTxIndicators; // TX-бейджи флагов (какой слайс передаёт)
|
||||
end; // (DUC-очередь сбрасывает SetMOX)
|
||||
rfTuning:
|
||||
StyleButton(BtnTUN, FController.FTuning);
|
||||
@@ -5385,10 +5387,19 @@ end;
|
||||
|
||||
procedure TMainForm.OnVfoOverlayTxSelect(Sender: TObject);
|
||||
begin
|
||||
// TODO(слайсы): выбор TX-слайса при полноценной мультислайс-передаче.
|
||||
// Пока передаёт только главный канал — клик по TX неглавного игнорируем.
|
||||
if CurSliceId <> 0 then Exit;
|
||||
// Мультислайс-TX: клик по TX-бейджу делает слайс источником передачи
|
||||
// (эксклюзивно). CurSliceId=0 — главный VFO.
|
||||
FController.SetTxSlice(CurSliceId); // → Changed(rfTransmitting) → RefreshTxIndicators
|
||||
end;
|
||||
|
||||
procedure TMainForm.RefreshTxIndicators;
|
||||
// Обновить TX-бейджи (TxSel/Tx) на всех флагах всех панов после смены
|
||||
// TX-слайса / состояния передачи.
|
||||
var i: Integer;
|
||||
begin
|
||||
FPan.PushMainFlagExtState;
|
||||
for i := 0 to MAX_PANS - 1 do
|
||||
if FPans[i] <> nil then FPans[i].PushAllSliceFlagStates;
|
||||
end;
|
||||
|
||||
procedure TMainForm.OnVfoOverlayAudioDevice(DevIndex: Integer; const DevName: string);
|
||||
|
||||
Reference in New Issue
Block a user