mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 19:45:09 +00:00
feat: web RF-AGC + QO-100 RX MUTE controls (Pluto)
Прокинул в web-интерфейс управление, которого там не хватало (раньше только отображение): - RF-AGC (Pluto hw-gain): дропдаун режима FAST/SLOW/HYB/MAN + слайдер GAIN 0–73 дБ (активен только в MAN, драг переводит в manual). Виден по BackendCaps.HasHWGain (= Pluto подключён). Команды set_rx_gain_mode / set_rx_gain → SetRxGainMode / SetRxGain. - RX MUTE (QO-100 self-monitor): toggle-кнопка рядом с BCN, видна по InQO100, подсветка по состоянию. Команда set_rx_mute → SetRxMuteOnTx. Гейтинг зеркалит десктоп. Работает в GUI-web-сервере и headless-демоне. Проверено на железе пользователем. WebServer: команды + state-поля (rf_agc_visible/rx_gain_mode/rx_gain_db, rx_mute_visible/rx_mute_on) + SetRxGainStatus/SetRxMuteStatus. WebAdapter: колбэки OnRxGain*/OnRxMute (Invoke на поток контроллера) + публикация в PushState. MainForm + ewsdrd.lpr: привязка колбэков. WebPageHtml: виджеты, JS-обработчики, updRfAgc/updRxMute, PEND_MAP. Также актуализирован doc/PLUTO_INTEGRATION_PLAN.md: TX-тракт и режим QO-100 помечены проверенными на железе; раскрыт TODO «XO ppm-калибровка» (ручной TxLOOffset как текущий обходной путь, xo_correction/GPSDO как постоянное решение). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -68,6 +68,9 @@ type
|
||||
procedure SyncFMStep;
|
||||
procedure SyncBeacon;
|
||||
procedure SyncBeaconSeed;
|
||||
procedure SyncRxGainMode;
|
||||
procedure SyncRxGain;
|
||||
procedure SyncRxMute;
|
||||
function BeaconStatusText: string; // компактный статус (как десктоп поле 7)
|
||||
public
|
||||
constructor Create(AController: TRadioController; AServer: TWebServer;
|
||||
@@ -103,6 +106,9 @@ type
|
||||
// QO-100 beacon: вкл/выкл лок и наведение по клику в спектре (frac 0..1).
|
||||
procedure OnBeacon(On_: Boolean);
|
||||
procedure OnBeaconSeed(Frac: Double);
|
||||
procedure OnRxGainMode(Mode: Integer);
|
||||
procedure OnRxGain(Db: Integer);
|
||||
procedure OnRxMute(On_: Boolean);
|
||||
procedure OnClientActiveChanged(Active: Boolean);
|
||||
// TX-mic от web-клиента → WDSP. Вызывается из WS-потока; без маршалинга —
|
||||
// подача в движок thread-safe (как OnMicPacket/OnDDCIQ контроллера).
|
||||
@@ -373,6 +379,33 @@ begin
|
||||
FController.BeaconSeedAtHz(Hz);
|
||||
end;
|
||||
|
||||
procedure TWebAdapter.OnRxGainMode(Mode: Integer);
|
||||
begin FSyncInt := Mode; FController.Invoke(@SyncRxGainMode); end;
|
||||
|
||||
procedure TWebAdapter.SyncRxGainMode;
|
||||
begin
|
||||
// Pluto hw-AGC: 0=manual,1=fast,2=slow,3=hybrid (рендер через rfRxGain).
|
||||
FController.SetRxGainMode(FSyncInt);
|
||||
end;
|
||||
|
||||
procedure TWebAdapter.OnRxGain(Db: Integer);
|
||||
begin FSyncInt := Db; FController.Invoke(@SyncRxGain); end;
|
||||
|
||||
procedure TWebAdapter.SyncRxGain;
|
||||
begin
|
||||
// Ручной hw-gain (0..73 дБ); SetRxGain переводит режим в manual.
|
||||
FController.SetRxGain(FSyncInt);
|
||||
end;
|
||||
|
||||
procedure TWebAdapter.OnRxMute(On_: Boolean);
|
||||
begin FSyncBool := On_; FController.Invoke(@SyncRxMute); end;
|
||||
|
||||
procedure TWebAdapter.SyncRxMute;
|
||||
begin
|
||||
// QO-100 self-monitor: RX-аудио на TX (toggle, рендер через rfRxMuteOnTx).
|
||||
FController.SetRxMuteOnTx(FSyncBool);
|
||||
end;
|
||||
|
||||
procedure TWebAdapter.OnClientActiveChanged(Active: Boolean);
|
||||
// Из потока веб-сервера при connect/disconnect клиента. Простая запись флага —
|
||||
// ядро (SetMOX, в т.ч. HWPTT-путь) выбирает по нему mic-source. Без маршалинга.
|
||||
@@ -512,6 +545,14 @@ begin
|
||||
FController.BeaconRefHz,
|
||||
FController.BeaconTrackedFreqHz);
|
||||
|
||||
// Pluto RF-AGC (виден при HasHWGain = Pluto подключён) + QO-100 RX MUTE (InQO100).
|
||||
FServer.SetRxGainStatus(
|
||||
FController.BackendCaps.HasHWGain,
|
||||
FController.FRxGainMode, FController.FRxGainDb);
|
||||
FServer.SetRxMuteStatus(
|
||||
FController.InQO100,
|
||||
FController.FRxMuteOnTx);
|
||||
|
||||
FServer.PushSpectrum(
|
||||
FController.FSpectrumBuf, 1024,
|
||||
FController.FWaterfallBuf,
|
||||
|
||||
Reference in New Issue
Block a user