mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 19:45:09 +00:00
feat: Pluto TX path — attenuation-based power, full-duplex IQ stream
TX path for Pluto/AD936x (RX was already working): - PlutoBackend: continuous full-duplex TX stream (cf-ad9361-dds-core-lpc) with FIFO + push thread; SendDUCIQ upsamples WDSP 192k -> device rate (integer, linear interp), 24->16 bit, Q inverted; zeros on underrun. - Power via output attenuator (ADI-recommended): SetTxAtten writes hardwaregain on voltage0(out). Controller maps drive% -> dB (PlutoTxAttForDrive/ApplyPlutoTxAtten); -89.75 dB on RX (~off), ceiling PlutoTxMaxAttDb on 100% drive. - Configurable max-att (default -10 dB, ADI-linear) for external amp: persisted in global settings, UI spin on PA page, routed through controller SetPlutoTxMaxAtt (UI stays decoupled from logic). - RadioBackend: virtual SetTxAtten (no-op for HPSDR). - Update doc/PLUTO_INTEGRATION_PLAN.md: phases 3/4/5 + risks. Builds clean (headless + qt6 GUI). Not yet verified on hardware. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -144,6 +144,11 @@ type
|
||||
// RX-усиление (Pluto/AD936x). ModeIdx: 0=manual, 1=fast_attack, 2=slow_attack,
|
||||
// 3=hybrid. GainDb применяется только в manual. HPSDR — no-op.
|
||||
procedure SetRxGain(ModeIdx: Integer; GainDb: Integer); virtual;
|
||||
// TX-аттенюация выходного тракта (Pluto/AD936x): hardwaregain на voltage0
|
||||
// (output), дБ в диапазоне ~ -89.75..0 (0 = макс. мощность). Контроллер ставит
|
||||
// максимум на приёме (≈выкл) и значение от drive на передаче. HPSDR — no-op
|
||||
// (мощность там через DriveLevel/DUC). Db < 0.
|
||||
procedure SetTxAtten(Db: Double); virtual;
|
||||
procedure SetAlexConfig(const A: TAlexSettings); virtual;
|
||||
procedure SetXvtrMode(AEnable, ADisablePA: Boolean; ARxAnt: Byte); virtual;
|
||||
procedure SendDDCAudio(const LeftRight: array of SmallInt); virtual;
|
||||
@@ -250,4 +255,8 @@ begin
|
||||
Result := False;
|
||||
end;
|
||||
|
||||
procedure TRadioBackend.SetTxAtten(Db: Double);
|
||||
begin
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
Reference in New Issue
Block a user