2. Business Direction (BUS 411)

2.1 Vision

Make the Yaesu FT-710 usable from any phone browser with zero app installation: open a URL, see the spectrum, hear the audio, control the radio, and safely transmit — all through a single Python process.

2.2 Mission

Deliver a pragmatic, browser-native remote control surface for FT-710 operation that favors direct serial CAT integration, mobile ergonomics, low latency audio, and field maintainability over heavyweight framework or native-app complexity.

2.3 Business Goals

ID Goal Description
G1 Mobile RX confidence Operator can reliably listen to FT-710 and see spectrum from phone browser
G2 Safe remote control Frequency, mode, PTT, tune, gain, and DSP controls behave predictably
G3 Bidirectional audio RX audio streams to browser; TX audio from browser reaches radio
G4 Minimal deployment Single Python process serves UI, WebSockets, audio, scope, and radio bridge
G5 Design continuity SDD records implementation facts, decisions, risks, and future work
G6 Visual signal awareness Real-time waterfall + S-meter + multi-meter provide full operating context

2.4 Objectives

ID Objective Target Current Status
O1 Full CAT control All essential radio commands via WebSocket Implemented
O2 RX audio streaming Browser receives continuous tagged dual-codec audio (Opus default, PCM fallback) Implemented
O3 TX audio uplink Browser microphone → radio transmitter Implemented
O4 Real-time spectrum Waterfall from FT4222 SPI or S-meter fallback Implemented
O5 PTT release safety Multiple release safeguards Implemented
O6 Memory channels Save/recall via Web UI + server persistence Implemented
O7 Multi-meter Real-time PWR/ALC/SWR/Id/Vd displays Implemented
O8 Mobile-first UX Optimized for touch, safe areas, one-screen operation Implemented

2.5 Strategy

ID Strategy Description
S1 Mobile-first UI Touch-optimized controls, safe-area support, PWA manifest
S2 Direct CAT protocol Use serial CAT directly; no Hamlib/rigctld dependency
S3 Browser-native audio RX playback via Web Audio/AudioWorklet; TX via getUserMedia
S4 Small service surface FastAPI owns static files, WebSockets, CAT, audio in one process
S5 Dual-mode spectrum FT4222 SPI when available, S-meter fallback always works
S6 Document actual state SDD distinguishes implemented from planned features

2.6 Tactics

ID Tactic Implementation
T1 Touch-and-hold PTT mousedown/touchstart → TX; mouseup/touchend → RX
T2 Fire-and-forget TX0 + poll verify TX0; on release; 500ms TX-status poll + browser watchdog catch stuck keyup
T3 AudioWorklet RX Low-latency playback with jitter buffer (prebuffer 220ms, recovery 90ms)
T4 Opus audio compression ~64kbps Opus vs ~768kbps PCM — 12× bandwidth reduction
T5 PyAudio FT-710 detection Auto-detect FT-710 USB audio device by name
T6 scope_pipe subprocess Isolate FT4222 SPI I/O from asyncio event loop