mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
Phase 3 (batch 2): route AGC mode through controller command
TRadioController.SetAGCMode now owns the index->WDSP mapping, applies to the DSP engine, and updates the band cache, then fires OnStateChanged. OnControllerState restyles the AGC button group. BtnAGCModeClick, OnVfoOverlayAGCChange, and SyncWebAGC all call the command. Fixes a latent web bug: SyncWebAGC used TWDSPAGCMode(index) directly, mapping the UI index (0=FAST..4=OFF) onto the wrong enum (0=OFF...), so web AGC selections set the wrong DSP mode. The button/overlay path used the correct AGCModes[] array; unifying on the command applies that to web too. Buttons/overlay behavior unchanged. Builds clean (cocoa). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
ff42889fa1
commit
f76533f209
+11
-1
@@ -382,7 +382,17 @@ procedure TRadioController.SetFilterBW(BWHz: Integer);
|
||||
begin FFilterBW := BWHz; Changed(rfFilterBW); { TODO wiring } end;
|
||||
|
||||
procedure TRadioController.SetAGCMode(M: Integer);
|
||||
begin FAGCMode := M; Changed(rfAGCMode); { TODO wiring: FDSPEngine.SetAGC } end;
|
||||
const
|
||||
// UI-индекс 0..4 (FAST/MED/SLOW/LONG/OFF) -> WDSP enum. Единый маппинг для
|
||||
// всех фронтендов (раньше web ошибочно кастовал индекс прямо в enum).
|
||||
AGCModes: array[0..4] of TWDSPAGCMode = (agcFast, agcMedium, agcSlow, agcLong, agcOff);
|
||||
begin
|
||||
if (M < 0) or (M > 4) then Exit;
|
||||
FAGCMode := M;
|
||||
if FWDSPReady and Assigned(FDSPEngine) then FDSPEngine.SetAGC(AGCModes[M], 50.0);
|
||||
FBandCache[FCurrentBand].AGCMode := FAGCMode;
|
||||
Changed(rfAGCMode);
|
||||
end;
|
||||
|
||||
procedure TRadioController.SetAGCTop(DB: Integer);
|
||||
begin FAGCTop := DB; Changed(rfAGCTop); { TODO wiring } end;
|
||||
|
||||
Reference in New Issue
Block a user