3. Project Definition (ENG 343)

3.1 Project Attributes

Attribute Value
Project Name MRRC Modern / mrrc_modern
Project Type Web remote control for supported HF/50MHz transceivers
Primary Users HAM operators using phone or desktop browsers
Primary Radios Yaesu FT-710; Icom IC-7300 / IC-7300MK2 (selectable at runtime)
Backend Selection MRRC_RADIO_MODEL env var: ft710 (default), ic7300, ic7300mk2
Server Platform macOS/Linux/Windows with Python 3.12+
Client Platform Modern browser (Safari 15+, Chrome, Firefox)
Runtime Framework FastAPI + Uvicorn
Frontend Stack HTML/CSS/vanilla JavaScript/Web Audio API/Canvas
Radio Interface Backend-specific: Yaesu ASCII CAT (USB Enhanced COM Port, 38400 baud) or Icom CI-V (USB serial, 115200 8N1, default addr 0x94)
Scope Interface FT-710: FTDI FT4222 SPI via standalone Python subprocess; IC-7300: CI-V 0x27 spectrum frames on the CI-V serial port
Audio Interface PyAudio sound card capture/playback + libopus codec (per-backend sample rate)

3.2 In Scope

3.3 Out of Scope

3.4 Success Criteria

ID Criterion Verification
SC1 Radio serial connection establishes Server log shows backend-specific connect message (e.g., “Connected to FT-710 (ID=…)” or IC-7300 CI-V ID)
SC2 All radio controls work via Web UI Frequency, mode, filter, PTT, gains, etc. respond correctly for the selected backend
SC3 RX audio arrives at browser /WSaudioRX receives tagged frames; audio plays through speakers
SC4 TX audio reaches radio PTT + mic → audible RF output on monitoring receiver
SC5 Spectrum waterfall renders Canvas shows 120-row history with frequency scale
SC6 Real scope works when available FT-710: real 850-point FFT data from FT4222 at ~21fps; IC-7300: CI-V 0x27 spectrum demuxed at ~30fps
SC7 S-meter fallback works without real scope Synthetic Gaussian spectrum from S-meter readings
SC8 PTT cannot stick Touch release always returns radio to RX
SC9 Memory channels persist across restarts Save channel, restart server, channel still present

3.5 Major Milestones

Milestone Date Deliverable
M1 2026-06 CAT serial protocol + basic WebSocket control
M2 2026-06 Spectrum scope (FT4222 + S-meter fallback)
M3 2026-06 Multi-meter + S-meter visualization
M4 2026-06 PTT safety architecture (triple verify + dead-man)
M5 2026-06 Memory channel API
M6 2026-07 Audio pipeline: PyAudio capture/playback + Opus codec + /WSaudioRX + /WSaudioTX
M7 2026-07 AudioWorklet RX playback + TX mic capture in browser
M8 2026-07 SDD documentation baseline
M9 2026-08 IC-7300 / IC-7300MK2 pluggable backend (CI-V, 0x27 spectrum, 48kHz native audio)