mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
Phase 3 (WA2d): move web Band/XvtrBand handlers into the adapter
Now that RestoreBand and XVTR enter/exit are full controller commands, the web Band and XvtrBand handlers carry no MainForm orchestration — move them to TWebAdapter.OnBand/OnXvtrBand (validation + SaveCurrentBand/persist + command). CAT Ctx.DoBandByIndex and CAT band up/down repointed to FWebAdapter.OnBand. Remaining host-coupled web handlers: Freq/FreqA (ApplyVfoA channel orchestration), Run/Connect/device CRUD (daemon entry). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
cc8380ae85
commit
7630172e50
+5
-53
@@ -437,10 +437,8 @@ type
|
|||||||
// WfAGC/WfNF/Mute/NR/NB/SNB/ANF/FreqB/Center/Attn/ActiveVfo/Ctun/MOX/Tun/FMStep/
|
// WfAGC/WfNF/Mute/NR/NB/SNB/ANF/FreqB/Center/Attn/ActiveVfo/Ctun/MOX/Tun/FMStep/
|
||||||
// ClientActive). Здесь только то, что дёргает UI-обёртки MainForm.
|
// ClientActive). Здесь только то, что дёргает UI-обёртки MainForm.
|
||||||
procedure WebOnFreq(Hz: Double);
|
procedure WebOnFreq(Hz: Double);
|
||||||
procedure WebOnBand(Idx: Integer);
|
|
||||||
procedure WebOnRun(On_: Boolean);
|
procedure WebOnRun(On_: Boolean);
|
||||||
procedure WebOnFreqA(Hz: Double);
|
procedure WebOnFreqA(Hz: Double);
|
||||||
procedure WebOnXvtrBand(Idx: Integer);
|
|
||||||
// Discovery / connect / saved-CRUD из web (маршалятся в UI)
|
// Discovery / connect / saved-CRUD из web (маршалятся в UI)
|
||||||
procedure WebOnConnect(const IP: string);
|
procedure WebOnConnect(const IP: string);
|
||||||
procedure WebOnDiscover;
|
procedure WebOnDiscover;
|
||||||
@@ -457,8 +455,6 @@ type
|
|||||||
procedure PushDeviceListToWeb; // store → FWebServer.SetDeviceList
|
procedure PushDeviceListToWeb; // store → FWebServer.SetDeviceList
|
||||||
// Synchronize-обёртки (выполняются в UI-потоке) — только host-зависимые
|
// Synchronize-обёртки (выполняются в UI-потоке) — только host-зависимые
|
||||||
procedure SyncWebFreq;
|
procedure SyncWebFreq;
|
||||||
procedure SyncWebBand;
|
|
||||||
procedure SyncWebXvtrBand;
|
|
||||||
procedure SyncWebRun;
|
procedure SyncWebRun;
|
||||||
procedure SyncWebFreqA;
|
procedure SyncWebFreqA;
|
||||||
// --- CAT callbacks -------------------------------------------------------
|
// --- CAT callbacks -------------------------------------------------------
|
||||||
@@ -885,13 +881,13 @@ begin
|
|||||||
FWebServer.OnFMStep := FWebAdapter.OnFMStep;
|
FWebServer.OnFMStep := FWebAdapter.OnFMStep;
|
||||||
// Host-зависимые (UI-обёртки) — пока на MainForm:
|
// Host-зависимые (UI-обёртки) — пока на MainForm:
|
||||||
FWebServer.OnFreq := WebOnFreq;
|
FWebServer.OnFreq := WebOnFreq;
|
||||||
FWebServer.OnBand := WebOnBand;
|
FWebServer.OnBand := FWebAdapter.OnBand;
|
||||||
FWebServer.OnSpan := FWebAdapter.OnSpan;
|
FWebServer.OnSpan := FWebAdapter.OnSpan;
|
||||||
FWebServer.OnRun := WebOnRun;
|
FWebServer.OnRun := WebOnRun;
|
||||||
FWebServer.OnDrive := FWebAdapter.OnDrive;
|
FWebServer.OnDrive := FWebAdapter.OnDrive;
|
||||||
FWebServer.OnFreqA := WebOnFreqA;
|
FWebServer.OnFreqA := WebOnFreqA;
|
||||||
FWebServer.OnWebMic := FWebAdapter.OnMic;
|
FWebServer.OnWebMic := FWebAdapter.OnMic;
|
||||||
FWebServer.OnXvtrBand := WebOnXvtrBand;
|
FWebServer.OnXvtrBand := FWebAdapter.OnXvtrBand;
|
||||||
FWebServer.OnConnect := WebOnConnect;
|
FWebServer.OnConnect := WebOnConnect;
|
||||||
FWebServer.OnDiscoverDev := WebOnDiscover;
|
FWebServer.OnDiscoverDev := WebOnDiscover;
|
||||||
FWebServer.OnDisconnectDev := WebOnDisconnect;
|
FWebServer.OnDisconnectDev := WebOnDisconnect;
|
||||||
@@ -4681,50 +4677,6 @@ end;
|
|||||||
// Mode/Filter/AGC/AGCTop/Volume/WfAGC/WfNF/Mute/NR/NB/SNB/ANF/FreqB/Center/Attn +
|
// Mode/Filter/AGC/AGCTop/Volume/WfAGC/WfNF/Mute/NR/NB/SNB/ANF/FreqB/Center/Attn +
|
||||||
// ClientActiveChanged перенесены в TWebAdapter (чистые команды контроллера).
|
// ClientActiveChanged перенесены в TWebAdapter (чистые команды контроллера).
|
||||||
|
|
||||||
procedure TMainForm.WebOnBand(Idx: Integer);
|
|
||||||
begin
|
|
||||||
FWebSyncInt := Idx;
|
|
||||||
FWebSyncM := SyncWebBand;
|
|
||||||
TThread.Synchronize(nil, FWebSyncM);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.SyncWebBand;
|
|
||||||
begin
|
|
||||||
if (FWebSyncInt < 0) or (FWebSyncInt >= BAND_COUNT) then Exit;
|
|
||||||
// Выйти из XVTR при переходе на HF из web. DeactivateXvtr вернёт HF-состояние.
|
|
||||||
if FController.FCurrentXvtr >= 0 then
|
|
||||||
begin
|
|
||||||
DeactivateXvtr;
|
|
||||||
if FWebSyncInt = FController.FCurrentBand then Exit;
|
|
||||||
end
|
|
||||||
else if FWebSyncInt = FController.FCurrentBand then
|
|
||||||
Exit;
|
|
||||||
if FController.FDevConnected then begin SaveCurrentBand; FController.FSettings.Save; end;
|
|
||||||
FController.FCurrentBand := FWebSyncInt;
|
|
||||||
RestoreBand(FController.FCurrentBand);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.WebOnXvtrBand(Idx: Integer);
|
|
||||||
begin
|
|
||||||
FWebSyncInt := Idx;
|
|
||||||
FWebSyncM := SyncWebXvtrBand;
|
|
||||||
TThread.Synchronize(nil, FWebSyncM);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.SyncWebXvtrBand;
|
|
||||||
begin
|
|
||||||
if FWebSyncInt < 0 then
|
|
||||||
begin
|
|
||||||
DeactivateXvtr;
|
|
||||||
Exit;
|
|
||||||
end;
|
|
||||||
if (FWebSyncInt >= CFG_XVTR_COUNT) then Exit;
|
|
||||||
if not FController.FXvtrSettings.Entries[FWebSyncInt].Enabled then Exit;
|
|
||||||
if FWebSyncInt = FController.FCurrentXvtr then Exit;
|
|
||||||
if FController.FDevConnected then begin SaveCurrentBand; FController.FSettings.Save; end;
|
|
||||||
ActivateXvtrBand(FWebSyncInt);
|
|
||||||
end;
|
|
||||||
|
|
||||||
// ── Run ────────────────────────────────────────────────────────────────────
|
// ── Run ────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
procedure TMainForm.WebOnRun(On_: Boolean);
|
procedure TMainForm.WebOnRun(On_: Boolean);
|
||||||
@@ -5661,7 +5613,7 @@ begin
|
|||||||
Ctx.DoBandDown := CATDoBandDown;
|
Ctx.DoBandDown := CATDoBandDown;
|
||||||
Ctx.DoTuneUp := CATDoTuneUp;
|
Ctx.DoTuneUp := CATDoTuneUp;
|
||||||
Ctx.DoTuneDown := CATDoTuneDown;
|
Ctx.DoTuneDown := CATDoTuneDown;
|
||||||
Ctx.DoBandByIndex := WebOnBand;
|
Ctx.DoBandByIndex := FWebAdapter.OnBand;
|
||||||
FCATEngine := TCATEngine.Create(Ctx);
|
FCATEngine := TCATEngine.Create(Ctx);
|
||||||
FCATSerial := TCATSerialManager.Create(FCATEngine);
|
FCATSerial := TCATSerialManager.Create(FCATEngine);
|
||||||
FCATTcp := TCATTcpServer.Create(FCATEngine);
|
FCATTcp := TCATTcpServer.Create(FCATEngine);
|
||||||
@@ -5813,13 +5765,13 @@ end;
|
|||||||
procedure TMainForm.SyncCATBandUp;
|
procedure TMainForm.SyncCATBandUp;
|
||||||
begin
|
begin
|
||||||
if FController.FCurrentBand < BAND_COUNT - 1 then
|
if FController.FCurrentBand < BAND_COUNT - 1 then
|
||||||
WebOnBand(FController.FCurrentBand + 1);
|
FWebAdapter.OnBand(FController.FCurrentBand + 1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.SyncCATBandDown;
|
procedure TMainForm.SyncCATBandDown;
|
||||||
begin
|
begin
|
||||||
if FController.FCurrentBand > 0 then
|
if FController.FCurrentBand > 0 then
|
||||||
WebOnBand(FController.FCurrentBand - 1);
|
FWebAdapter.OnBand(FController.FCurrentBand - 1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.SyncCATTuneUp;
|
procedure TMainForm.SyncCATTuneUp;
|
||||||
|
|||||||
+39
-1
@@ -19,7 +19,7 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils,
|
Classes, SysUtils,
|
||||||
RadioController, WebServer, WDSPEngine, HPSDRNetwork, HPSDRProtocol, BoardUtils;
|
RadioController, WebServer, WDSPEngine, HPSDRNetwork, HPSDRProtocol, BoardUtils, Settings;
|
||||||
|
|
||||||
type
|
type
|
||||||
// UI/оркестрационные операции, которые адаптер дёргает у хозяина (пока не
|
// UI/оркестрационные операции, которые адаптер дёргает у хозяина (пока не
|
||||||
@@ -47,6 +47,8 @@ type
|
|||||||
procedure SyncVolume;
|
procedure SyncVolume;
|
||||||
procedure SyncDrive;
|
procedure SyncDrive;
|
||||||
procedure SyncSpan;
|
procedure SyncSpan;
|
||||||
|
procedure SyncBand;
|
||||||
|
procedure SyncXvtrBand;
|
||||||
procedure SyncWfAGC;
|
procedure SyncWfAGC;
|
||||||
procedure SyncWfNF;
|
procedure SyncWfNF;
|
||||||
procedure SyncMute;
|
procedure SyncMute;
|
||||||
@@ -74,6 +76,8 @@ type
|
|||||||
procedure OnVolume(V: Integer);
|
procedure OnVolume(V: Integer);
|
||||||
procedure OnDrive(V: Integer);
|
procedure OnDrive(V: Integer);
|
||||||
procedure OnSpan(Hz: Integer);
|
procedure OnSpan(Hz: Integer);
|
||||||
|
procedure OnBand(Idx: Integer);
|
||||||
|
procedure OnXvtrBand(Idx: Integer);
|
||||||
procedure OnWfAGC(On_: Boolean);
|
procedure OnWfAGC(On_: Boolean);
|
||||||
procedure OnWfNF(On_: Boolean);
|
procedure OnWfNF(On_: Boolean);
|
||||||
procedure OnMute(On_: Boolean);
|
procedure OnMute(On_: Boolean);
|
||||||
@@ -160,6 +164,40 @@ begin FSyncInt := V; FController.Invoke(@SyncDrive); end;
|
|||||||
procedure TWebAdapter.SyncDrive;
|
procedure TWebAdapter.SyncDrive;
|
||||||
begin FController.SetDrive(FSyncInt); end; // rfDrive снимет память канала (ChannelController)
|
begin FController.SetDrive(FSyncInt); end; // rfDrive снимет память канала (ChannelController)
|
||||||
|
|
||||||
|
procedure TWebAdapter.OnBand(Idx: Integer);
|
||||||
|
begin FSyncInt := Idx; FController.Invoke(@SyncBand); end;
|
||||||
|
|
||||||
|
procedure TWebAdapter.SyncBand;
|
||||||
|
// Смена HF-диапазона из web/CAT. Выход из XVTR (если активен) + persist + restore.
|
||||||
|
begin
|
||||||
|
if (FSyncInt < 0) or (FSyncInt >= CFG_BAND_COUNT) then Exit;
|
||||||
|
if FController.FCurrentXvtr >= 0 then
|
||||||
|
begin
|
||||||
|
FController.SetXvtrBand(-1); // выход в HF (DeactivateXvtr несёт HF-возврат)
|
||||||
|
if FSyncInt = FController.FCurrentBand then Exit;
|
||||||
|
end
|
||||||
|
else if FSyncInt = FController.FCurrentBand then
|
||||||
|
Exit;
|
||||||
|
if FController.FDevConnected then
|
||||||
|
begin FController.SaveCurrentBand; FController.FSettings.Save; end;
|
||||||
|
FController.FCurrentBand := FSyncInt;
|
||||||
|
FController.RestoreBand(FController.FCurrentBand);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TWebAdapter.OnXvtrBand(Idx: Integer);
|
||||||
|
begin FSyncInt := Idx; FController.Invoke(@SyncXvtrBand); end;
|
||||||
|
|
||||||
|
procedure TWebAdapter.SyncXvtrBand;
|
||||||
|
begin
|
||||||
|
if FSyncInt < 0 then begin FController.SetXvtrBand(-1); Exit; end;
|
||||||
|
if FSyncInt >= CFG_XVTR_COUNT then Exit;
|
||||||
|
if not FController.FXvtrSettings.Entries[FSyncInt].Enabled then Exit;
|
||||||
|
if FSyncInt = FController.FCurrentXvtr then Exit;
|
||||||
|
if FController.FDevConnected then
|
||||||
|
begin FController.SaveCurrentBand; FController.FSettings.Save; end;
|
||||||
|
FController.SetXvtrBand(FSyncInt); // ActivateXvtr (рендер/wideband/web — rfXvtr)
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TWebAdapter.OnSpan(Hz: Integer);
|
procedure TWebAdapter.OnSpan(Hz: Integer);
|
||||||
begin FSyncInt := Hz; FController.Invoke(@SyncSpan); end;
|
begin FSyncInt := Hz; FController.Invoke(@SyncSpan); end;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user