1 unstable release
0.1.0-alpha2 | Nov 13, 2023 |
---|---|
0.1.0-alpha1 |
|
#99 in Robotics
85 downloads per month
4.5MB
29K
SLoC
Contains (Cab file, 16KB) testmav.suo
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
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
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.
Dependencies
~5–16MB
~197K SLoC