A concise guide to running Pitgun under race conditions: UDP-first ingestion, manifest-driven processors, deterministic sinks, and an emulator that lets you rehearse every lap before going live.
Optimized for deterministic, frame-based telemetry: small binary frames, processor traits, and a manifest that stays under version control.
Blueprint for the Pitgun manual. Each section is scoped to the code that exists today—no ghost features, just the telemetry engine as shipped.
What Pitgun is, why it exists, and the constraints it is built to survive.
Core crates, how sources, processors, and sinks cooperate, and where the emulator fits.
Binary frame structure, channel naming, timestamps, and expectations for UDP links.
Sources (UDP), processors (channel_filter, scale, formula, stats), and sinks (console, CSV) as traits.
YAML schema used by pitgun-cli to assemble pipelines, with required fields and safe defaults.
Reference for channel_filter, scale, formula (AST JSON), and stats including required keys.
Console JSON output and optional per-channel CSV recording via pitgun-cli.
Subscribe workflow, flags for binding, multicast, stats, JSON output, and manifest selection.
Replay CSV telemetry over UDP with pacing, multi-channel merges, and multicast options.
Performance posture, batching behavior, and how stats helps detect gaps or regressions.
Pitgun is a Rust-based telemetry processing engine designed for the constraints you find in motorsport and high-frequency test benches. It consumes binary UDP frames, applies a manifest-driven chain of processors, and emits enriched metrics with deterministic behavior. The codebase favors small, explicit building blocks over magic: traits for sources, processors, and sinks; minimal wire formats; and a CLI that mirrors the pipeline used in production.
UDP only (unicast or multicast join). Batching is driven by size and nanosecond thresholds to keep latency bounded.
channel_filter, scale, formula (supports +, -, *, /, negation, trig/exp/log funcs), stats (rates, per-channel counts, gap detection).
Console JSON (manifest-driven) and per-channel CSV writer (CLI flag). Sinks are composable via the CLI composite sink.
Rehearse with nEngine and throttle datasets before deploying to a rig.