mavinspect 0.1.0-alpha2

MAVInspect is a CLI tool and a library to parse and inspect MAVLink protocol XML definitions
Documentation
mavinspect-0.1.0-alpha2 has been yanked.

MAVInspect

MAVLink Inspector is a CLI tool and a library to parse MAVLink protocol XML definitions.

WARNING!!!

This project is intended to be used with other Mavka tools. For now its API will be extremely unstable. Once the library will be successfully consumed by these projects, API will be stabilised.

Examples

use mavinspect::parser::MAVInspector;

fn main() {
  // Instantiate inspector and load list of XML definitions
  let inspector = MAVInspector::new("./message_definitions").unwrap();
  // Parse all XML definitions
  let protocol = inspector.parse().unwrap();
  
  // Get `minimal` dialect
  let minimal = protocol.dialects().get("minimal").unwrap();
  // Get heartbit message
  let heartbeat_message = minimal.messages().get(&0u32).unwrap();
  
  assert_eq!(heartbeat_message.name(), "HEARTBEAT");
  println!("`HEARTBEAT` message: {:?}", heartbeat_message);
}

Docs

Documentation can be found here.

CLI Interface

List dialects:

mavinspect [--src <PATH TO MESSAGE DEINITIONS>] ls

Parse dialects:

mavinspect [--src <PATH TO MESSAGE DEINITIONS>] parse [--dst <PATH TO DESTINATION DIRECTORY>]

Start gRPC server to serve MAVLink definitions:

mavinspect [--src <PATH TO MESSAGE DEINITIONS>] serve

Roadmap

Basics (required before publishing non-alpha version)

  • Load and deserialize from JSON for server.
  • Add examples to docs.

DevOps

  • Release mavinspect binary.
  • Release mavinspect for ARM64 and other architectures.

Next release (for v0.2.0)

  • Multiple folders for XML definitions.

Planned improvements

  • Watch message definitions and reload server on changes.
  • Add standalone examples.

License

Here we simply comply with the suggested dual licensing according to Rust API Guidelines (C-PERMISSIVE).

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.