mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
feat(slices): этап 3.1 — per-DDC бэкенд HPSDR (пан-DDC) + фикс Saturn в StartRunning
- TBackendCaps: MaxPans/IndependentPanFreq (HPSDR 4/True, Pluto 1/False); SetPanDDC/SetPanDDCFreq — виртуальные no-op в TRadioBackend - HPSDRNetwork: ConfigureDDCs → кэш главного DDC + RebuildDDCSpecific (главный + активные пан-DDC, каждый со своим rate/ADC); SendFullHP пишет частотные слова всех активных пан-DDC; хелпер DDCBaseIndex; сброс пан-состояния в Connect - RadioController: MAX_PANS=4, PAN_DDC_RATES 192/384/768; AddPanDDC/ RemovePanDDC/SetPanDDCFreq/PanDDC* (аллокатор hw-индексов от FActiveDDC+1, обратный маппинг FDDCPanMap); OnDDCIQ роутит пан-DDC → PushPanIQ; паны гасятся в StopRunning, пул сбрасывается в StartRunning - WDSPEngine: PushPanIQ — заглушка-дроп (аккумулятор/анализатор — этап 3.2) - фикс: StartRunning не включал Saturn (BoardType 10) в список плат с DDCBase=2 — на Saturn гейт FActiveDDC ждал бы IQ с DDC0 - doc/SLICES_PLAN.md: статус 3.1 + B1 проверена на экране Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+29
-2
@@ -128,8 +128,10 @@ Pluto+ (AD9363 2r2t, libiio):
|
||||
|
||||
### 3.0 — TPanafallPanel: выделить панадаптер из MainForm
|
||||
|
||||
**Статус 2026-07-10: фазы A и B1 СДЕЛАНЫ (коммиты c125e59, cc9919c; фаза A
|
||||
проверена пользователем на экране).** Создан `PanafallPanel.pas`:
|
||||
**Статус: фазы A и B1 СДЕЛАНЫ (коммиты c125e59, cc9919c) и ПРОВЕРЕНЫ
|
||||
пользователем на экране (A — 2026-07-10, B1 — 2026-07-11: создание/закрытие
|
||||
флагов, видимость флага A, мышь/колесо/drag, тик S-метров — работает).**
|
||||
Создан `PanafallPanel.pas`:
|
||||
- Фаза A: панель владеет view (CPU/GL), контролами (спектр/линейка/сплиттер/
|
||||
водопад/пан-зум/кнопки зума), полной геометрией стека (`Layout`), механикой
|
||||
сплиттера и мышью пан/зум-полосы. MainForm держит алиасы (`FSpecView`,
|
||||
@@ -218,6 +220,31 @@ static/глобального. (CPU-LUT палитры общий — это о
|
||||
Ретюн пана N>0 = запись `FDDCFreq[ddc]` + `SendFullHP` (без реконфига DDC);
|
||||
смена rate/ADC = `ConfigureDDCs` (как сейчас при смене sample rate).
|
||||
|
||||
**СТАТУС 3.1 (2026-07-11): РЕАЛИЗОВАНО, собирается (ewsdr qt6 + ewsdrd),
|
||||
на эфире не проверено (проверяемо только с 3.2/3.3 — панов ещё никто не
|
||||
создаёт).** Отличие от текста плана: per-DDC состояние (freq/rate/ADC/enable)
|
||||
живёт в `THPSDRNetwork` (`FPanDDC*`, пишет `SetPanDDC`/`SetPanDDCFreq` из
|
||||
`TRadioBackend`), а контроллер держит только per-pan маппинг — эквивалентно
|
||||
`FDDCFreq[]` из плана, но HP-кадр собирается из одного места. Сделано:
|
||||
|
||||
- `TBackendCaps.MaxPans`/`IndependentPanFreq` (HPSDR 4/True, Pluto 1/False);
|
||||
`SetPanDDC`/`SetPanDDCFreq` — виртуальные no-op в базе, override в HPSDR.
|
||||
- `HPSDRNetwork`: `ConfigureDDCs` → кэш главного DDC + `RebuildDDCSpecific`
|
||||
(главный + активные пан-DDC, каждый со своим rate/ADC); `SendFullHP` пишет
|
||||
частотные слова всех активных пан-DDC (`Buf[9+ddc*4]`); хелпер
|
||||
`DDCBaseIndex` (дедуп трёх списков плат); сброс пан-состояния в `Connect`.
|
||||
- `RadioController`: `MAX_PANS=4`, `PAN_DDC_RATES=(192,384,768)`;
|
||||
`AddPanDDC/RemovePanDDC/SetPanDDCFreq/PanDDC{Active,Freq,RateKHz}`
|
||||
(аллокатор hw-индексов от `FActiveDDC+1`, обратный маппинг `FDDCPanMap`);
|
||||
`OnDDCIQ` роутит: активный DDC → главный тракт, пан-DDC →
|
||||
`WDSPEngine.PushPanIQ` (пока заглушка-дроп, тело — 3.2); паны гасятся в
|
||||
`StopRunning`, пул сбрасывается в `StartRunning`.
|
||||
- ⚠ Попутный фикс: `StartRunning` не включал Saturn (BoardType 10) в список
|
||||
плат с DDCBase=2 → на Saturn гейт `FActiveDDC` ждал DDC0. Исправлено
|
||||
(`[3,4,5,10]`, как в `DDCBaseIndex`).
|
||||
- Частоты панов — сырые Гц железа: XVTR-трансляция на паны НЕ распространяется
|
||||
(XVTR — свойство главного тракта; решить при 3.3/3.4, если понадобится).
|
||||
|
||||
### 3.2 — WDSPEngine: анализатор и IQ-тракт на панадаптер
|
||||
|
||||
Сейчас: анализаторы `RX_DISP_ID=0` / `TX_DISP_ID=1` (`WDSPEngine.pas:133`),
|
||||
|
||||
Reference in New Issue
Block a user