ardupilot-binlog
Parser for ArduPilot DataFlash BIN log files.
Reads .bin / .BIN files produced by ArduPilot's onboard DataFlash logger. The format is self-describing — message schemas are discovered from FMT messages within each file, so this crate works with any ArduPilot version without hardcoded message definitions.
Usage
[]
= "0.1"
Parse all entries
use File;
let file = open?;
let mut reader = file.entries?;
for result in &mut reader
Collect into a Vec
use File;
let file = open?;
let entries: = file.entries?.?;
let gps_entries: = entries.iter
.filter
.collect;
for entry in gps_entries
Get time range
use File;
let file = open?;
if let Some = file.time_range?
Read from any Read source
use Reader;
use Cursor;
let data: = /* BIN data from network, embedded resource, etc. */
# vec!;
let mut reader = new;
for result in &mut reader
# Ok::
Inspect discovered formats
use File;
let file = open?;
let mut reader = file.entries?;
for result in reader.by_ref
for in reader.formats
Design
- Synchronous API — file parsing is CPU-bound sequential work; consumers call from
spawn_blocking()if needed - Minimal dependencies — only
thiserror - Error recovery — on corrupted data, scans forward for the next valid message header
- No hardcoded message types — all schemas discovered from FMT messages at runtime
License
MIT OR Apache-2.0