| @@ -96,6 +96,9 @@ Neue Konfig-Teile einführen: | |||
| - `resources.*` | |||
| - optionale `profiles.*` | |||
| Zusatz: | |||
| - `refinement.detail_fft_size` für einen eigenständigen Detailpfad (Refinement-FFT) neben der Surveillance-FFT | |||
| Wichtig: | |||
| - Abwärtskompatibilität zur bisherigen Config möglichst erhalten | |||
| - bisherige Felder weiterhin nutzbar | |||
| @@ -110,6 +113,7 @@ Wichtig: | |||
| - zunächst mit CPU-/bestehendem GPU-Extraction-Pfad implementieren | |||
| - Detector bleibt vorerst Kern der Candidate-Erzeugung | |||
| - Refiner sitzt danach explizit als eigener Schritt in der Pipeline | |||
| - Refinement-Workitems mit expliziten Ausführungsparametern (FFT/Span/Stage) | |||
| ### E. Pipeline-Orchestrierung modularisieren | |||
| - `runDSP()` entflechten | |||
| @@ -122,6 +126,7 @@ Wichtig: | |||
| - track | |||
| - present | |||
| - record | |||
| - Gemeinsame Arbitration-/Budget-Sicht für refinement/record/decode vorbereiten | |||
| ### F. Dokumentierte Betriebsprofile | |||
| - initiale Profile definieren, z. B.: | |||
| @@ -70,15 +70,16 @@ Edit `config.yaml` (autosave goes to `config.autosave.yaml`). | |||
| - `surveillance.display_fps` — preferred presentation cadence for clients/UI | |||
| - `refinement.enabled` — enables explicit candidate refinement stage | |||
| - `refinement.max_concurrent` — refinement budget hint | |||
| - `refinement.detail_fft_size` — FFT size for refinement/detail path (defaults to surveillance analysis FFT) | |||
| - `refinement.min_candidate_snr_db` — floor for future scheduling decisions | |||
| - `refinement.min_span_hz` / `refinement.max_span_hz` — clamp refinement window span (0 = no clamp) | |||
| - `refinement.auto_span` — use mod-type heuristics when candidate bandwidth is missing/odd | |||
| - `resources.prefer_gpu` — GPU preference hint | |||
| **Operating profiles (wideband)** | |||
| - `wideband-balanced`: multi-resolution, 4096 FFT, refinement span 4000-200000 Hz | |||
| - `wideband-aggressive`: multi-resolution, 8192 FFT, refinement span 6000-250000 Hz | |||
| - `archive`: record-forward bias, higher record/decode budgets | |||
| - `wideband-balanced`: multi-resolution, 4096 surveillance/detail FFT, refinement span 4000-200000 Hz | |||
| - `wideband-aggressive`: multi-resolution, 8192 surveillance/detail FFT, refinement span 6000-250000 Hz | |||
| - `archive`: record-forward bias, higher record/decode budgets, 4096 detail FFT | |||
| - `digital-hunting`: digital-first priorities and decode bias | |||
| - `resources.max_refinement_jobs` — processing budget hint | |||
| - `resources.max_recording_streams` — recording/streaming budget hint | |||
| @@ -158,7 +159,7 @@ go build -tags sdrplay ./cmd/sdrd | |||
| - `GET /api/gpu` | |||
| - `GET /api/pipeline/policy` | |||
| - `GET /api/pipeline/recommendations` | |||
| - `GET /api/refinement` → latest refinement plan/windows snapshot (includes `window_stats`, `queue_stats`, `decision_summary`, `decision_items`, levels, request/context/budgets/work_items) | |||
| - `GET /api/refinement` → latest refinement plan/windows snapshot (includes `window_stats`, `queue_stats`, `decision_summary`, `decision_items`, `arbitration`, levels, request/context/budgets/work_items) | |||
| ### Signals / Events | |||
| - `GET /api/signals` → current live signals | |||
| @@ -30,6 +30,7 @@ surveillance: | |||
| refinement: | |||
| enabled: true | |||
| max_concurrent: 8 | |||
| detail_fft_size: 2048 | |||
| min_candidate_snr_db: 0 | |||
| min_span_hz: 0 | |||
| max_span_hz: 0 | |||
| @@ -37,13 +38,34 @@ refinement: | |||
| profiles: | |||
| - name: legacy | |||
| description: Current single-band pipeline behavior | |||
| surveillance: | |||
| analysis_fft_size: 2048 | |||
| strategy: single-resolution | |||
| resources: | |||
| max_refinement_jobs: 8 | |||
| max_recording_streams: 16 | |||
| max_decode_jobs: 16 | |||
| decision_hold_ms: 2000 | |||
| refinement: | |||
| max_concurrent: 8 | |||
| detail_fft_size: 2048 | |||
| pipeline: | |||
| mode: legacy | |||
| goals: | |||
| intent: general-monitoring | |||
| - name: wideband-balanced | |||
| description: Prepared baseline for scalable wideband surveillance | |||
| surveillance: | |||
| analysis_fft_size: 4096 | |||
| strategy: multi-resolution | |||
| resources: | |||
| max_refinement_jobs: 16 | |||
| max_recording_streams: 16 | |||
| max_decode_jobs: 12 | |||
| decision_hold_ms: 2000 | |||
| refinement: | |||
| max_concurrent: 16 | |||
| detail_fft_size: 4096 | |||
| min_span_hz: 4000 | |||
| max_span_hz: 200000 | |||
| pipeline: | |||
| @@ -52,7 +74,17 @@ profiles: | |||
| intent: wideband-surveillance | |||
| - name: wideband-aggressive | |||
| description: Higher surveillance/refinement budgets for future broad-span monitoring | |||
| surveillance: | |||
| analysis_fft_size: 8192 | |||
| strategy: multi-resolution | |||
| resources: | |||
| max_refinement_jobs: 32 | |||
| max_recording_streams: 24 | |||
| max_decode_jobs: 16 | |||
| decision_hold_ms: 2000 | |||
| refinement: | |||
| max_concurrent: 32 | |||
| detail_fft_size: 8192 | |||
| min_span_hz: 6000 | |||
| max_span_hz: 250000 | |||
| pipeline: | |||
| @@ -61,6 +93,19 @@ profiles: | |||
| intent: high-density-wideband-surveillance | |||
| - name: archive | |||
| description: Record-first monitoring profile | |||
| surveillance: | |||
| analysis_fft_size: 4096 | |||
| strategy: single-resolution | |||
| resources: | |||
| max_refinement_jobs: 12 | |||
| max_recording_streams: 24 | |||
| max_decode_jobs: 12 | |||
| decision_hold_ms: 2500 | |||
| refinement: | |||
| max_concurrent: 12 | |||
| detail_fft_size: 4096 | |||
| min_span_hz: 4000 | |||
| max_span_hz: 200000 | |||
| pipeline: | |||
| mode: archive | |||
| goals: | |||