use std::time::{SystemTime, UNIX_EPOCH};
use takproto::proto::{CotEvent, Detail};
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!");
let now_ms = SystemTime::now().duration_since(UNIX_EPOCH)?.as_millis() as u64;
let event = CotEvent {
r#type: "a-f-G-U-C".to_string(), uid: "RUST-TAK-CLIENT-001".to_string(), send_time: now_ms,
start_time: now_ms,
stale_time: now_ms + 60_000, how: "m-g".to_string(),
lat: 37.7749,
lon: -122.4194,
hae: 10.0, ce: 9.9, le: 9.9,
detail: Some(Detail {
xml_detail: r#"<contact callsign="RustClient" endpoint="*:-1:stcp"/>"#.to_string(),
..Default::default()
}),
..Default::default()
};
println!("Sending CoT event...");
println!(" UID: {}", event.uid);
println!(" Type: {}", event.r#type);
println!(" Position: {}, {}", event.lat, event.lon);
client.send_cot_event(event).await?;
println!("Event sent successfully!");
client.close().await?;
Ok(())
}