diff --git a/RadioController.pas b/RadioController.pas index 4fe380e..d41a7d8 100644 --- a/RadioController.pas +++ b/RadioController.pas @@ -4147,6 +4147,10 @@ end; procedure TRadioController.ApplyTXSettingsToDSP; begin if not FWDSPReady then Exit; + // Thetis держит CFIR постоянно включённым для openHPSDR Protocol 2: + // он компенсирует АЧХ FPGA CIC-интерполятора TX. Pluto этого фильтра не + // имеет, поэтому при смене бэкенда явно выключаем его. + FDSPEngine.SetTXCFIR(BackendCaps.Kind = bkHPSDR); // Mic source — выставляем значение по умолчанию для MOX-кнопки; // при реальном PTT SetMOX скорректирует источник. FDSPEngine.SetTXMicSource(DefaultMicSource); diff --git a/WDSPEngine.pas b/WDSPEngine.pas index 9040539..9058828 100644 --- a/WDSPEngine.pas +++ b/WDSPEngine.pas @@ -647,6 +647,9 @@ type // Тона Freq1/Freq2 Гц (для LSB/CWL/DIGL знак инвертируется), амплитуды // по 0.49 (сумма чуть ниже полной шкалы, как Thetis/pihpsdr). procedure SetTXTwoTone(Enabled: Boolean; Freq1, Freq2: Double); + // Protocol 2: компенсирующий FIR перед FPGA CIC-интерполятором TX. + // Для openHPSDR P2 всегда включён; для остальных бэкендов выключен. + procedure SetTXCFIR(Enabled: Boolean); // ---- PureSignal (WDSP calcc на TXA_CHAN) ---- // Армирование подачи feedback в pscc (кнопка PS). Сама калибровка @@ -3321,6 +3324,12 @@ begin SetTXAPostGenRun(TXA_CHAN, 0); end; +procedure TWDSPEngine.SetTXCFIR(Enabled: Boolean); +begin + if not FInitialized then Exit; + SetTXACFIRRun(TXA_CHAN, Ord(Enabled)); +end; + procedure TWDSPEngine.SetDisplaySourceTX(UseTX: Boolean); begin // Тот же сброс позиций, что и в SetTXRun — analyzer-буферы у обоих DispID