Phase 3 (heavy prep): move XvtrTranslate/ActiveTXFreqHz into controller

Перенос частотных хелперов (общий блокер для Vfo/Mode/Band/CTun/TX/FM-Rpt)
в TRadioController как чистых read-only функций над состоянием. Все
константы (CFG_XVTR_COUNT, MODE_FM, RPT_MINUS/PLUS) уже доступны через
Settings/WDSPEngine/FMRepeater в uses контроллера. MainForm.XvtrTranslate
и MainForm.ActiveTXFreqHz стали тонкими обёртками-делегатами — ~40 мест
вызова в UI/сетевом слое работают без изменений.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Uladzimir Karpenka
2026-06-04 15:28:33 +03:00
co-authored by Claude Opus 4.8
parent fd145b28f6
commit d895800f62
2 changed files with 35 additions and 15 deletions
+4 -15
View File
@@ -5767,14 +5767,8 @@ end;
function TMainForm.ActiveTXFreqHz: Double;
begin
if FController.FSplitTxB then Result := FController.FVfoB
else if FController.FActiveVfo = 0 then Result := FController.FVfoA
else Result := FController.FVfoB;
if FController.FMode = MODE_FM then
case FController.FFMRptDir of
RPT_MINUS: Result := Result - FController.FFMRptOffsetHz;
RPT_PLUS: Result := Result + FController.FFMRptOffsetHz;
end;
// Логика перенесена в контроллер; обёртка для существующих вызовов в UI.
Result := FController.ActiveTXFreqHz;
end;
procedure TMainForm.ApplyMOX(Active: Boolean);
@@ -6912,13 +6906,8 @@ end;
// Если активный XVTR не задан — возвращает входную частоту без изменений.
function TMainForm.XvtrTranslate(VisibleHz: Double): Double;
begin
Result := VisibleHz;
if (FController.FCurrentXvtr < 0) or (FController.FCurrentXvtr >= CFG_XVTR_COUNT) then Exit;
if not FController.FXvtrSettings.Entries[FController.FCurrentXvtr].Enabled then Exit;
// f_IF = f_visible - LOOffset + LOError
Result := VisibleHz
- FController.FXvtrSettings.Entries[FController.FCurrentXvtr].LOOffset
+ FController.FXvtrSettings.Entries[FController.FCurrentXvtr].LOError;
// Логика перенесена в контроллер; обёртка для существующих вызовов в UI.
Result := FController.XvtrTranslate(VisibleHz);
end;
// Передаёт XVTR-режим в сетевой слой. Вызывается при смене XVTR или его