The deck console, screen by screen
Five tabs. Everything runs on the phone — the physics, the solver, the FFT and the correlation — so the app is not a viewer for a device somewhere else. It is the model, with a screen attached.
No server, no Bluetooth pairing, no network call. Open it and the model is already running — which is what you need on a deck with no connectivity.
Console
The screen you open on. Everything an operator needs in the first fifteen seconds.
Temperature, salinity and turbidity, showing raw sensor value and mapped physical unit.
Sound speed, absorption at the current frequency, predicted maximum range.
One plain-English paragraph explaining the current choice. The most valuable thing on the screen.
Clear reef · Coastal · Muddy estuary · Deep. One tap sets everything.
Waveform
The pulse itself, and the ability to argue with it.
Computed on-phone by an FFT of the parameter set. Works with no hardware attached.
Centre, bandwidth, duration, amplitude. The plot redraws on the UI thread as you drag.
Fixed-frequency CW against a chirp, range resolution under each. The core argument as one screen.
Drag bandwidth and duration, watch c/2B respond. Pure maths, and it settles arguments quickly.
Echo
What came back, and whether it matched the prediction.
Raw received trace with the transmit blanking region shaded.
Correlation plot with the peak marked.
The closed loop made visible: predicted 14 dB → measured 9 dB → retuning.
Power
What it costs to run, and an honest label on every figure.
Broken down into idle, compute and transmit.
Pings remaining and mission hours at the configured battery capacity.
Lookup-table synthesis against a live sinf() per sample, side by side.
Radio off, payload autonomous, and the draw visibly dropping.
Log
Every ping, kept, with the conditions it was fired in.
Timestamp, mode, frequency range, range result, energy.
Full parameter set, environment at fire time, echo trace, and the explanation text.
Written to the device and handed to the share sheet.