mavinspect 0.1.0-alpha2

MAVInspect is a CLI tool and a library to parse and inspect MAVLink protocol XML definitions
Documentation
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
--------

```rust
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](https://docs.rs/crate/mavinspect).

CLI Interface
-------------

List dialects:

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

Parse dialects:

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

Start gRPC server to serve MAVLink definitions:

```shell
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]https://rust-lang.github.io/api-guidelines/about.html (C-PERMISSIVE).

Licensed under either of

* Apache License, Version 2.0
  ([LICENSE-APACHE]LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license
  ([LICENSE-MIT]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.