Phase 3 (WA2e): move web Freq/FreqA handlers into the adapter

With ApplyVfoA now a thin SetVfoA delegate (channel orchestration on the
OnAfterTune hook), the web Freq/FreqA handlers carry no MainForm logic — move
them to TWebAdapter.OnFreq (active-VFO routing → SetVfoA/SetVfoB) and OnFreqA
(SetVfoA). CAT freq (CATSetVfoA/SyncCATVfoA) left as-is — moves with the CAT
adapter (Phase 4).

Remaining host-coupled web handlers: Run / Connect / device CRUD (daemon entry).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Uladzimir Karpenka
2026-06-09 10:18:59 +03:00
co-authored by Claude Opus 4.8
parent 7630172e50
commit 0a0a5c455e
2 changed files with 26 additions and 37 deletions
+5 -37
View File
@@ -436,9 +436,7 @@ type
// Чистые-контроллерные перенесены в TWebAdapter (Mode/Filter/AGC/AGCTop/Volume/
// WfAGC/WfNF/Mute/NR/NB/SNB/ANF/FreqB/Center/Attn/ActiveVfo/Ctun/MOX/Tun/FMStep/
// ClientActive). Здесь только то, что дёргает UI-обёртки MainForm.
procedure WebOnFreq(Hz: Double);
procedure WebOnRun(On_: Boolean);
procedure WebOnFreqA(Hz: Double);
// Discovery / connect / saved-CRUD из web (маршалятся в UI)
procedure WebOnConnect(const IP: string);
procedure WebOnDiscover;
@@ -454,9 +452,7 @@ type
procedure SyncWebDevAutoStart;
procedure PushDeviceListToWeb; // store → FWebServer.SetDeviceList
// Synchronize-обёртки (выполняются в UI-потоке) — только host-зависимые
procedure SyncWebFreq;
procedure SyncWebRun;
procedure SyncWebFreqA;
// --- CAT callbacks -------------------------------------------------------
function CATGetVfoA: Double;
function CATGetVfoB: Double;
@@ -880,12 +876,12 @@ begin
FWebServer.OnTun := FWebAdapter.OnTun;
FWebServer.OnFMStep := FWebAdapter.OnFMStep;
// Host-зависимые (UI-обёртки) — пока на MainForm:
FWebServer.OnFreq := WebOnFreq;
FWebServer.OnFreq := FWebAdapter.OnFreq;
FWebServer.OnBand := FWebAdapter.OnBand;
FWebServer.OnSpan := FWebAdapter.OnSpan;
FWebServer.OnRun := WebOnRun;
FWebServer.OnDrive := FWebAdapter.OnDrive;
FWebServer.OnFreqA := WebOnFreqA;
FWebServer.OnFreqA := FWebAdapter.OnFreqA;
FWebServer.OnWebMic := FWebAdapter.OnMic;
FWebServer.OnXvtrBand := FWebAdapter.OnXvtrBand;
FWebServer.OnConnect := WebOnConnect;
@@ -4657,25 +4653,9 @@ end;
// не трогать UI и WDSP из чужого потока.
// ===========================================================================
procedure TMainForm.WebOnFreq(Hz: Double);
begin
FWebSyncFreq := Hz;
FWebSyncM := SyncWebFreq;
TThread.Synchronize(nil, FWebSyncM);
end;
procedure TMainForm.SyncWebFreq;
begin
// Веб шлёт "freq" для активного VFO — маршрутизируем через те же команды,
// что и десктоп (рендер/сеть/band-detect внутри них и в OnControllerState).
if FController.FActiveVfo = 0 then
ApplyVfoA(Round(FWebSyncFreq))
else
FController.SetVfoB(FWebSyncFreq);
end;
// Mode/Filter/AGC/AGCTop/Volume/WfAGC/WfNF/Mute/NR/NB/SNB/ANF/FreqB/Center/Attn +
// ClientActiveChanged перенесены в TWebAdapter (чистые команды контроллера).
// Mode/Filter/AGC/AGCTop/Volume/Drive/Span/Band/XvtrBand/Freq/FreqA/FreqB/Center/
// WfAGC/WfNF/Mute/NR/NB/SNB/ANF/Attn/ClientActiveChanged перенесены в TWebAdapter
// (чистые команды контроллера).
// ── Run ────────────────────────────────────────────────────────────────────
@@ -4830,18 +4810,6 @@ end;
// ── CTUN ──────────────────────────────────────────────────────────────────
procedure TMainForm.WebOnFreqA(Hz: Double);
begin
FWebSyncFreq := Hz;
FWebSyncM := SyncWebFreqA;
TThread.Synchronize(nil, FWebSyncM);
end;
procedure TMainForm.SyncWebFreqA;
begin
ApplyVfoA(Round(FWebSyncFreq));
end;
procedure TMainForm.TrkDriveChange(Sender: TObject);
begin
if FSyncingFromController then Exit; // программная установка из OnControllerState — не команда