mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 19:45:09 +00:00
Phase 3 (WA2b): move web Drive handler into the web adapter
Now that SetDrive is a complete command, the web/CAT Drive handler moves into TWebAdapter.OnDrive (the one handler WA1 left behind). CAT context SetDriveLevel repointed to it too. Makes the channel-power-clear reactive: ChannelController.OnDriveChanged fires on the rfDrive event and clears FPreChannelPower for any external drive change (slider/web/encoder), guarded by FRestoringDrive for the unit's own apply/restore. This removes the imperative ClearPreChannelPower coupling so SetDrive callers need no channel knowledge. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
03f7359184
commit
e5a13096dc
+7
-20
@@ -441,7 +441,6 @@ type
|
||||
procedure WebOnBand(Idx: Integer);
|
||||
procedure WebOnSpan(Hz: Integer);
|
||||
procedure WebOnRun(On_: Boolean);
|
||||
procedure WebOnDrive(V: Integer);
|
||||
procedure WebOnFreqA(Hz: Double);
|
||||
procedure WebOnXvtrBand(Idx: Integer);
|
||||
// Discovery / connect / saved-CRUD из web (маршалятся в UI)
|
||||
@@ -464,7 +463,6 @@ type
|
||||
procedure SyncWebXvtrBand;
|
||||
procedure SyncWebSpan;
|
||||
procedure SyncWebRun;
|
||||
procedure SyncWebDrive;
|
||||
procedure SyncWebFreqA;
|
||||
// --- CAT callbacks -------------------------------------------------------
|
||||
function CATGetVfoA: Double;
|
||||
@@ -982,7 +980,7 @@ begin
|
||||
FWebServer.OnBand := WebOnBand;
|
||||
FWebServer.OnSpan := WebOnSpan;
|
||||
FWebServer.OnRun := WebOnRun;
|
||||
FWebServer.OnDrive := WebOnDrive;
|
||||
FWebServer.OnDrive := FWebAdapter.OnDrive;
|
||||
FWebServer.OnFreqA := WebOnFreqA;
|
||||
FWebServer.OnWebMic := FWebAdapter.OnMic;
|
||||
FWebServer.OnXvtrBand := WebOnXvtrBand;
|
||||
@@ -1351,7 +1349,10 @@ begin
|
||||
rfVolume:
|
||||
TrkVolume.Position := FController.FVolume;
|
||||
rfDrive:
|
||||
TrkDrive.Position := FController.FDrivePercent; // слайдер ← drive%
|
||||
begin
|
||||
TrkDrive.Position := FController.FDrivePercent; // слайдер ← drive%
|
||||
FChannelController.OnDriveChanged; // внешнее изменение снимает память канала
|
||||
end;
|
||||
rfAGCTop:
|
||||
begin
|
||||
TrkAGC.Position := FController.FAGCTop;
|
||||
@@ -5063,19 +5064,6 @@ end;
|
||||
|
||||
// ── CTUN ──────────────────────────────────────────────────────────────────
|
||||
|
||||
procedure TMainForm.WebOnDrive(V: Integer);
|
||||
begin
|
||||
FWebSyncInt := V;
|
||||
FWebSyncM := SyncWebDrive;
|
||||
TThread.Synchronize(nil, FWebSyncM);
|
||||
end;
|
||||
|
||||
procedure TMainForm.SyncWebDrive;
|
||||
begin
|
||||
// Установка Position вызывает TrkDriveChange через OnChange автоматически
|
||||
TrkDrive.Position := FWebSyncInt;
|
||||
end;
|
||||
|
||||
procedure TMainForm.WebOnFreqA(Hz: Double);
|
||||
begin
|
||||
FWebSyncFreq := Hz;
|
||||
@@ -5091,8 +5079,7 @@ end;
|
||||
procedure TMainForm.TrkDriveChange(Sender: TObject);
|
||||
begin
|
||||
if FSyncingFromController then Exit; // программная установка из OnControllerState — не команда
|
||||
FChannelController.ClearPreChannelPower; // ручное изменение снимает сохранённую мощность канала
|
||||
FController.SetDrive(TrkDrive.Position);
|
||||
FController.SetDrive(TrkDrive.Position); // rfDrive-рендер снимет память канала (OnDriveChanged)
|
||||
end;
|
||||
|
||||
function TMainForm.CalcDriveByte: Byte;
|
||||
@@ -5859,7 +5846,7 @@ begin
|
||||
Ctx.SetActiveVfo := FWebAdapter.OnActiveVfo;
|
||||
Ctx.SetAGCMode := FWebAdapter.OnAGC;
|
||||
Ctx.SetVolume := FWebAdapter.OnVolume;
|
||||
Ctx.SetDriveLevel := WebOnDrive;
|
||||
Ctx.SetDriveLevel := FWebAdapter.OnDrive;
|
||||
Ctx.SetFilterIdx := CATSetFilterIdx;
|
||||
Ctx.SetNRMode := FWebAdapter.OnNR;
|
||||
Ctx.SetNBMode := FWebAdapter.OnNB;
|
||||
|
||||
Reference in New Issue
Block a user