takproto 0.4.2

Rust library for TAK (Team Awareness Kit) Protocol - send CoT messages to TAK servers with mTLS support
Documentation
use takproto::TakClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Parse command line arguments
    let args: Vec<String> = std::env::args().collect();
    let server_addr = if args.len() > 1 {
        args[1].as_str()
    } else {
        "127.0.0.1:8087"
    };

    println!("Connecting to TAK server at {}...", server_addr);

    // Connect to the TAK server
    let mut client = TakClient::connect(server_addr).await?;

    println!("Connected successfully!");
    println!("Listening for TAK messages... (Press Ctrl+C to exit)");
    println!();

    // Receive and display messages
    loop {
        match client.receive_tak_message().await? {
            Some(message) => {
                if let Some(event) = message.cot_event {
                    println!("Received CoT Event:");
                    println!("  UID: {}", event.uid);
                    println!("  Type: {}", event.r#type);
                    println!("  Position: {}, {}", event.lat, event.lon);
                    println!("  How: {}", event.how);

                    if let Some(detail) = event.detail {
                        if !detail.xml_detail.is_empty() {
                            println!("  Detail: {}", detail.xml_detail);
                        }
                    }
                    println!();
                }

                if let Some(control) = message.tak_control {
                    println!("Received TAK Control:");
                    println!("  {:?}", control);
                    println!();
                }
            }
            None => {
                println!("Connection closed by server");
                break;
            }
        }
    }

    Ok(())
}