mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +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:
+8
-2
@@ -89,6 +89,10 @@ type
|
||||
FTXFreq: Double; // центр TX-сигнала (Hz)
|
||||
FTXSpanHz: Double; // ширина TX-окна (192000 для Hermes/Saturn)
|
||||
FTXVfoIndex: Integer; // 0=A, 1=B — какой VFO привязан к TX (для split)
|
||||
// FTXOverlay — независимый от FTXMode флаг: «нарисовать TX-фильтр поверх
|
||||
// данных». DUP-режим: FTXMode=False (данные RX), но FTXOverlay=True (TX-полоса
|
||||
// красным сверху). Без DUP при TX оба флага True. Без TX оба False.
|
||||
FTXOverlay: Boolean;
|
||||
|
||||
// ── Marker ────────────────────────────────────────────────────────────────
|
||||
FMarkerActive: Boolean;
|
||||
@@ -167,6 +171,7 @@ type
|
||||
property TXFreq: Double read FTXFreq write FTXFreq;
|
||||
property TXSpanHz: Double read FTXSpanHz write FTXSpanHz;
|
||||
property TXVfoIndex: Integer read FTXVfoIndex write FTXVfoIndex;
|
||||
property TXOverlay: Boolean read FTXOverlay write FTXOverlay;
|
||||
|
||||
// ── Маркер ────────────────────────────────────────────────────────────────
|
||||
property MarkerActive: Boolean read FMarkerActive write FMarkerActive;
|
||||
@@ -414,6 +419,7 @@ begin
|
||||
FTXFreq := 0.0;
|
||||
FTXSpanHz := 192000.0;
|
||||
FTXVfoIndex := 0;
|
||||
FTXOverlay := False;
|
||||
FSpectrumBufCount := 1024;
|
||||
FWaterfallBufCount := 1024;
|
||||
FWfFrameInterval := 2;
|
||||
@@ -774,7 +780,7 @@ begin
|
||||
// (для split-режима TX-полоса рисуется без edges чтобы визуально отличалась).
|
||||
if FActiveVfo = 0 then CalcFilterBandX(FVfoA, W, X1, X2, VfoX)
|
||||
else CalcFilterBandX(FVfoB, W, X1, X2, VfoX);
|
||||
if FTXMode then
|
||||
if FTXOverlay then
|
||||
begin
|
||||
if FTXVfoIndex <> FActiveVfo then
|
||||
begin
|
||||
@@ -881,7 +887,7 @@ begin
|
||||
C.Brush.Color := FTheme.SpecVfoCursor; C.Brush.Style := bsSolid; C.Pen.Width := 1;
|
||||
C.Polygon([Point(VfoX-5,0), Point(VfoX+5,0), Point(VfoX,8)]);
|
||||
// Split TX: рисуем края + cursor для TX-VFO красным, чтобы было видно где идёт передача
|
||||
if FTXMode and (FTXVfoIndex <> FActiveVfo) then
|
||||
if FTXOverlay and (FTXVfoIndex <> FActiveVfo) then
|
||||
begin
|
||||
C.Pen.Color := TColor($002030E0); C.Pen.Width := 1; C.Pen.Style := psSolid;
|
||||
C.MoveTo(TXX1, 0); C.LineTo(TXX1, H);
|
||||
|
||||
Reference in New Issue
Block a user