mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
feat: QO-100 self-monitor (RX MUTE) + gate beacon/RX-mute buttons to QO-100
Add a per-operator toggle to hear your own downlink off the satellite while transmitting (full-duplex self-monitor), and restrict QO-100-only controls to the QO-100 mode. - WDSPEngine: new MonitorRXDuringTX flag; audio gate becomes `not FTXActive or (FKeepRXDuringTX and FMonitorRXDuringTX)` so RX audio can pass to speakers during TX in full-duplex. - Controller: FRxMuteOnTx (default True = mute RX on TX), SetRxMuteOnTx/ ApplyRxMuteToEngine, rfRxMuteOnTx notify; new InQO100 predicate (Pluto + full-duplex XVTR slot) as the single gate for QO-100 UI. - Settings: global RxMuteOnTx (rx_mute_on_tx, default True), persisted. - MainForm: new RX MUTE button in TX panel next to DUP, visible only in QO-100; BEACON button visibility tightened from "any transverter" to InQO100 so it no longer shows in plain VHF/UHF modes. - doc: plan updated (RF-AGC done, two temps, TX/RX locked split, self-monitor, phase 6 done; remaining TODOs incl. web wiring). Web intentionally left unchanged for now. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -258,12 +258,16 @@ end;
|
||||
|
||||
### 4.7 Усиление / телеметрия
|
||||
|
||||
- RX gain: контрол manual gain (0–73 дБ) / режим hw-AGC при `Caps.HasHWGain`
|
||||
(можно расширить UI step-atten). WDSP AGC поверх.
|
||||
- ✅ RX gain: блок `RF AGC` (десктоп) — кнопки FAST/SLOW/HYB/MAN (4 режима AD9361,
|
||||
подтверждены на железе `gain_control_mode_available`) + слайдер manual 0–73 дБ при
|
||||
`Caps.HasHWGain`; персист per-device. WDSP AGC поверх. TODO: проброс RF-AGC в web
|
||||
(сейчас в web только отображение, без управления).
|
||||
- Телеметрия: S-meter (WDSP) — для обоих. fwd/SWR/supply/PLL/overload — скрыть при
|
||||
`not Caps.HasPA`. ✅ RSSI/температура Pluto: `ReadTelemetry` (backend) →
|
||||
`ServicePlutoTelemetry` (контроллер, опрос ~2 Гц с фильтром выбросов) → поле 3
|
||||
статус-бара (Temp/RSSI вместо Supply, т.к. у Pluto нет PA).
|
||||
статус-бара (Temp/RSSI вместо Supply, т.к. у Pluto нет PA). ✅ **Две температуры**:
|
||||
трансивер AD9361 (`ad9361-phy temp0`) + Zynq SoC/FPGA (`xadc temp0`,
|
||||
`(raw+offset)*scale/1000`) — формат `Temp 37/53C` в десктопе и web.
|
||||
|
||||
### 4.8 TX-мощность / drive (Pluto)
|
||||
|
||||
@@ -303,7 +307,8 @@ end;
|
||||
|
||||
**Фаза 3 — Управление/калибровка**
|
||||
- ✅ RX gain / hw-AGC, транспорт (USB/IP), persist per-device по synthetic-MAC.
|
||||
- ✅ Имя платы (Pluto/LibreSDR + serial) и телеметрия (температура/RSSI) в статус-бар.
|
||||
- ✅ Имя платы (Pluto/LibreSDR + serial) и телеметрия в статус-бар: RSSI + **две
|
||||
температуры** (трансивер AD9361 + Zynq SoC `xadc`, формат `Temp 37/53C`).
|
||||
- TODO: XO ppm-калибровка, buffer/timeout-контролы.
|
||||
|
||||
**Фаза 4 — TX-тракт Pluto** ✅
|
||||
@@ -329,11 +334,25 @@ end;
|
||||
- ✅ Отдельная страница «QO-100» в SettingsForm (LNB LO / транспондер-offset /
|
||||
границы downlink / RX gain / TX-потолок); зарезервирован последний XVTR-слот
|
||||
(`QO100_SLOT`), не засоряет таблицу трансвертеров openHPSDR.
|
||||
- TODO: проверка на железе.
|
||||
- ✅ **TX↔RX связка с фиксированным офсетом**: TX-VFO в downlink-домене,
|
||||
`XvtrTranslateTX` = `visible − TxLOOffset` (≈8089.5 МГц) — крутишь приём, аплинк
|
||||
едет следом, офсет держится сам (через общий VFO). Split — через VFO-B.
|
||||
- ✅ **Аудио self-monitor** («слышу себя со спутника»): кнопка `RX MUTE` в TX-панели
|
||||
рядом с DUP — видна только Pluto + full-duplex (QO-100). По умолчанию ON (RX-аудио
|
||||
глушится на TX, как раньше); OFF → RX-аудио идёт на колонки и во время TX (свой
|
||||
downlink через транспондер, ~250 мс). Реализация: гейт `WDSPEngine` (`not FTXActive
|
||||
or (FKeepRXDuringTX and FMonitorRXDuringTX)`) + флаг `FRxMuteOnTx` в контроллере,
|
||||
персист в глобале (`rx_mute_on_tx`). Web — не сделано (пока вне области).
|
||||
- TODO: проверка на железе; RIT/XIT-клариффайер (опц., на геостационаре редко нужен);
|
||||
TX-маркер на RX-спектре в DUP (визуальный self-monitor — `FSpecView.TXMode` сейчас
|
||||
в DUP выключен).
|
||||
|
||||
**Фаза 6 — Полировка**
|
||||
- Web/CAT-фронтенды (команды уже агностичны) + гейтинг полей; демон `ewsdrd.lpr`
|
||||
(discovery/connect Pluto headless); кросс-платформенная сборка с/без libiio; доки.
|
||||
**Фаза 6 — Полировка** ✅ (в основном)
|
||||
- ✅ Web/CAT-фронтенды (команды уже агностичны) + гейтинг полей; демон `ewsdrd.lpr`
|
||||
(discovery/connect Pluto headless, beacon-lock @10 Гц); кросс-платформенная сборка
|
||||
с/без libiio.
|
||||
- TODO: проброс в web того, чего там ещё нет — RF-AGC (gain/режимы) и QO-100
|
||||
`RX MUTE` (self-monitor). Доки актуализируются по ходу.
|
||||
|
||||
**Сопутствующие исправления (найдены при тесте Pluto VHF/UHF FM, но баги общие):**
|
||||
- ✅ Восстановление per-band FM-настроек на старте (`Settings.LoadDevice`): bulk-
|
||||
|
||||
Reference in New Issue
Block a user