mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
Fix AGC lines not updating on spectrum
Three params were never synced to FSpecView after FormCreate: - WDSPReady: now set every timer tick so the draw branch (real WDSP thresh/hang vs. static AGCTop) is always correct - AGCThresh/AGCHangLevel: synced from FDSPEngine after UpdateAGCLines in SpectrumTimerTick - AGCTop: synced in TrkAGCChange, RestoreBand and DoConnectDevice Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+7
-3
@@ -884,6 +884,7 @@ begin
|
|||||||
FDSPEngine.SetAGCTop(FAGCTop);
|
FDSPEngine.SetAGCTop(FAGCTop);
|
||||||
FDSPEngine.SetAGC(TWDSPAGCMode(FAGCMode), 50.0);
|
FDSPEngine.SetAGC(TWDSPAGCMode(FAGCMode), 50.0);
|
||||||
end;
|
end;
|
||||||
|
FSpecView.AGCTop := FAGCTop;
|
||||||
|
|
||||||
// --- CTUN ---
|
// --- CTUN ---
|
||||||
FCTun := B.CTun;
|
FCTun := B.CTun;
|
||||||
@@ -2140,9 +2141,12 @@ begin
|
|||||||
if FWDSPReady then
|
if FWDSPReady then
|
||||||
begin
|
begin
|
||||||
FLastSMeter := FDSPEngine.GetSMeterDBm;
|
FLastSMeter := FDSPEngine.GetSMeterDBm;
|
||||||
FDSPEngine.SetSpectrumWidth(FSpectrumWidth); // актуальная ширина для SetAGC/SetAGCTop
|
FDSPEngine.SetSpectrumWidth(FSpectrumWidth);
|
||||||
FDSPEngine.UpdateAGCLines(FSpectrumWidth);
|
FDSPEngine.UpdateAGCLines(FSpectrumWidth);
|
||||||
|
FSpecView.AGCThresh := FDSPEngine.AGCThresh;
|
||||||
|
FSpecView.AGCHangLevel := FDSPEngine.AGCHangLevel;
|
||||||
end;
|
end;
|
||||||
|
FSpecView.WDSPReady := FWDSPReady;
|
||||||
// Обновляем оверлей если видим
|
// Обновляем оверлей если видим
|
||||||
if Assigned(FVfoOverlay) and FVfoOverlay.Visible then
|
if Assigned(FVfoOverlay) and FVfoOverlay.Visible then
|
||||||
begin
|
begin
|
||||||
@@ -2815,8 +2819,8 @@ begin
|
|||||||
// ChangeSampleRate пересоздаёт WDSP-канал — восстанавливаем все настройки
|
// ChangeSampleRate пересоздаёт WDSP-канал — восстанавливаем все настройки
|
||||||
FDSPEngine.SetAGCTop(FAGCTop);
|
FDSPEngine.SetAGCTop(FAGCTop);
|
||||||
FDSPEngine.SetAGC(TWDSPAGCMode(FAGCMode), 50.0);
|
FDSPEngine.SetAGC(TWDSPAGCMode(FAGCMode), 50.0);
|
||||||
// SetAGC вызывает UpdateAGCLines внутри — линии на спектре обновятся
|
|
||||||
end;
|
end;
|
||||||
|
FSpecView.AGCTop := FAGCTop;
|
||||||
|
|
||||||
// DUC specific
|
// DUC specific
|
||||||
FillChar(DUCPkt, SizeOf(DUCPkt), 0);
|
FillChar(DUCPkt, SizeOf(DUCPkt), 0);
|
||||||
@@ -4415,8 +4419,8 @@ begin
|
|||||||
FDSPEngine.SetAGCTop(FAGCTop);
|
FDSPEngine.SetAGCTop(FAGCTop);
|
||||||
FDSPEngine.SetAGC(TWDSPAGCMode(FAGCMode), 50.0);
|
FDSPEngine.SetAGC(TWDSPAGCMode(FAGCMode), 50.0);
|
||||||
end;
|
end;
|
||||||
// Обновляем кэш диапазона
|
|
||||||
FBandCache[FCurrentBand].AGCTop := FAGCTop;
|
FBandCache[FCurrentBand].AGCTop := FAGCTop;
|
||||||
|
FSpecView.AGCTop := FAGCTop;
|
||||||
FSpecView.DrawSpectrum;
|
FSpecView.DrawSpectrum;
|
||||||
PbSpectrum.Invalidate;
|
PbSpectrum.Invalidate;
|
||||||
end;
|
end;
|
||||||
|
|||||||
Reference in New Issue
Block a user