Reads a MAVLink message definition file, following its <include>s, into
messages and enums with their wire layout.
A message's wire layout is its base fields stable-sorted by type size,
largest first, then its extension fields in the order written. Its
crc_extra is the MAVLink CRC over "NAME " and, for each base field in
wire order, "type name " and an array's length as one byte, folded to
a byte as low ^^^ high.
Summary
Types
@type base_type() ::
:int8
| :uint8
| :char
| :int16
| :uint16
| :int32
| :uint32
| :int64
| :uint64
| :float
| :double
@type message() :: %{ id: non_neg_integer(), name: String.t(), fields: [field()], wire: [field()], length: pos_integer(), min_length: pos_integer(), crc_extra: 0..255 }
Functions
Reads path and every file it includes.
@spec size(base_type()) :: pos_integer()