mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
Save/restore CTun, AGC, FM step per XVTR slot; add FM step to web
- Add LastCTun, LastAGCMode, LastAGCTop to TXvtrEntry; SaveCurrentBand now captures all three in the XVTR branch; ActivateXvtrBand restores them on slot switch/startup (previously CTun was always reset to False and AGC was never saved/restored for XVTR) - WebServer: expose fmstep_idx in state JSON so web clients sync the FM step from desktop state - WebPageHtml: swap stepSel options to FM steps (6.25k/12.5k/20k/25k) when mode=FM, restore HF steps when leaving FM; syncs fmstep_idx from server on connect and mode change Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+20
-8
@@ -1030,6 +1030,9 @@ begin
|
||||
FXvtrSettings.Entries[FCurrentXvtr].LastCTCSSToneIdx := FFMCTCSSToneIdx;
|
||||
FXvtrSettings.Entries[FCurrentXvtr].LastFMStepOn := FFMStepOn;
|
||||
FXvtrSettings.Entries[FCurrentXvtr].LastFMStepIdx := FFMStepIdx;
|
||||
FXvtrSettings.Entries[FCurrentXvtr].LastCTun := FCTun;
|
||||
FXvtrSettings.Entries[FCurrentXvtr].LastAGCMode := FAGCMode;
|
||||
FXvtrSettings.Entries[FCurrentXvtr].LastAGCTop := FAGCTop;
|
||||
end;
|
||||
FSettings.SaveXvtr(FDevMAC, FXvtrSettings);
|
||||
Exit;
|
||||
@@ -4801,6 +4804,7 @@ begin
|
||||
FBtnFMSteps[OldIdx].Active := False;
|
||||
if FBtnFMSteps[Idx] <> nil then
|
||||
FBtnFMSteps[Idx].Active := True;
|
||||
if FWebServer <> nil then FWebServer.FMStepIdx := Idx;
|
||||
end;
|
||||
|
||||
procedure TMainForm.BtnFMStepClick(Sender: TObject);
|
||||
@@ -6243,17 +6247,25 @@ begin
|
||||
FFMStepOn := E.LastFMStepOn;
|
||||
SetFMStep(E.LastFMStepIdx);
|
||||
if BtnFMStep <> nil then StyleButton(BtnFMStep, FFMStepOn);
|
||||
// VFO на видимую частоту; FCenterFreq тоже visible (как и для HF — DDC переход
|
||||
// в IF происходит только в момент UpdateState/SetRunAndFreq через XvtrTranslate).
|
||||
// AGC
|
||||
FAGCMode := E.LastAGCMode;
|
||||
FAGCTop := E.LastAGCTop;
|
||||
for i := 0 to 4 do StyleButton(BtnAGCMode[i], i = FAGCMode);
|
||||
TrkAGC.Position := FAGCTop;
|
||||
LblAGCTop.Caption := Format('%ddB', [FAGCTop]);
|
||||
if FWDSPReady then
|
||||
begin
|
||||
FDSPEngine.SetAGCTop(FAGCTop);
|
||||
FDSPEngine.SetAGC(TWDSPAGCMode(FAGCMode), 50.0);
|
||||
end;
|
||||
FSpecView.AGCTop := FAGCTop;
|
||||
// CTUN
|
||||
FCTun := E.LastCTun;
|
||||
StyleButton(BtnCTun, FCTun);
|
||||
// VFO на видимую частоту; FCenterFreq тоже visible
|
||||
FVfoA := Vis;
|
||||
FCenterFreq := Vis;
|
||||
FreqDispA.Frequency := Round(FVfoA);
|
||||
// Сбросить CTUN — не имеет смысла в начальном состоянии XVTR-band
|
||||
if FCTun then
|
||||
begin
|
||||
FCTun := False;
|
||||
StyleButton(BtnCTun, False);
|
||||
end;
|
||||
if FWDSPReady then FDSPEngine.SetShift(0.0);
|
||||
// Применяем драйв (если есть кастомный TX power для этого XVTR)
|
||||
// Сделано на стороне ActiveTXFreqHz / TX path — здесь только обновляем дисплей.
|
||||
|
||||
Reference in New Issue
Block a user