mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
DUP (display duplex) + ATT on TX
- DUP: локальный режим отображения, при TX данные RX1, поверх рисуется TX-фильтр. Кнопка на левой панели рядом с CTUN. Аппаратной командой не является. Отдельный SetDisplaySourceTX в WDSPEngine, разделение TXMode (data) и TXOverlay (filter band) в SpectrumView. - ATT on TX: 0..31 dB, default 31 (Thetis-style). UI на вкладке Transmit в группе Microphone. Передаётся в DUC Specific bytes 57/58/59 (StepAtten0/1/2). Перепосылается при изменении.
This commit is contained in:
@@ -44,6 +44,9 @@ type
|
||||
MicPTTEnabled: Boolean; // bit2: Mic PTT enable
|
||||
// Mic gain (dB, применяется в WDSP PanelGain1)
|
||||
MicGainDB: Double; // -10..+30
|
||||
// ATT on TX — ослабление RX-ADC во время передачи (защита от утечки TX).
|
||||
// DUC Specific bytes 57/58/59 (StepAtten 0/1/2). Thetis default: 31 dB.
|
||||
AttOnTX: Integer; // 0..31 dB
|
||||
// TX bandpass filter
|
||||
FilterLow: Integer; // Hz, для SSB обычно 100
|
||||
FilterHigh: Integer; // Hz, для SSB обычно 2800
|
||||
@@ -135,6 +138,7 @@ type
|
||||
// --- Visibility settings ---
|
||||
ShowSpectrum: Boolean; // True = draw spectrum on main form
|
||||
ShowWaterfall: Boolean; // True = draw waterfall on main form
|
||||
DisplayDuplex: Boolean; // DUP: при TX показывать RX-водопад, TX-фильтр overlay'ем
|
||||
// --- Display FPS ---
|
||||
DisplayFPS: Integer; // spectrum/waterfall timer fps (1..100)
|
||||
// --- Theme ---
|
||||
@@ -280,6 +284,7 @@ begin
|
||||
G.AudioInDevice := '';
|
||||
G.ShowSpectrum := True;
|
||||
G.ShowWaterfall := True;
|
||||
G.DisplayDuplex := False;
|
||||
G.DisplayFPS := 60;
|
||||
// CAT defaults
|
||||
for i := 0 to 3 do begin
|
||||
@@ -488,6 +493,7 @@ begin
|
||||
// Visibility settings
|
||||
G.ShowSpectrum := JB(GObj,'show_spectrum',True);
|
||||
G.ShowWaterfall := JB(GObj,'show_waterfall',True);
|
||||
G.DisplayDuplex := JB(GObj,'display_duplex',False);
|
||||
G.DisplayFPS := JI(GObj,'display_fps',60);
|
||||
G.LightTheme := JB(GObj,'light_theme',False);
|
||||
// PA settings
|
||||
@@ -565,6 +571,7 @@ begin
|
||||
// Visibility settings
|
||||
JW(O,'show_spectrum',G.ShowSpectrum);
|
||||
JW(O,'show_waterfall',G.ShowWaterfall);
|
||||
JW(O,'display_duplex',G.DisplayDuplex);
|
||||
JW(O,'display_fps',G.DisplayFPS);
|
||||
JW(O,'light_theme',G.LightTheme);
|
||||
// PA settings
|
||||
@@ -721,6 +728,8 @@ begin
|
||||
T.MicLineIn := False;
|
||||
T.MicPTTEnabled := False;
|
||||
T.MicGainDB := 10.0;
|
||||
// ATT on TX — Thetis default 31 dB (полная защита RX-ADC во время передачи)
|
||||
T.AttOnTX := 31;
|
||||
// SSB-фильтр по умолчанию
|
||||
T.FilterLow := 100;
|
||||
T.FilterHigh := 2800;
|
||||
@@ -794,6 +803,7 @@ begin
|
||||
T.MicLineIn := JB(O,'mic_line_in', T.MicLineIn);
|
||||
T.MicPTTEnabled := JB(O,'mic_ptt_enabled', T.MicPTTEnabled);
|
||||
T.MicGainDB := JD(O,'mic_gain_db', T.MicGainDB);
|
||||
T.AttOnTX := EnsureRange(JI(O,'att_on_tx', T.AttOnTX), 0, 31);
|
||||
T.FilterLow := JI(O,'filter_low', T.FilterLow);
|
||||
T.FilterHigh := JI(O,'filter_high', T.FilterHigh);
|
||||
T.FilterNC := JI(O,'filter_nc', T.FilterNC);
|
||||
@@ -848,6 +858,7 @@ begin
|
||||
JW(O,'mic_line_in', T.MicLineIn);
|
||||
JW(O,'mic_ptt_enabled', T.MicPTTEnabled);
|
||||
JW(O,'mic_gain_db', T.MicGainDB);
|
||||
JW(O,'att_on_tx', T.AttOnTX);
|
||||
JW(O,'filter_low', T.FilterLow);
|
||||
JW(O,'filter_high', T.FilterHigh);
|
||||
JW(O,'filter_nc', T.FilterNC);
|
||||
|
||||
Reference in New Issue
Block a user