3. Project Definition (ENG 343)

3.1 Project Attributes

Attribute Value
Project Name SunMRRC
Project Type Mobile remote radio control for SunSDR2 DX
Primary Users HAM operators using phone or desktop browsers
Primary Radio SunSDR2 DX
Server Platform macOS/Linux with Python 3.12+
Client Platform Modern browser, especially iOS Safari and mobile Chrome
Runtime Framework FastAPI + Uvicorn
Frontend Stack HTML/CSS/vanilla JavaScript/Web Audio API
Repository Scope sunmrrc/ plus shared imports from ../web_control/

3.2 In Scope

3.3 Out of Scope for Current Baseline

3.4 Success Criteria

ID Criterion Verification
SC1 HTTPS entry starts when certs exist Server log shows sunmrrc https://[::]:<port>
SC2 iPhone can request microphone permissions Page loaded from https://radio.vlsc.net:8889 secure context
SC3 RX audio arrives at browser /WSaudioRX receives tagged dual-codec frames (Opus/PCM) and UI bitrate updates
SC4 Radio frequency control works setFreq:* returns getFreq:* and radio state changes
SC5 DSP mode changes are local and explicit setMode:* updates demodulator mode and returns getMode:*
SC6 PTT release cannot silently stick indefinitely Release ACK retry, backup s:, watchdog, and backend forced RX path exist
SC7 Waterfall stream remains lightweight /WSspectrum sends 512-byte quantized rows
SC8 TX voice produces RF output PTT + mic yields measurable power (Tune ~12 W, voice 30–40 W PEP on ATR-1000)
SC9 TX power is configurable per band Band Power panel / /api/band_power sets drive, applied on QSY and PTT

3.5 Major Milestones

Milestone Date Deliverable
M1 2026-06 Establish SunMRRC mobile server and static UI baseline
M2 2026-06 Stabilize RX chain with shared SunSDR DSP import
M3 2026-06 Add HTTPS/WSS startup to satisfy iOS secure-context requirements
M4 2026-06 Consolidate WDSP controls into main mobile DSP panel
M5 2026-06 Complete TX microphone modulation path (Hilbert SSB β†’ IQ β†’ 0xFFFD)
M6 2026-06 Device DRIVE (0x0017) TX power control + per-band power API/UI
M7 2026-06 Implement backend memory-channel API (/api/mem_channels)
M8 2026-06 Remove dead CW/FT8 menu links
M9 Planned Decide whether ATR-1000 backend is in-scope for SunMRRC