7.2 KiB
7.2 KiB
RFCP Project Roadmap — Updated February 4, 2026
Project: RFCP (RF Coverage Planning) for UMTC
Developer: Олег + Claude
Started: January 30, 2025
Current Version: 3.8.0 (GPU Acceleration Complete)
✅ Completed Milestones
Phase 1: Frontend (January 2025)
- ✅ React + TypeScript + Vite + Leaflet
- ✅ Multi-site RF coverage planning
- ✅ Multi-sector sites (Alpha/Beta/Gamma)
- ✅ Geographic-scale canvas heatmap
- ✅ Keyboard shortcuts + delete confirmation
- ✅ NumberInput components with sliders
- ✅ TypeScript strict mode, ESLint clean
- ✅ Production build: 536KB / 163KB gzipped
Phase 2: Backend Architecture (February 1, 2025)
- ✅ Python FastAPI + NumPy + ProcessPoolExecutor
- ✅ 8 propagation models (FreeSpace, Okumura-Hata, COST-231, ITU-R P.1546, etc.)
- ✅ Modular geometry engine (haversine, intersection, reflection, diffraction, LOS)
- ✅ SharedMemoryManager for terrain data (zero-copy, 25 MB)
- ✅ Building filtering (351k → 27k bbox → 15k cap)
- ✅ Overpass API with retry + mirror failover
- ✅ WebSocket progress streaming
Phase 3: Performance (February 2-3, 2025)
- ✅ LOD (Level of Detail) optimization
- ✅ Spatial indexing for buildings (R-tree)
- ✅ Dominant path simplification for distant points
- ✅ OOM fix + memory management
- ✅ CloudRF-style color gradient
- ✅ Results popup + session history
- ✅ Terrain profile viewer
Phase 4: GPU Acceleration (February 3-4, 2025) ⭐
- ✅ CuPy + CUDA backend (RTX 4060)
- ✅ CUDA Toolkit 13.1 + cupy-cuda13x setup
- ✅ Phase 2.5: Vectorized distances + path_loss (0.006s)
- ✅ Phase 2.6: Vectorized terrain LOS + diffraction (0.04s)
- ✅ Phase 2.7: Vectorized antenna pattern loss
- ✅ Vegetation bbox pre-filter (100x+ speedup)
- ✅ Worker process isolation (no CUDA in workers)
- ✅ PyInstaller ONEDIR GPU build (1.2 GB installer)
- ✅ Full preset: 195s → 11.2s (17.4x speedup)
Supporting Work
- ✅ RF Radio Theory wiki article (comprehensive)
- ✅ Propagation model research (CloudRF, SPLAT!, Signal Server)
- ✅ RFCP Method collaboration framework documented
📊 Current Performance
| Preset | Points | Resolution | Time (cached) | Time (cold) |
|---|---|---|---|---|
| Standard | 1,975 | 200m | 2.3s | ~12s |
| Full | 6,640 | 50m | 11.2s | ~20s |
| 50km radius | 4,966 | adaptive | ~410s | ~420s |
Hardware: Windows 11, RTX 4060 Laptop GPU, 6-core CPU
🔜 Next: Phase 5 — Data & Accuracy
5.1 SRTM Terrain Integration
Priority: HIGH
Status: Not started
Current terrain: Single HGT tile download per calculation
Target: Pre-cached SRTM/ASTER DEM tiles with proper interpolation
- SRTM tile manager (auto-download, cache)
- Bilinear interpolation for elevation sampling
- Multi-tile coverage for large radius
- Terrain profile accuracy validation
- Compare with current terrain data quality
5.2 Project Persistence
Priority: MEDIUM
- Save/load projects (JSON or SQLite)
- Site configurations persistence
- Coverage results caching
- Session history persistence across restarts
- Export coverage report (PDF/PNG)
5.3 Accuracy Validation
Priority: MEDIUM
- Compare with known coverage maps
- Field measurements with real equipment
- Calibrate propagation models per environment
- Antenna pattern library (real equipment specs)
🔮 Future Phases
Phase 6: Multi-Station & Dashboard
- Multi-station view (aggregate coverage)
- Station discovery via WireGuard mesh
- Coverage gap analysis
- Interference modeling between stations
- Handover zone visualization
Phase 7: Hardware Integration
- LimeSDR Mini 2.0 testing
- Real RF attach validation
- sysmoISIM-SJA2 SIM integration
- ZTE B8200 base station testing
- INFOZAHYST Plastun SDR (if accessible)
Phase 8: Advanced Features
- 3D visualization mode
- Link budget analysis view
- Frequency planning tool
- Indoor coverage modeling
- Time-series analysis (seasonal vegetation)
- Offline mode (embedded terrain DB)
Phase 9: Distribution
- Auto-updater (electron-updater)
- Live USB distribution for field deployment
- Standalone offline package
- User documentation / help system
🏛️ Architecture Overview
RFCP Application (Electron)
├── Frontend (React + TypeScript + Vite)
│ ├── Leaflet map with custom canvas heatmap
│ ├── Zustand state management
│ └── WebSocket for progress streaming
│
├── Backend (Python FastAPI)
│ ├── Coverage Engine
│ │ ├── Grid generator (adaptive zones)
│ │ ├── GPU pipeline (CuPy/CUDA) — main process
│ │ │ ├── Phase 2.5: distances + path_loss
│ │ │ ├── Phase 2.6: terrain LOS + diffraction
│ │ │ └── Phase 2.7: antenna pattern
│ │ └── CPU workers (ProcessPool) — 3-6 workers
│ │ ├── Building obstruction (spatial index)
│ │ ├── Reflections (ray-building intersection)
│ │ └── Vegetation loss (bbox pre-filter)
│ │
│ ├── Propagation Models (8 models)
│ │ ├── Free-Space Path Loss
│ │ ├── Okumura-Hata (150-1500 MHz)
│ │ ├── COST-231-Hata (1500-2000 MHz)
│ │ ├── ITU-R P.1546
│ │ └── ... 4 more
│ │
│ ├── OSM Services
│ │ ├── Buildings (Overpass API + cache)
│ │ ├── Vegetation (bbox pre-filter)
│ │ ├── Water bodies
│ │ └── Streets
│ │
│ └── Terrain Service
│ ├── HGT tile download + cache
│ ├── Elevation sampling
│ └── Line-of-sight checking
│
└── Desktop (Electron)
├── Backend process management
└── NSIS installer (1.2 GB with CUDA)
📈 Development Timeline
Jan 30, 2025 Phase 1: Frontend complete (10 iterations)
Feb 01, 2025 Phase 2: Backend architecture (48 files, 82 tests)
Feb 02, 2025 Phase 3: LOD + performance optimization
Feb 03, 2025 Phase 3.5-3.6: GPU setup + CUDA build
Feb 04, 2025 Phase 3.7-3.8: GPU vectorization complete ⭐
─────────────────────────────────────────
Full preset: 195s → 11.2s (17.4x speedup)
Standard: 38s → 2.3s (16.5x speedup)
Total development time: ~5 days intensive
Total iterations: 3.8.0 (20+ sub-iterations)
Architecture: Battle-tested, production-ready
🧰 Tech Stack
| Component | Technology | Version |
|---|---|---|
| Frontend | React + TypeScript | 18 |
| Build | Vite | 5.x |
| Map | Leaflet | 1.9 |
| State | Zustand | 4.x |
| Backend | Python FastAPI | 3.12 |
| GPU | CuPy + CUDA | 13.x |
| Parallel | ProcessPoolExecutor | stdlib |
| Terrain | NumPy (HGT tiles) | 1.26 |
| Desktop | Electron | 28.x |
| Installer | NSIS (via electron-builder) | - |
| Build (BE) | PyInstaller | 6.x |
"11.2 seconds. Full preset. 6,640 points. GPU acceleration complete." — February 4, 2026