mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
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:
co-authored by
Claude Opus 4.8
parent
fd145b28f6
commit
d895800f62
@@ -202,6 +202,14 @@ type
|
||||
// Снимок всего состояния (для синхронизации нового фронтенда).
|
||||
function GetSnapshot: TRadioSnapshot;
|
||||
|
||||
// Частотные хелперы — чистые вычисления над состоянием, общие для всех
|
||||
// фронтендов и сетевого слоя (Vfo/Mode/Band/CTun/TX/FM-Rpt).
|
||||
// XvtrTranslate — переводит видимую частоту в частоту IF-тракта с учётом
|
||||
// активного трансвертора (LOOffset/LOError).
|
||||
// ActiveTXFreqHz — текущая TX-частота (split/active VFO + FM-репитер сдвиг).
|
||||
function XvtrTranslate(VisibleHz: Double): Double;
|
||||
function ActiveTXFreqHz: Double;
|
||||
|
||||
// ====================================================================
|
||||
// КОМАНДЫ — единый API для GUI / Web / CAT / Arduino.
|
||||
// Фаза 1: обновляют поле + шлют событие; логика движка — TODO-wiring.
|
||||
@@ -341,6 +349,29 @@ begin
|
||||
Result.PLLLock := FLastPLLLock;
|
||||
end;
|
||||
|
||||
function TRadioController.XvtrTranslate(VisibleHz: Double): Double;
|
||||
begin
|
||||
Result := VisibleHz;
|
||||
if (FCurrentXvtr < 0) or (FCurrentXvtr >= CFG_XVTR_COUNT) then Exit;
|
||||
if not FXvtrSettings.Entries[FCurrentXvtr].Enabled then Exit;
|
||||
// f_IF = f_visible - LOOffset + LOError
|
||||
Result := VisibleHz
|
||||
- FXvtrSettings.Entries[FCurrentXvtr].LOOffset
|
||||
+ FXvtrSettings.Entries[FCurrentXvtr].LOError;
|
||||
end;
|
||||
|
||||
function TRadioController.ActiveTXFreqHz: Double;
|
||||
begin
|
||||
if FSplitTxB then Result := FVfoB
|
||||
else if FActiveVfo = 0 then Result := FVfoA
|
||||
else Result := FVfoB;
|
||||
if FMode = MODE_FM then
|
||||
case FFMRptDir of
|
||||
RPT_MINUS: Result := Result - FFMRptOffsetHz;
|
||||
RPT_PLUS: Result := Result + FFMRptOffsetHz;
|
||||
end;
|
||||
end;
|
||||
|
||||
// =====================================================================
|
||||
// Команды (Фаза 1 — каркас). Полная логика переносится из TMainForm.
|
||||
// =====================================================================
|
||||
|
||||
Reference in New Issue
Block a user