mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 17:27:32 +00:00
feat(puresignal): PureSignal-предыскажение для openHPSDR P2 + кнопки PS/2TON
Протокол (по pihpsdr new_protocol.c): на PTT при PS DDC0<-ADC0 (RX-feedback), DDC1<-ADC2 (TX DAC loopback), 192к/24бит, sync DDC1->DDC0 (byte 1363=0x02, interleaved в потоке DDC0), частоты DDC0/1 = TX в HP-пакете, Alex0 bit18 (мост обратной связи). Caps.HasPureSignal для плат с DDCBase=2 (Angelia/Orion/Orion2/Saturn); попутно NumADCs=2 для Angelia. WDSPEngine: PushPSFeedback (деинтерлив -> pscc(TXA, tx=DDC1, rx=DDC0) из сетевого потока), PS-параметры calcc в кэше с переприменением после пересоздания TXA; SetTXTwoTone (PostGen mode 1, 700/1900, 0.49+0.49, инверсия LSB/CWL/DIGL, мьют mic как TUN). RadioController: state machine команд (порт Thetis PSForm timer1) в PureSignalTick @10Гц + auto-attenuate (AttOnTX по уровню feedback, цель ~152, через DUC Specific); SetPSMox и перестройка feedback-DDC на T/R; маршрутизация DDC0 в pscc из OnDDCIQ; SetTwoTone с гейтами safety. UI: кнопки PS (ЛКМ = поповер настроек, ПКМ = быстрый toggle) и 2TON в блоке TX; поповер TPureSignalPopup (дочерний контрол, Wayland-safe): PS ON/OFF, CAL, RESET, 2TON, лампа/уровень feedback, cals, corr, GetPk/SetPk, MOX/CAL wait, PH#, Auto-atten, Relax ptol, Pin/Map/Stbl, Tint, тона двухтональника. Персист ps_* в tx-секции per-device. Не проверено на железе; Save/Restore коррекции не реализованы. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -56,6 +56,10 @@ type
|
||||
// парами SMA (LibreSDR/AntSDR/Pluto+). Гейтит блок «Antenna» в настройках;
|
||||
// у openHPSDR антеннами рулит Alex, поэтому False. Достоверно после Connect.
|
||||
HasAntSwitch: Boolean;
|
||||
// PureSignal-предыскажение: openHPSDR P2 платы со свободными DDC0/1 под
|
||||
// feedback (Angelia/Orion/Orion2/Saturn). Гейтит кнопки PS/2TON.
|
||||
// Достоверно после Connect.
|
||||
HasPureSignal: Boolean;
|
||||
MinSampleRate: Integer;
|
||||
RatePresets: TBackendRateArray; // пресеты для SampleRateOverlay
|
||||
MinFreqHz: Double;
|
||||
@@ -142,6 +146,14 @@ type
|
||||
// У бэкендов без переключателя — no-op.
|
||||
procedure SetAntPorts(RxPort, TxPort: Byte); virtual;
|
||||
|
||||
// ---- PureSignal (openHPSDR P2, платы с DDC0/1 под feedback) ----
|
||||
// SetPureSignal — фича вооружена (кнопка PS в UI). SetPureSignalTX — фаза
|
||||
// PTT: на True бэкенд включает feedback-DDC0 (+sync DDC1 = TX DAC) на 192к
|
||||
// и ставит их частоты = TX; на False возвращает RX-конфигурацию.
|
||||
// База — no-op (Pluto и др. без PS-тракта).
|
||||
procedure SetPureSignal(Enabled: Boolean); virtual;
|
||||
procedure SetPureSignalTX(Active: Boolean); virtual;
|
||||
|
||||
// ---- Частота / drive / TX-состояние ----
|
||||
procedure SetRunAndFreq(Run: Boolean; DDC0FreqHz, DUCFreqHz: Double;
|
||||
DriveLevel: Byte = 100); virtual; abstract;
|
||||
@@ -306,4 +318,13 @@ procedure TRadioBackend.SetAntPorts(RxPort, TxPort: Byte);
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TRadioBackend.SetPureSignal(Enabled: Boolean);
|
||||
// PureSignal есть только у openHPSDR P2 (THPSDRNetwork переопределяет).
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TRadioBackend.SetPureSignalTX(Active: Boolean);
|
||||
begin
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
Reference in New Issue
Block a user