mavkit 0.3.0

Async MAVLink SDK for vehicle control, missions, and parameters
Documentation
use mavkit::Vehicle;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let bind_addr =
        std::env::var("MAVKIT_EXAMPLE_UDP_BIND").unwrap_or_else(|_| "0.0.0.0:14550".to_string());

    let vehicle = Vehicle::connect_udp(&bind_addr).await?;

    let state = vehicle.state().borrow().clone();
    println!(
        "current mode: {} (id={})\n",
        state.mode_name, state.custom_mode
    );

    let modes = vehicle.available_modes();
    if modes.is_empty() {
        println!("no mode list available for autopilot {:?}", state.autopilot);
    } else {
        println!("available flight modes:");
        for mode in &modes {
            let marker = if mode.custom_mode == state.custom_mode {
                " <-- active"
            } else {
                ""
            };
            println!("  {:>3}  {}{}", mode.custom_mode, mode.name, marker);
        }
    }

    vehicle.disconnect().await?;
    Ok(())
}