2. Business Direction (BUS 411)

2.1 Vision

Make SunSDR2 DX usable from a phone browser with the least operational friction: open a secure URL, hear RX audio, see signal context, control essential radio parameters, and safely key/de-key the transmitter.

2.2 Mission

Deliver a pragmatic, browser-native remote radio control surface for HAM operation that favors direct SunSDR integration, mobile ergonomics, low latency, 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 SunSDR2 DX from iPhone/mobile browser
G2 Safe remote control Frequency, mode, PTT, tune, gain, and DSP controls behave predictably
G3 Minimal deployment Single Python process serves UI, WebSockets, TLS, and radio bridge
G4 Design continuity SDD records implementation facts, decisions, risks, and future work
G5 Incremental extensibility Preserve hooks for ATR and digital modes without overstating completion

2.4 Objectives

ID Objective Target Current Status
O1 iOS secure-context operation HTTPS/WSS entry works Implemented by TLS auto-detect
O2 RX audio availability Browser receives continuous tagged dual-codec audio (Opus default, Int16 PCM fallback) Implemented
O3 Control-plane liveness PING/PONG, state query and command response Implemented
O4 PTT release safety Multiple release safeguards Implemented in frontend and backend backup command
O5 Spectrum visibility Compact waterfall stream Implemented
O6 TX voice completion Browser mic to SunSDR TX modulation Implemented (on-air verified)
O7 ATR integration Backend endpoint and device bridge Open
O8 TX power control Per-band drive (0x0017) configurable from UI Implemented (on-air verified)

2.5 Strategy

ID Strategy Description
S1 Mobile-first UI Optimize controls for touch, safe areas, one-screen radio operation
S2 Direct radio protocol Use verified SunSDR2 DX UDP protocol instead of generic CAT where possible
S3 Browser-native audio Keep RX playback in Web Audio; avoid native app dependency
S4 Small service surface FastAPI app owns static files and WebSockets in one process
S5 Document actual state SDD distinguishes implemented features from inherited/planned UI hooks

2.6 Tactics

ID Tactic Implementation
T1 HTTPS by default _find_ssl() selects cert/key, DISABLE_SSL=1 only for local HTTP
T2 WSS auto-selection Frontend uses location.protocol to choose wss:// or ws://
T3 Direct IQ demodulation UDP 50002 IQ packets feed StreamProcessor
T4 Compact waterfall Server quantizes spectrum to uint8 frames before broadcast
T5 PTT release ACK loop Frontend retries setPTT:false and uses backup s: command
T6 Optional WDSP Runtime setters are no-op safe when libwdsp is unavailable