Skip to content

wboayue/discovery-scope

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

discovery-scope

A 2D graphical telemetry monitor for the discovery-* family of bare-metal flight-controller firmware (ark-discovery, and a planned holybro-discovery).

It connects to the board's USB CDC serial port and renders a primary-flight-display-style instrument panel — an artificial horizon (roll/pitch) with altitude and vertical-speed tapes — above a datalog panel of status/event lines (scrolling strip charts planned).

discovery-scope PFD and datalog (synthetic --demo feed)

discovery-scope is intentionally a scope, not a full ground control station: it's read-only telemetry visualization plus a few simple commands mirroring the firmware's serial controls (reboot-to-DFU, diagnostics toggle). No maps, waypoints, or mission planning.

Status

Working — live binary telemetry drives the PFD (artificial horizon + altitude/vertical-speed tapes) and an event datalog. egui_plot strip charts off the raw sensor frames are the main remaining piece.

Stack

  • egui / eframe — immediate-mode GUI; the panel repaints from the latest telemetry each frame, which fits an instrument naturally. Custom 2D vector drawing (horizon, tapes, ladders) uses egui's Painter/Mesh.
  • egui_plot — scrolling strip charts for the datalog (planned).
  • serialport — USB CDC access on a background thread, decoupled from rendering. A --demo mode generates synthetic attitude so the panel runs without hardware.
  • discovery-telemetry — the shared postcard + COBS wire format the scope decodes (see below).

Install

# install the latest from git (builds the binary into ~/.cargo/bin)
cargo install --git https://github.com/wboayue/discovery-scope

cargo install accepts the usual selectors if you need them: --tag <v>, --branch <name>, --rev <sha>, or --locked to honor the committed Cargo.lock.

Usage

# run against a connected board, auto-detecting the USB-CDC port
discovery-scope

# or name the port explicitly (find it with: ls /dev/cu.usbmodem*)
discovery-scope --port /dev/cu.usbmodemXXXX

# synthetic UI mock, no hardware needed
discovery-scope --demo

With no board attached the scope sits in SEARCHING/DISCONNECTED and auto-reconnects when one appears.

From a clone, swap discovery-scope for cargo run --release -- (e.g. cargo run --release -- --demo).

Telemetry format

The scope decodes the binary wire format from the discovery-telemetry crate (postcard frames + COBS framing over USB CDC) — the single source of truth shared with the firmware. On connect the scope sends b to switch the board into binary mode; the firmware keeps a human-readable text fallback for plain terminals. Attitude is fused on the firmware (fusion-ahrs/fusion-altitude); the scope consumes the ready Fused frame.

Related

  • ark-discovery — the STM32H743 ARK FPV firmware this monitors.

License

MIT — see LICENSE.

About

Rust + egui primary-flight-display telemetry scope for the discovery-* bare-metal flight-controller firmware (binary telemetry over USB CDC serial)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages