mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 18:43:51 +00:00
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:
+3
-1
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user