use takproto::TakClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
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);
let mut client = TakClient::connect(server_addr).await?;
println!("Connected successfully!");
println!("Listening for TAK messages... (Press Ctrl+C to exit)");
println!();
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(())
}