mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 18:43:51 +00:00
fix: web spectrum tuning range from backend caps; remove dead code
Fix: dragging/wheeling the spectrum in the web UI clamped frequency to a hardcoded HF ceiling (vfoMax=60 MHz), so on Pluto VHF/UHF it snapped down to 60 MHz and couldn't pan up (only the VFO wheel worked, via a different limit). Push the backend's tuning range (BackendCaps.MinFreqHz/MaxFreqHz) to the web alongside the band plan; JS vfoMin/vfoMax use freq_min/freq_max from state. The transverter branch (XVTR_CUR>=0) is unchanged — it keeps the wide-open range since the displayed RF freq is translated to IF and clamped server-side. Dead-code cleanup (audit of this session's work): - SampleRateMode/TSampleRateMode: orphaned when the sample-rate unification replaced the srmContinuous branch in ApplyBackendCapsToUI; no readers left. Removed (+ now-unused PLUTO_MAX_SR). - Pre-existing write-only/unused: TBackendCaps.MaxSampleRate, SampleRateOverlay.SPAN_NAMES, MainForm.BAND_FREQ. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+21
-2
@@ -300,6 +300,8 @@ type
|
||||
FRatePresets: array of Integer; // sample-rate пресеты текущего бэкенда (для span-кнопок)
|
||||
FBandNames: array of string; // band-план текущего бэкенда (имена кнопок)
|
||||
FBandFreqs: array of Double; // band-план: дефолтные частоты (для подсветки selector)
|
||||
FFreqMin: Double; // диапазон перестройки бэкенда (клампинг drag/wheel)
|
||||
FFreqMax: Double;
|
||||
FCurrentXvtr: Integer; // -1 = HF, иначе индекс активного XVTR
|
||||
FOnXvtrBand: TWebCmdXvtrBand;
|
||||
|
||||
@@ -397,6 +399,7 @@ type
|
||||
procedure SetDeviceList(const ADevices: TWebDeviceArray);
|
||||
procedure SetRatePresets(const ARates: array of Integer);
|
||||
procedure SetBands(const ANames: array of string; const AFreqs: array of Double);
|
||||
procedure SetFreqRange(AMin, AMax: Double);
|
||||
property OnSpan: TWebCmdSpan read FOnSpan write FOnSpan;
|
||||
property OnVolume: TWebCmdVolume read FOnVolume write FOnVolume;
|
||||
property OnWfAGC: TWebCmdWfAGC read FOnWfAGC write FOnWfAGC;
|
||||
@@ -546,6 +549,7 @@ begin
|
||||
SetBands(['160m','80m','60m','40m','30m','20m','17m','15m','12m','10m','6m'],
|
||||
[1840000,3700000,5357000,7100000,10120000,14200000,
|
||||
18130000,21300000,24940000,28400000,50150000]);
|
||||
SetFreqRange(0, 61440000); // HPSDR bootstrap; хост перезапишет под бэкенд
|
||||
end;
|
||||
|
||||
procedure TWebServer.SetXvtrBands(const ABands: TWebXvtrArray; ACurrent: Integer);
|
||||
@@ -606,6 +610,19 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TWebServer.SetFreqRange(AMin, AMax: Double);
|
||||
// Диапазон перестройки текущего бэкенда (caps): web клампит drag/wheel/click по
|
||||
// спектру в эти границы. HPSDR 0..61.44МГц / Pluto 46.875МГц..6ГГц.
|
||||
begin
|
||||
FStateLock.Enter;
|
||||
try
|
||||
FFreqMin := AMin;
|
||||
FFreqMax := AMax;
|
||||
finally
|
||||
FStateLock.Leave;
|
||||
end;
|
||||
end;
|
||||
|
||||
destructor TWebServer.Destroy;
|
||||
begin
|
||||
Stop;
|
||||
@@ -1646,7 +1663,8 @@ begin
|
||||
'"status_text":"%s","board_text":"%s","ip_text":"%s","supply_text":"%s",' +
|
||||
'"pll_text":"%s","rx_text":"%s","tx_text":"%s","seq_text":"%s",' +
|
||||
'"xvtr_current":%d,"xvtr_bands":%s,"freq_mhz_digits":%d,' +
|
||||
'"fmstep_idx":%d,"devices":%s,"rate_presets":%s,"bands":%s}',
|
||||
'"fmstep_idx":%d,"devices":%s,"rate_presets":%s,"bands":%s,' +
|
||||
'"freq_min":%.0f,"freq_max":%.0f}',
|
||||
[FFreq, FVfoB, FActiveVfo,
|
||||
FMode, MODE_N[FMode mod 8],
|
||||
FFilterIdx, FFilterBW,
|
||||
@@ -1675,7 +1693,8 @@ begin
|
||||
JsonEscape(FSupplyText), JsonEscape(FPLLText), JsonEscape(FRXText),
|
||||
JsonEscape(FTXText), JsonEscape(FSeqText),
|
||||
FCurrentXvtr, XvtrJson, FFreqMhzDigits,
|
||||
FFMStepIdx, DevJson, RateJson, BandJson
|
||||
FFMStepIdx, DevJson, RateJson, BandJson,
|
||||
FFreqMin, FFreqMax
|
||||
], FS);
|
||||
finally
|
||||
FStateLock.Leave;
|
||||
|
||||
Reference in New Issue
Block a user