Phase 3 (WA2c): move web Span into the adapter; SetSampleRate self-persists

Now that global-settings persistence is controller-owned, fold the persist into
SetSampleRate (sample rate is global; self-gated on FDevConnected). OnSampleRateSelect
becomes a thin wrapper. Web Span moves to TWebAdapter.OnSpan (keeps the valid-span
whitelist), so the last span coupling to MainForm is gone.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Uladzimir Karpenka
2026-06-08 21:03:47 +03:00
co-authored by Claude Opus 4.8
parent 2c356beb77
commit 5f5558e4a2
3 changed files with 26 additions and 32 deletions
+20
View File
@@ -46,6 +46,7 @@ type
procedure SyncAGCTop;
procedure SyncVolume;
procedure SyncDrive;
procedure SyncSpan;
procedure SyncWfAGC;
procedure SyncWfNF;
procedure SyncMute;
@@ -72,6 +73,7 @@ type
procedure OnAGCTop(DB: Integer);
procedure OnVolume(V: Integer);
procedure OnDrive(V: Integer);
procedure OnSpan(Hz: Integer);
procedure OnWfAGC(On_: Boolean);
procedure OnWfNF(On_: Boolean);
procedure OnMute(On_: Boolean);
@@ -158,6 +160,24 @@ begin FSyncInt := V; FController.Invoke(@SyncDrive); end;
procedure TWebAdapter.SyncDrive;
begin FController.SetDrive(FSyncInt); end; // rfDrive снимет память канала (ChannelController)
procedure TWebAdapter.OnSpan(Hz: Integer);
begin FSyncInt := Hz; FController.Invoke(@SyncSpan); end;
procedure TWebAdapter.SyncSpan;
// span ≡ sample rate. Принимаем только валидные значения (как десктоп-оверлей);
// SetSampleRate сам пересоздаёт WDSP-канал + персистит (idempotent при том же rate).
const
ValidSpans: array[0..5] of Integer = (48000, 96000, 192000, 384000, 768000, 1536000);
var i: Integer;
begin
for i := 0 to High(ValidSpans) do
if ValidSpans[i] = FSyncInt then
begin
FController.SetSampleRate(FSyncInt);
Exit;
end;
end;
procedure TWebAdapter.OnWfAGC(On_: Boolean);
begin FSyncBool := On_; FController.Invoke(@SyncWfAGC); end;