mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
Phase 2: move widget-stored state into TRadioController
NR/NB modes, SNB/ANF flags, and drive % were stored only in the widgets themselves (Btn*.Tag, TrkDrive.Position) — the last hard blocker to a headless/daemon mode, since without those controls the state had nowhere to live and CAT/Web read them directly. - NR/NB: BtnNR.Tag/BtnNB.Tag -> FController.FNRMode/FNBMode (Integer). - SNB/ANF: BtnSNB.Tag/BtnANF.Tag (0/1) -> FController.FSNB/FANF (Boolean). - Drive %: TrkDrive.Position -> new FController.FDrivePercent; the slider is now pure input (TrkDriveChange pushes its value into the controller), while FDriveLevel stays the derived hardware byte. Buttons/sliders become pure view+input: click handlers and UpdateXButton read/write the controller field; CAT getters, the web snapshot, and GetSnapshot all source state from the controller, not the widgets. No behavioral change. 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
63eb2c701f
commit
2cf01036a3
+56
-55
@@ -841,17 +841,17 @@ function TMainForm.MakeGlobalSettings: TGlobalSettings;
|
|||||||
var i: Integer;
|
var i: Integer;
|
||||||
begin
|
begin
|
||||||
Result.Volume := FController.FVolume;
|
Result.Volume := FController.FVolume;
|
||||||
Result.DriveLevel := TrkDrive.Position;
|
Result.DriveLevel := FController.FDrivePercent;
|
||||||
Result.PAMaxPower := FController.FPAMaxPower;
|
Result.PAMaxPower := FController.FPAMaxPower;
|
||||||
for i := 0 to BAND_COUNT - 1 do
|
for i := 0 to BAND_COUNT - 1 do
|
||||||
Result.PABandCal[i] := FController.FPABandCal[i];
|
Result.PABandCal[i] := FController.FPABandCal[i];
|
||||||
for i := 0 to CFG_XVTR_COUNT - 1 do
|
for i := 0 to CFG_XVTR_COUNT - 1 do
|
||||||
Result.VHFBandCal[i] := FController.FVHFBandCal[i];
|
Result.VHFBandCal[i] := FController.FVHFBandCal[i];
|
||||||
Result.ActiveVfo := FController.FActiveVfo;
|
Result.ActiveVfo := FController.FActiveVfo;
|
||||||
Result.NRMode := BtnNR.Tag;
|
Result.NRMode := FController.FNRMode;
|
||||||
Result.NBMode := BtnNB.Tag;
|
Result.NBMode := FController.FNBMode;
|
||||||
Result.SNBEnabled := BtnSNB.Tag <> 0;
|
Result.SNBEnabled := FController.FSNB;
|
||||||
Result.ANFEnabled := BtnANF.Tag <> 0;
|
Result.ANFEnabled := FController.FANF;
|
||||||
Result.AGCSlope := 0;
|
Result.AGCSlope := 0;
|
||||||
Result.AGCHangThreshold := 100;
|
Result.AGCHangThreshold := 100;
|
||||||
Result.WfAGCEnabled := FController.FWfAGCEnabled;
|
Result.WfAGCEnabled := FController.FWfAGCEnabled;
|
||||||
@@ -3191,10 +3191,10 @@ begin
|
|||||||
FController.FCurrentBand,
|
FController.FCurrentBand,
|
||||||
FController.FRunning and FController.FNetwork.Connected,
|
FController.FRunning and FController.FNetwork.Connected,
|
||||||
FController.FRunning, FController.FMuted, FController.FCTun,
|
FController.FRunning, FController.FMuted, FController.FCTun,
|
||||||
BtnNR.Tag, BtnNB.Tag, BtnSNB.Tag <> 0, BtnANF.Tag <> 0,
|
FController.FNRMode, FController.FNBMode, FController.FSNB, FController.FANF,
|
||||||
FController.FCenterFreq, FController.FFilter,
|
FController.FCenterFreq, FController.FFilter,
|
||||||
FController.FVfoB, FController.FActiveVfo,
|
FController.FVfoB, FController.FActiveVfo,
|
||||||
FController.FTransmitting, TrkDrive.Position,
|
FController.FTransmitting, FController.FDrivePercent,
|
||||||
FController.FAtten, FController.FTuning, FController.FDisplayDuplex,
|
FController.FAtten, FController.FTuning, FController.FDisplayDuplex,
|
||||||
FLastFwdW, FLastSWR, FController.FPAMaxPower,
|
FLastFwdW, FLastSWR, FController.FPAMaxPower,
|
||||||
WebStatusText, WebBoardText, WebIPText, WebSupplyText,
|
WebStatusText, WebBoardText, WebIPText, WebSupplyText,
|
||||||
@@ -4041,10 +4041,10 @@ begin
|
|||||||
if Assigned(FSampleRateOverlay) then
|
if Assigned(FSampleRateOverlay) then
|
||||||
FSampleRateOverlay.SetCurrentRate(FController.FSampleRate);
|
FSampleRateOverlay.SetCurrentRate(FController.FSampleRate);
|
||||||
end;
|
end;
|
||||||
BtnNR.Tag := EnsureRange(G_Settings.NRMode, 0, 4); UpdateNRButton;
|
FController.FNRMode := EnsureRange(G_Settings.NRMode, 0, 4); UpdateNRButton;
|
||||||
BtnNB.Tag := EnsureRange(G_Settings.NBMode, 0, 2); UpdateNBButton;
|
FController.FNBMode := EnsureRange(G_Settings.NBMode, 0, 2); UpdateNBButton;
|
||||||
BtnSNB.Tag := Ord(G_Settings.SNBEnabled); UpdateSNBButton;
|
FController.FSNB := G_Settings.SNBEnabled; UpdateSNBButton;
|
||||||
BtnANF.Tag := Ord(G_Settings.ANFEnabled); UpdateANFButton;
|
FController.FANF := G_Settings.ANFEnabled; UpdateANFButton;
|
||||||
FController.FWfAGCEnabled := G_Settings.WfAGCEnabled;
|
FController.FWfAGCEnabled := G_Settings.WfAGCEnabled;
|
||||||
FController.FWfNFEnabled := G_Settings.WfNFEnabled;
|
FController.FWfNFEnabled := G_Settings.WfNFEnabled;
|
||||||
FController.FDitherEnabled := G_Settings.DitherEnabled;
|
FController.FDitherEnabled := G_Settings.DitherEnabled;
|
||||||
@@ -4632,7 +4632,7 @@ begin
|
|||||||
FPreChannelPower := -1;
|
FPreChannelPower := -1;
|
||||||
FController.FDriveLevel := CalcDriveByte;
|
FController.FDriveLevel := CalcDriveByte;
|
||||||
if FController.FWDSPReady then
|
if FController.FWDSPReady then
|
||||||
FController.FDSPEngine.SetDriveLevel(TrkDrive.Position / 100.0);
|
FController.FDSPEngine.SetDriveLevel(FController.FDrivePercent / 100.0);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -4758,7 +4758,7 @@ begin
|
|||||||
StyleButton(BtnTUN, False);
|
StyleButton(BtnTUN, False);
|
||||||
FController.FDriveLevel := CalcDriveByte;
|
FController.FDriveLevel := CalcDriveByte;
|
||||||
if FController.FWDSPReady then
|
if FController.FWDSPReady then
|
||||||
FController.FDSPEngine.SetDriveLevel(TrkDrive.Position / 100.0);
|
FController.FDSPEngine.SetDriveLevel(FController.FDrivePercent / 100.0);
|
||||||
if FController.FNetwork.Connected and FController.FNetwork.Running then
|
if FController.FNetwork.Connected and FController.FNetwork.Running then
|
||||||
begin
|
begin
|
||||||
FController.FNetwork.UpdateState(XvtrTranslate(FController.FCenterFreq), XvtrTranslate(ActiveTXFreqHz), FController.FDriveLevel,
|
FController.FNetwork.UpdateState(XvtrTranslate(FController.FCenterFreq), XvtrTranslate(ActiveTXFreqHz), FController.FDriveLevel,
|
||||||
@@ -5531,7 +5531,7 @@ begin
|
|||||||
// поэтому сохраняем оригинал в локальную переменную и восстанавливаем после.
|
// поэтому сохраняем оригинал в локальную переменную и восстанавливаем после.
|
||||||
if Ch.Power >= 0 then
|
if Ch.Power >= 0 then
|
||||||
begin
|
begin
|
||||||
i := TrkDrive.Position; // запомнить до срабатывания OnChange
|
i := FController.FDrivePercent; // запомнить до срабатывания OnChange
|
||||||
TrkDrive.Position := EnsureRange(Ch.Power, 0, 100); // TrkDriveChange обновит FController.FDriveLevel и WDSP
|
TrkDrive.Position := EnsureRange(Ch.Power, 0, 100); // TrkDriveChange обновит FController.FDriveLevel и WDSP
|
||||||
if FPreChannelPower < 0 then
|
if FPreChannelPower < 0 then
|
||||||
FPreChannelPower := i; // установить после (TrkDriveChange уже сбросил в -1)
|
FPreChannelPower := i; // установить после (TrkDriveChange уже сбросил в -1)
|
||||||
@@ -5596,7 +5596,7 @@ begin
|
|||||||
FPreChannelPower := -1;
|
FPreChannelPower := -1;
|
||||||
FController.FDriveLevel := CalcDriveByte;
|
FController.FDriveLevel := CalcDriveByte;
|
||||||
if FController.FWDSPReady then
|
if FController.FWDSPReady then
|
||||||
FController.FDSPEngine.SetDriveLevel(TrkDrive.Position / 100.0);
|
FController.FDSPEngine.SetDriveLevel(FController.FDrivePercent / 100.0);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@@ -5839,7 +5839,7 @@ end;
|
|||||||
|
|
||||||
procedure TMainForm.UpdateNRButton;
|
procedure TMainForm.UpdateNRButton;
|
||||||
begin
|
begin
|
||||||
case BtnNR.Tag of
|
case FController.FNRMode of
|
||||||
1: BtnNR.Caption := 'NR';
|
1: BtnNR.Caption := 'NR';
|
||||||
2: BtnNR.Caption := 'NR2';
|
2: BtnNR.Caption := 'NR2';
|
||||||
3: BtnNR.Caption := 'NR3';
|
3: BtnNR.Caption := 'NR3';
|
||||||
@@ -5847,71 +5847,71 @@ begin
|
|||||||
else
|
else
|
||||||
BtnNR.Caption := 'NR';
|
BtnNR.Caption := 'NR';
|
||||||
end;
|
end;
|
||||||
StyleButton(BtnNR, BtnNR.Tag <> 0);
|
StyleButton(BtnNR, FController.FNRMode <> 0);
|
||||||
BtnNR.Invalidate;
|
BtnNR.Invalidate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.UpdateNBButton;
|
procedure TMainForm.UpdateNBButton;
|
||||||
begin
|
begin
|
||||||
case BtnNB.Tag of
|
case FController.FNBMode of
|
||||||
1: BtnNB.Caption := 'NB';
|
1: BtnNB.Caption := 'NB';
|
||||||
2: BtnNB.Caption := 'NB2';
|
2: BtnNB.Caption := 'NB2';
|
||||||
else
|
else
|
||||||
BtnNB.Caption := 'NB';
|
BtnNB.Caption := 'NB';
|
||||||
end;
|
end;
|
||||||
StyleButton(BtnNB, BtnNB.Tag <> 0);
|
StyleButton(BtnNB, FController.FNBMode <> 0);
|
||||||
BtnNB.Invalidate;
|
BtnNB.Invalidate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.UpdateSNBButton;
|
procedure TMainForm.UpdateSNBButton;
|
||||||
begin
|
begin
|
||||||
BtnSNB.Caption := 'SNB';
|
BtnSNB.Caption := 'SNB';
|
||||||
StyleButton(BtnSNB, BtnSNB.Tag <> 0);
|
StyleButton(BtnSNB, FController.FSNB);
|
||||||
BtnSNB.Invalidate;
|
BtnSNB.Invalidate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.UpdateANFButton;
|
procedure TMainForm.UpdateANFButton;
|
||||||
begin
|
begin
|
||||||
BtnANF.Caption := 'ANF';
|
BtnANF.Caption := 'ANF';
|
||||||
StyleButton(BtnANF, BtnANF.Tag <> 0);
|
StyleButton(BtnANF, FController.FANF);
|
||||||
BtnANF.Invalidate;
|
BtnANF.Invalidate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.ApplyNoiseFilterButtonsToDSP;
|
procedure TMainForm.ApplyNoiseFilterButtonsToDSP;
|
||||||
begin
|
begin
|
||||||
if not FController.FWDSPReady then Exit;
|
if not FController.FWDSPReady then Exit;
|
||||||
FController.FDSPEngine.SetNRMode(BtnNR.Tag);
|
FController.FDSPEngine.SetNRMode(FController.FNRMode);
|
||||||
FController.FDSPEngine.SetNBMode(BtnNB.Tag);
|
FController.FDSPEngine.SetNBMode(FController.FNBMode);
|
||||||
FController.FDSPEngine.SetSNB(BtnSNB.Tag <> 0);
|
FController.FDSPEngine.SetSNB(FController.FSNB);
|
||||||
FController.FDSPEngine.SetANF(BtnANF.Tag <> 0);
|
FController.FDSPEngine.SetANF(FController.FANF);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.BtnNRClick(Sender: TObject);
|
procedure TMainForm.BtnNRClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
BtnNR.Tag := (BtnNR.Tag + 1) mod 5;
|
FController.FNRMode := (FController.FNRMode + 1) mod 5;
|
||||||
UpdateNRButton;
|
UpdateNRButton;
|
||||||
if FController.FWDSPReady then FController.FDSPEngine.SetNRMode(BtnNR.Tag);
|
if FController.FWDSPReady then FController.FDSPEngine.SetNRMode(FController.FNRMode);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.BtnNBClick(Sender: TObject);
|
procedure TMainForm.BtnNBClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
BtnNB.Tag := (BtnNB.Tag + 1) mod 3;
|
FController.FNBMode := (FController.FNBMode + 1) mod 3;
|
||||||
UpdateNBButton;
|
UpdateNBButton;
|
||||||
if FController.FWDSPReady then FController.FDSPEngine.SetNBMode(BtnNB.Tag);
|
if FController.FWDSPReady then FController.FDSPEngine.SetNBMode(FController.FNBMode);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.BtnSNBClick(Sender: TObject);
|
procedure TMainForm.BtnSNBClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
BtnSNB.Tag := 1 - BtnSNB.Tag;
|
FController.FSNB := not FController.FSNB;
|
||||||
UpdateSNBButton;
|
UpdateSNBButton;
|
||||||
if FController.FWDSPReady then FController.FDSPEngine.SetSNB(BtnSNB.Tag <> 0);
|
if FController.FWDSPReady then FController.FDSPEngine.SetSNB(FController.FSNB);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.BtnANFClick(Sender: TObject);
|
procedure TMainForm.BtnANFClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
BtnANF.Tag := 1 - BtnANF.Tag;
|
FController.FANF := not FController.FANF;
|
||||||
UpdateANFButton;
|
UpdateANFButton;
|
||||||
if FController.FWDSPReady then FController.FDSPEngine.SetANF(BtnANF.Tag <> 0);
|
if FController.FWDSPReady then FController.FDSPEngine.SetANF(FController.FANF);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@@ -5962,7 +5962,7 @@ begin
|
|||||||
FVfoOverlay.Width := 260;
|
FVfoOverlay.Width := 260;
|
||||||
FVfoOverlay.Height := 136; // OVL_H_NORM — расширяется сам при открытии AGC-пикера
|
FVfoOverlay.Height := 136; // OVL_H_NORM — расширяется сам при открытии AGC-пикера
|
||||||
FVfoOverlay.SetState(FController.FMode, FController.FFilterBW, FController.FVfoA, FLastSMeter);
|
FVfoOverlay.SetState(FController.FMode, FController.FFilterBW, FController.FVfoA, FLastSMeter);
|
||||||
FVfoOverlay.SetDSPState(BtnNR.Tag, BtnNB.Tag, BtnSNB.Tag <> 0, BtnANF.Tag <> 0, FController.FAGCMode);
|
FVfoOverlay.SetDSPState(FController.FNRMode, FController.FNBMode, FController.FSNB, FController.FANF, FController.FAGCMode);
|
||||||
FVfoOverlay.Visible := True;
|
FVfoOverlay.Visible := True;
|
||||||
PositionVfoOverlay;
|
PositionVfoOverlay;
|
||||||
end
|
end
|
||||||
@@ -6047,17 +6047,17 @@ begin
|
|||||||
if Assigned(FVfoOverlay) and FVfoOverlay.Visible then
|
if Assigned(FVfoOverlay) and FVfoOverlay.Visible then
|
||||||
begin
|
begin
|
||||||
FVfoOverlay.SetState(FController.FMode, FController.FFilterBW, FController.FVfoA, FLastSMeter);
|
FVfoOverlay.SetState(FController.FMode, FController.FFilterBW, FController.FVfoA, FLastSMeter);
|
||||||
FVfoOverlay.SetDSPState(BtnNR.Tag, BtnNB.Tag, BtnSNB.Tag <> 0, BtnANF.Tag <> 0, FController.FAGCMode);
|
FVfoOverlay.SetDSPState(FController.FNRMode, FController.FNBMode, FController.FSNB, FController.FANF, FController.FAGCMode);
|
||||||
PositionVfoOverlay; // перепозиционируем при смене LSB↔USB
|
PositionVfoOverlay; // перепозиционируем при смене LSB↔USB
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.OnVfoOverlayDSPChange(NRMode, NBMode: Integer; SNBOn, ANFOn: Boolean);
|
procedure TMainForm.OnVfoOverlayDSPChange(NRMode, NBMode: Integer; SNBOn, ANFOn: Boolean);
|
||||||
begin
|
begin
|
||||||
BtnNR.Tag := NRMode; UpdateNRButton;
|
FController.FNRMode := NRMode; UpdateNRButton;
|
||||||
BtnNB.Tag := NBMode; UpdateNBButton;
|
FController.FNBMode := NBMode; UpdateNBButton;
|
||||||
BtnSNB.Tag := Ord(SNBOn); UpdateSNBButton;
|
FController.FSNB := SNBOn; UpdateSNBButton;
|
||||||
BtnANF.Tag := Ord(ANFOn); UpdateANFButton;
|
FController.FANF := ANFOn; UpdateANFButton;
|
||||||
ApplyNoiseFilterButtonsToDSP;
|
ApplyNoiseFilterButtonsToDSP;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -6462,11 +6462,11 @@ procedure TMainForm.SyncWebNR;
|
|||||||
begin
|
begin
|
||||||
if FWebSyncInt < 0 then FWebSyncInt := 0;
|
if FWebSyncInt < 0 then FWebSyncInt := 0;
|
||||||
if FWebSyncInt > 4 then FWebSyncInt := 4;
|
if FWebSyncInt > 4 then FWebSyncInt := 4;
|
||||||
if BtnNR.Tag <> FWebSyncInt then
|
if FController.FNRMode <> FWebSyncInt then
|
||||||
begin
|
begin
|
||||||
BtnNR.Tag := FWebSyncInt;
|
FController.FNRMode := FWebSyncInt;
|
||||||
UpdateNRButton;
|
UpdateNRButton;
|
||||||
if FController.FWDSPReady then FController.FDSPEngine.SetNRMode(BtnNR.Tag);
|
if FController.FWDSPReady then FController.FDSPEngine.SetNRMode(FController.FNRMode);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -6483,11 +6483,11 @@ procedure TMainForm.SyncWebNB;
|
|||||||
begin
|
begin
|
||||||
if FWebSyncInt < 0 then FWebSyncInt := 0;
|
if FWebSyncInt < 0 then FWebSyncInt := 0;
|
||||||
if FWebSyncInt > 2 then FWebSyncInt := 2;
|
if FWebSyncInt > 2 then FWebSyncInt := 2;
|
||||||
if BtnNB.Tag <> FWebSyncInt then
|
if FController.FNBMode <> FWebSyncInt then
|
||||||
begin
|
begin
|
||||||
BtnNB.Tag := FWebSyncInt;
|
FController.FNBMode := FWebSyncInt;
|
||||||
UpdateNBButton;
|
UpdateNBButton;
|
||||||
if FController.FWDSPReady then FController.FDSPEngine.SetNBMode(BtnNB.Tag);
|
if FController.FWDSPReady then FController.FDSPEngine.SetNBMode(FController.FNBMode);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -6500,7 +6500,7 @@ end;
|
|||||||
|
|
||||||
procedure TMainForm.SyncWebSNB;
|
procedure TMainForm.SyncWebSNB;
|
||||||
begin
|
begin
|
||||||
if FWebSyncBool <> (BtnSNB.Tag <> 0) then
|
if FWebSyncBool <> (FController.FSNB) then
|
||||||
BtnSNBClick(BtnSNB);
|
BtnSNBClick(BtnSNB);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -6515,7 +6515,7 @@ end;
|
|||||||
|
|
||||||
procedure TMainForm.SyncWebANF;
|
procedure TMainForm.SyncWebANF;
|
||||||
begin
|
begin
|
||||||
if FWebSyncBool <> (BtnANF.Tag <> 0) then
|
if FWebSyncBool <> (FController.FANF) then
|
||||||
BtnANFClick(BtnANF);
|
BtnANFClick(BtnANF);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -6690,10 +6690,11 @@ end;
|
|||||||
|
|
||||||
procedure TMainForm.TrkDriveChange(Sender: TObject);
|
procedure TMainForm.TrkDriveChange(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
FController.FDrivePercent := TrkDrive.Position; // слайдер — ввод; контроллер — истина
|
||||||
FPreChannelPower := -1; // ручное изменение снимает сохранённую мощность канала
|
FPreChannelPower := -1; // ручное изменение снимает сохранённую мощность канала
|
||||||
FController.FDriveLevel := CalcDriveByte;
|
FController.FDriveLevel := CalcDriveByte;
|
||||||
if FController.FWDSPReady then
|
if FController.FWDSPReady then
|
||||||
FController.FDSPEngine.SetDriveLevel(TrkDrive.Position / 100.0);
|
FController.FDSPEngine.SetDriveLevel(FController.FDrivePercent / 100.0);
|
||||||
if FController.FNetwork.Connected and FController.FNetwork.Running then
|
if FController.FNetwork.Connected and FController.FNetwork.Running then
|
||||||
begin
|
begin
|
||||||
FController.FNetwork.UpdateState(XvtrTranslate(FController.FCenterFreq), XvtrTranslate(ActiveTXFreqHz), FController.FDriveLevel, FController.FTransmitting, True, True);
|
FController.FNetwork.UpdateState(XvtrTranslate(FController.FCenterFreq), XvtrTranslate(ActiveTXFreqHz), FController.FDriveLevel, FController.FTransmitting, True, True);
|
||||||
@@ -6739,9 +6740,9 @@ begin
|
|||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
if XvtrActive then
|
if XvtrActive then
|
||||||
Pos := Round(TrkDrive.Position * FController.FXvtrSettings.Entries[FController.FCurrentXvtr].TXPower / 100.0)
|
Pos := Round(FController.FDrivePercent * FController.FXvtrSettings.Entries[FController.FCurrentXvtr].TXPower / 100.0)
|
||||||
else
|
else
|
||||||
Pos := TrkDrive.Position;
|
Pos := FController.FDrivePercent;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if Pos <= 0 then begin Result := 0; Exit; end;
|
if Pos <= 0 then begin Result := 0; Exit; end;
|
||||||
@@ -7750,13 +7751,13 @@ function TMainForm.CATGetMode: Integer; begin Result := FController.FMode;
|
|||||||
function TMainForm.CATGetActiveVfo: Integer; begin Result := FController.FActiveVfo; end;
|
function TMainForm.CATGetActiveVfo: Integer; begin Result := FController.FActiveVfo; end;
|
||||||
function TMainForm.CATGetAGCMode: Integer; begin Result := FController.FAGCMode; end;
|
function TMainForm.CATGetAGCMode: Integer; begin Result := FController.FAGCMode; end;
|
||||||
function TMainForm.CATGetVolume: Integer; begin Result := FController.FVolume; end;
|
function TMainForm.CATGetVolume: Integer; begin Result := FController.FVolume; end;
|
||||||
function TMainForm.CATGetDriveLevel: Integer;begin Result := TrkDrive.Position; end;
|
function TMainForm.CATGetDriveLevel: Integer;begin Result := FController.FDrivePercent; end;
|
||||||
function TMainForm.CATGetFilterIdx: Integer; begin Result := FController.FFilter; end;
|
function TMainForm.CATGetFilterIdx: Integer; begin Result := FController.FFilter; end;
|
||||||
function TMainForm.CATGetFilterBW: Integer; begin Result := FController.FFilterBW; end;
|
function TMainForm.CATGetFilterBW: Integer; begin Result := FController.FFilterBW; end;
|
||||||
function TMainForm.CATGetNRMode: Integer; begin Result := BtnNR.Tag; end;
|
function TMainForm.CATGetNRMode: Integer; begin Result := FController.FNRMode; end;
|
||||||
function TMainForm.CATGetNBMode: Integer; begin Result := BtnNB.Tag; end;
|
function TMainForm.CATGetNBMode: Integer; begin Result := FController.FNBMode; end;
|
||||||
function TMainForm.CATGetSNB: Boolean; begin Result := BtnSNB.Tag <> 0; end;
|
function TMainForm.CATGetSNB: Boolean; begin Result := FController.FSNB; end;
|
||||||
function TMainForm.CATGetANF: Boolean; begin Result := BtnANF.Tag <> 0; end;
|
function TMainForm.CATGetANF: Boolean; begin Result := FController.FANF; end;
|
||||||
function TMainForm.CATGetTX: Boolean; begin Result := FController.FTransmitting; end;
|
function TMainForm.CATGetTX: Boolean; begin Result := FController.FTransmitting; end;
|
||||||
function TMainForm.CATGetRunning: Boolean; begin Result := FController.FRunning; end;
|
function TMainForm.CATGetRunning: Boolean; begin Result := FController.FRunning; end;
|
||||||
function TMainForm.CATGetSMeter: Double; begin Result := FLastSMeter; end;
|
function TMainForm.CATGetSMeter: Double; begin Result := FLastSMeter; end;
|
||||||
|
|||||||
+6
-5
@@ -142,7 +142,8 @@ type
|
|||||||
// ---- Аудио / TX ----
|
// ---- Аудио / TX ----
|
||||||
FVolume: Integer;
|
FVolume: Integer;
|
||||||
FMuted: Boolean;
|
FMuted: Boolean;
|
||||||
FDriveLevel: Byte;
|
FDrivePercent: Integer; // драйв 0..100 % (UI-уровень, источник истины)
|
||||||
|
FDriveLevel: Byte; // вычисляемый hardware-байт (CalcDriveByte)
|
||||||
FAtten: Integer;
|
FAtten: Integer;
|
||||||
FPAMaxPower: Double;
|
FPAMaxPower: Double;
|
||||||
FRunning: Boolean;
|
FRunning: Boolean;
|
||||||
@@ -287,7 +288,7 @@ begin
|
|||||||
FVfoA := 14200000; FVfoB := 7100000; FActiveVfo := 0;
|
FVfoA := 14200000; FVfoB := 7100000; FActiveVfo := 0;
|
||||||
FMode := 1; FFilter := 5; FFilterBW := 2700;
|
FMode := 1; FFilter := 5; FFilterBW := 2700;
|
||||||
FAGCMode := 1; FAGCTop := 90;
|
FAGCMode := 1; FAGCTop := 90;
|
||||||
FVolume := 70; FDriveLevel := 0; FAtten := 0;
|
FVolume := 70; FDrivePercent := 50; FDriveLevel := 0; FAtten := 0;
|
||||||
FCenterFreq := FVfoA; FSpanHz := 192000; FSampleRate := 192000;
|
FCenterFreq := FVfoA; FSpanHz := 192000; FSampleRate := 192000;
|
||||||
FCurrentBand := 5; FCurrentXvtr := -1;
|
FCurrentBand := 5; FCurrentXvtr := -1;
|
||||||
FPAMaxPower := 100.0;
|
FPAMaxPower := 100.0;
|
||||||
@@ -322,7 +323,7 @@ begin
|
|||||||
Result.SampleRate := FSampleRate; Result.ActiveVfo := FActiveVfo;
|
Result.SampleRate := FSampleRate; Result.ActiveVfo := FActiveVfo;
|
||||||
Result.Mode := FMode; Result.Filter := FFilter; Result.FilterBW := FFilterBW;
|
Result.Mode := FMode; Result.Filter := FFilter; Result.FilterBW := FFilterBW;
|
||||||
Result.AGCMode := FAGCMode; Result.AGCTop := FAGCTop;
|
Result.AGCMode := FAGCMode; Result.AGCTop := FAGCTop;
|
||||||
Result.Volume := FVolume; Result.Drive := FDriveLevel; Result.Atten := FAtten;
|
Result.Volume := FVolume; Result.Drive := FDrivePercent; Result.Atten := FAtten;
|
||||||
Result.Band := FCurrentBand; Result.Xvtr := FCurrentXvtr;
|
Result.Band := FCurrentBand; Result.Xvtr := FCurrentXvtr;
|
||||||
Result.Muted := FMuted; Result.CTun := FCTun; Result.Duplex := FDisplayDuplex;
|
Result.Muted := FMuted; Result.CTun := FCTun; Result.Duplex := FDisplayDuplex;
|
||||||
Result.Running := FRunning; Result.Connected := FDevConnected;
|
Result.Running := FRunning; Result.Connected := FDevConnected;
|
||||||
@@ -402,10 +403,10 @@ procedure TRadioController.ToggleMute;
|
|||||||
begin SetMute(not FMuted); end;
|
begin SetMute(not FMuted); end;
|
||||||
|
|
||||||
procedure TRadioController.SetDrive(V: Integer);
|
procedure TRadioController.SetDrive(V: Integer);
|
||||||
begin FDriveLevel := Byte(V); Changed(rfDrive); { TODO wiring } end;
|
begin FDrivePercent := V; Changed(rfDrive); { TODO wiring: CalcDriveByte + WDSP } end;
|
||||||
|
|
||||||
procedure TRadioController.DriveBy(Delta: Integer);
|
procedure TRadioController.DriveBy(Delta: Integer);
|
||||||
begin SetDrive(FDriveLevel + Delta); end;
|
begin SetDrive(FDrivePercent + Delta); end;
|
||||||
|
|
||||||
procedure TRadioController.SetAtten(Idx: Integer);
|
procedure TRadioController.SetAtten(Idx: Integer);
|
||||||
begin FAtten := Idx; Changed(rfAtten); { TODO wiring } end;
|
begin FAtten := Idx; Changed(rfAtten); { TODO wiring } end;
|
||||||
|
|||||||
Reference in New Issue
Block a user