fix(tx): ширина TX-полосы независима от RX-фильтра (модель Thetis)

Убрано RX→TX зеркало: ApplyModeFilter больше не тащит края RX-фильтра в TX
(FDSPEngine.SetTXFilter удалён и из вызова, и как метод движка — был
единственный вызов). Раньше TX bp0 писали два источника с разной шириной:
ApplyModeFilter (RX-ширина FFilterBW) и ApplyTXChainSettings/SetTXFilterFull
(TX-фильтр 200/3100) — на MOX побеждал TX-фильтр, между оверами держалась
RX-ширина, ширина прыгала.

Теперь TX-полосу задаёт ТОЛЬКО TX-фильтр из настроек (через TXSignedEdges),
независимо от RX. RX LSB 5.0k больше не раздувает излучаемый сигнал. База под
ESSB: расширение TX-фильтра в Setup сразу даёт нужную полосу передачи.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-24 21:28:01 +03:00
co-authored by Claude Opus 4.8
parent 51e8fc4782
commit f425071461
2 changed files with 3 additions and 11 deletions
+3 -1
View File
@@ -2885,8 +2885,10 @@ begin
FilterEdgesFor(FMode, FFilterBW, Lo, Hi); FilterEdgesFor(FMode, FFilterBW, Lo, Hi);
if FWDSPReady and Assigned(FDSPEngine) then if FWDSPReady and Assigned(FDSPEngine) then
begin begin
// Только RX. TX-полоса НЕ следует за RX-фильтром (модель Thetis) — её
// единственный источник TX-фильтр из настроек (SetTXFilterFull/ApplyTXChain
// через TXSignedEdges). Иначе широкий RX раздувал бы излучаемый сигнал.
FDSPEngine.SetFilter(Lo, Hi); FDSPEngine.SetFilter(Lo, Hi);
FDSPEngine.SetTXFilter(Lo, Hi);
if FMode in [MODE_FM, MODE_DMR, MODE_FMRAW] then if FMode in [MODE_FM, MODE_DMR, MODE_FMRAW] then
begin begin
if FMode = MODE_FMRAW then if FMode = MODE_FMRAW then
-10
View File
@@ -650,7 +650,6 @@ type
// TX управление // TX управление
procedure SetTXMode(Mode: Integer); procedure SetTXMode(Mode: Integer);
procedure SetTXFilter(Low, High: Integer);
procedure SetDriveLevel(Level: Double); procedure SetDriveLevel(Level: Double);
procedure SetMicGain(GainDB: Double); procedure SetMicGain(GainDB: Double);
procedure SetTXRun(Run: Boolean); procedure SetTXRun(Run: Boolean);
@@ -3248,15 +3247,6 @@ begin
ApplyTXMode(FTXMode); ApplyTXMode(FTXMode);
end; end;
procedure TWDSPEngine.SetTXFilter(Low, High: Integer);
begin
if not FInitialized then Exit;
// In FM RAW this is an RF-channel-width update mirrored from the RX UI,
// not an audio passband request. The flat modem AF passband is fixed above.
if FTXMode = MODE_FMRAW then Exit;
SetTXABandpassFreqs(TXA_CHAN, Low, High);
end;
procedure TWDSPEngine.SetDriveLevel(Level: Double); procedure TWDSPEngine.SetDriveLevel(Level: Double);
begin begin
if not FInitialized then Exit; if not FInitialized then Exit;