mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
Phase 3 (WA2a): move WebOnMic into the web adapter
WebOnMic only feeds TX mic samples to the controller's WDSP engine (no UI, thread-safe like the other engine data callbacks), so it moves verbatim into TWebAdapter.OnMic. FWebServer.OnWebMic now points there. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
2f8b0bdf48
commit
06fd730ff4
+1
-20
@@ -445,7 +445,6 @@ type
|
|||||||
procedure WebOnRun(On_: Boolean);
|
procedure WebOnRun(On_: Boolean);
|
||||||
procedure WebOnDrive(V: Integer);
|
procedure WebOnDrive(V: Integer);
|
||||||
procedure WebOnFreqA(Hz: Double);
|
procedure WebOnFreqA(Hz: Double);
|
||||||
procedure WebOnMic(Samples: PSingle; Count: Integer);
|
|
||||||
procedure WebOnXvtrBand(Idx: Integer);
|
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);
|
||||||
@@ -982,7 +981,7 @@ begin
|
|||||||
FWebServer.OnRun := WebOnRun;
|
FWebServer.OnRun := WebOnRun;
|
||||||
FWebServer.OnDrive := WebOnDrive;
|
FWebServer.OnDrive := WebOnDrive;
|
||||||
FWebServer.OnFreqA := WebOnFreqA;
|
FWebServer.OnFreqA := WebOnFreqA;
|
||||||
FWebServer.OnWebMic := WebOnMic;
|
FWebServer.OnWebMic := FWebAdapter.OnMic;
|
||||||
FWebServer.OnXvtrBand := WebOnXvtrBand;
|
FWebServer.OnXvtrBand := WebOnXvtrBand;
|
||||||
FWebServer.OnConnect := WebOnConnect;
|
FWebServer.OnConnect := WebOnConnect;
|
||||||
FWebServer.OnDiscoverDev := WebOnDiscover;
|
FWebServer.OnDiscoverDev := WebOnDiscover;
|
||||||
@@ -5252,24 +5251,6 @@ begin
|
|||||||
ApplyVfoA(Round(FWebSyncFreq));
|
ApplyVfoA(Round(FWebSyncFreq));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.WebOnMic(Samples: PSingle; Count: Integer);
|
|
||||||
var
|
|
||||||
Buf: array[0..5759] of Double;
|
|
||||||
SP: PSingle;
|
|
||||||
i, n: Integer;
|
|
||||||
begin
|
|
||||||
if not FController.FWDSPReady then Exit;
|
|
||||||
n := Count;
|
|
||||||
if n > Length(Buf) then n := Length(Buf);
|
|
||||||
SP := Samples;
|
|
||||||
for i := 0 to n - 1 do
|
|
||||||
begin
|
|
||||||
Buf[i] := SP^;
|
|
||||||
Inc(SP);
|
|
||||||
end;
|
|
||||||
FController.FDSPEngine.PushTXMicSamplesD(Buf, n);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TMainForm.TrkDriveChange(Sender: TObject);
|
procedure TMainForm.TrkDriveChange(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
FController.FDrivePercent := TrkDrive.Position; // слайдер — ввод; контроллер — истина
|
FController.FDrivePercent := TrkDrive.Position; // слайдер — ввод; контроллер — истина
|
||||||
|
|||||||
@@ -86,6 +86,9 @@ type
|
|||||||
procedure OnTun(On_: Boolean);
|
procedure OnTun(On_: Boolean);
|
||||||
procedure OnFMStep(Idx: Integer);
|
procedure OnFMStep(Idx: Integer);
|
||||||
procedure OnClientActiveChanged(Active: Boolean);
|
procedure OnClientActiveChanged(Active: Boolean);
|
||||||
|
// TX-mic от web-клиента → WDSP. Вызывается из WS-потока; без маршалинга —
|
||||||
|
// подача в движок thread-safe (как OnMicPacket/OnDDCIQ контроллера).
|
||||||
|
procedure OnMic(Samples: PSingle; Count: Integer);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
@@ -261,4 +264,22 @@ begin
|
|||||||
FController.FWebClientActive := Active;
|
FController.FWebClientActive := Active;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TWebAdapter.OnMic(Samples: PSingle; Count: Integer);
|
||||||
|
var
|
||||||
|
Buf: array[0..5759] of Double;
|
||||||
|
SP: PSingle;
|
||||||
|
i, n: Integer;
|
||||||
|
begin
|
||||||
|
if not FController.FWDSPReady then Exit;
|
||||||
|
n := Count;
|
||||||
|
if n > Length(Buf) then n := Length(Buf);
|
||||||
|
SP := Samples;
|
||||||
|
for i := 0 to n - 1 do
|
||||||
|
begin
|
||||||
|
Buf[i] := SP^;
|
||||||
|
Inc(SP);
|
||||||
|
end;
|
||||||
|
FController.FDSPEngine.PushTXMicSamplesD(Buf, n);
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|||||||
Reference in New Issue
Block a user