mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 18:43:51 +00:00
Phase 3 (batch 7): route CTun toggle through controller command
Первая команда тяжёлого класса. TRadioController.SetCTun несёт логику движка/сети (band cache, при выключении — центрирование на VFO + SetShift(0) + UpdateState/SendFullHP); все нужные поля и хелперы XvtrTranslate/ ActiveTXFreqHz уже в контроллере. BtnCTunClick — тонкая обёртка (SetCTun(not FCTun)); рендер (StyleButton/SyncSpecViewFreq/перерисовка спектра+водопада) ушёл в OnControllerState(rfCTun). Прямые записи FController.FCTun в путях band restore / ActivateVfo оставлены — мигрируют со своими командами (Band/VFO). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
d895800f62
commit
2e4cd3cc65
+12
-25
@@ -1444,6 +1444,15 @@ begin
|
|||||||
FSpecView.DrawSpectrum;
|
FSpecView.DrawSpectrum;
|
||||||
PbSpectrum.Invalidate;
|
PbSpectrum.Invalidate;
|
||||||
end;
|
end;
|
||||||
|
rfCTun:
|
||||||
|
begin
|
||||||
|
StyleButton(BtnCTun, FController.FCTun);
|
||||||
|
SyncSpecViewFreq;
|
||||||
|
FSpecView.DrawSpectrum;
|
||||||
|
FSpecView.DrawWaterfall;
|
||||||
|
PbSpectrum.Invalidate;
|
||||||
|
PbWaterfall.Invalidate;
|
||||||
|
end;
|
||||||
rfWfAGC:
|
rfWfAGC:
|
||||||
FSpecView.WfAGCEnabled := FController.FWfAGCEnabled;
|
FSpecView.WfAGCEnabled := FController.FWfAGCEnabled;
|
||||||
rfWfNF:
|
rfWfNF:
|
||||||
@@ -4733,31 +4742,9 @@ end;
|
|||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
procedure TMainForm.BtnCTunClick(Sender: TObject);
|
procedure TMainForm.BtnCTunClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
FController.FCTun := not FController.FCTun;
|
// Логика (band cache, center/shift, сеть) — в контроллере; рендер — в
|
||||||
StyleButton(BtnCTun, FController.FCTun);
|
// OnControllerState(rfCTun).
|
||||||
FController.FBandCache[FController.FCurrentBand].CTun := FController.FCTun;
|
FController.SetCTun(not FController.FCTun);
|
||||||
if not FController.FCTun then
|
|
||||||
begin
|
|
||||||
// Выключили CTUN: центрируемся на VFO, shift=0
|
|
||||||
FController.FCenterFreq := FController.FVfoA;
|
|
||||||
if FController.FWDSPReady then
|
|
||||||
FController.FDSPEngine.SetShift(0.0);
|
|
||||||
if FController.FNetwork.Connected and FController.FNetwork.Running then
|
|
||||||
begin
|
|
||||||
FController.FNetwork.UpdateState(XvtrTranslate(FController.FCenterFreq), XvtrTranslate(ActiveTXFreqHz), FController.FDriveLevel, FController.FTransmitting, True, True);
|
|
||||||
FController.FNetwork.SendFullHP;
|
|
||||||
end;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
// Включили CTUN: фиксируем текущее положение дисплея
|
|
||||||
// FController.FCenterFreq остаётся как есть — спектр не прыгает
|
|
||||||
end;
|
|
||||||
SyncSpecViewFreq;
|
|
||||||
FSpecView.DrawSpectrum;
|
|
||||||
FSpecView.DrawWaterfall;
|
|
||||||
PbSpectrum.Invalidate;
|
|
||||||
PbWaterfall.Invalidate;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|||||||
+18
-1
@@ -499,7 +499,24 @@ procedure TRadioController.SetSampleRate(Hz: Integer);
|
|||||||
begin FSampleRate := Hz; Changed(rfSampleRate); { TODO wiring: RecreateDSPEngine } end;
|
begin FSampleRate := Hz; Changed(rfSampleRate); { TODO wiring: RecreateDSPEngine } end;
|
||||||
|
|
||||||
procedure TRadioController.SetCTun(On_: Boolean);
|
procedure TRadioController.SetCTun(On_: Boolean);
|
||||||
begin FCTun := On_; Changed(rfCTun); { TODO wiring } end;
|
begin
|
||||||
|
FCTun := On_;
|
||||||
|
FBandCache[FCurrentBand].CTun := FCTun;
|
||||||
|
if not FCTun then
|
||||||
|
begin
|
||||||
|
// Выключили CTUN: центрируемся на VFO, shift=0. (Включение CTUN не трогает
|
||||||
|
// движок — FCenterFreq остаётся как есть, спектр не прыгает.)
|
||||||
|
FCenterFreq := FVfoA;
|
||||||
|
if FWDSPReady and Assigned(FDSPEngine) then FDSPEngine.SetShift(0.0);
|
||||||
|
if Assigned(FNetwork) and FNetwork.Connected and FNetwork.Running then
|
||||||
|
begin
|
||||||
|
FNetwork.UpdateState(XvtrTranslate(FCenterFreq), XvtrTranslate(ActiveTXFreqHz),
|
||||||
|
FDriveLevel, FTransmitting, True, True);
|
||||||
|
FNetwork.SendFullHP;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Changed(rfCTun);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TRadioController.SetDuplex(On_: Boolean);
|
procedure TRadioController.SetDuplex(On_: Boolean);
|
||||||
begin FDisplayDuplex := On_; Changed(rfDuplex); { TODO wiring } end;
|
begin FDisplayDuplex := On_; Changed(rfDuplex); { TODO wiring } end;
|
||||||
|
|||||||
Reference in New Issue
Block a user