flowrs-engine/crates/flowrs-connect/dialects/mavlink/README.md
flowRS fd958c0547 flowRS engine, cut from flowRS 3451b065
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-02 19:04:39 -05:00

30 lines
1.9 KiB
Markdown

# MAVLink dialects the bridge reads
The MAVLink bridge (`src/mavlink`, feature `mavlink`) decodes frames with the `mavlink`
crate 0.21.0 and reads what each field *means* (its unit, its fixed-point scale, its range)
from these XML files through `flowrs-iface`'s own reader. The two must describe the same
messages, so these are the files the crate's build script compiles, unchanged: the
`mavlink/mavlink` repository at `44a1229ece43cfc3ce1640451ad5aaba52a28459`, the commit the
crate's `mavlink` submodule names at its 0.21.0 tag. Every file was compared byte for byte
with the copy inside the published crate. `tests/mavlink.rs` checks that `flowrs-iface`'s
`CRC_EXTRA` equals the crate's for every message of `ardupilotmega` and `common`; a crate
upgrade that moves the XML fails it until these files follow.
| File | Includes | What |
|---|---|---|
| `minimal.xml` | — | HEARTBEAT, PROTOCOL_VERSION and the core enums |
| `standard.xml` | `minimal.xml` | the standard set |
| `common.xml` | `standard.xml` | the common set, PX4's and ArduPilot's base (1,152-odd `units=` attributes) |
| `ardupilotmega.xml` | `common.xml`, `uAvionix.xml`, `icarous.xml`, `loweheiser.xml`, `cubepilot.xml`, `csAirLink.xml` | ArduPilot's dialect |
| `uAvionix.xml`, `icarous.xml`, `loweheiser.xml`, `cubepilot.xml`, `csAirLink.xml` | — or `common.xml` / `minimal.xml` | ardupilotmega's includes |
This is a newer commit than the projection corpus pins (`crates/flowrs-iface/tests/corpus/pins/mavlink.json`,
`2e2b6af…`): `common.xml`, `minimal.xml` and `standard.xml` differ between the two. The
bridge follows the crate it links; the corpus measures the projections.
## Licence
The message definition XML is MIT-licensed (https://mavlink.io/en/#license); `LICENSE`
reproduces the permission notice from the repository's `COPYING`. The generator, mavgen and
pymavlink, is LGPLv3 and is neither vendored nor linked. `MANIFEST.tsv` gives each file's
SHA-256 and source.