diff --git a/satrs-example/client/Cargo.toml b/satrs-example/client/Cargo.toml index 09c50c3..a6d4004 100644 --- a/satrs-example/client/Cargo.toml +++ b/satrs-example/client/Cargo.toml @@ -4,3 +4,8 @@ version = "0.1.0" edition = "2024" [dependencies] +clap = { version = "4", features = ["derive"] } +log = "0.4" +fern = "0.7" +humantime = "2" +satrs-example = { path = ".." } diff --git a/satrs-example/client/src/main.rs b/satrs-example/client/src/main.rs index f328e4d..5e1b1e5 100644 --- a/satrs-example/client/src/main.rs +++ b/satrs-example/client/src/main.rs @@ -1 +1,42 @@ -fn main() {} +use clap::Parser as _; +use satrs_example::config::{OBSW_SERVER_ADDR, SERVER_PORT}; +use std::{ + net::{IpAddr, SocketAddr, UdpSocket}, + sync::{Arc, atomic::AtomicBool}, + time::SystemTime, +}; + +#[derive(clap::Parser)] +pub struct Cli { + #[arg(short, long)] + ping: bool, +} + +fn setup_logger(level: log::LevelFilter) -> Result<(), fern::InitError> { + fern::Dispatch::new() + .format(|out, message, record| { + out.finish(format_args!( + "[{} {} {}] {}", + humantime::format_rfc3339_seconds(SystemTime::now()), + record.level(), + record.target(), + message + )) + }) + .level(level) + .chain(std::io::stdout()) + .chain(fern::log_file("output.log")?) + .apply()?; + Ok(()) +} + +fn main() { + setup_logger(log::LevelFilter::Debug).unwrap(); + let kill_signal = Arc::new(AtomicBool::new(false)); + let cli = Cli::parse(); + + let addr = SocketAddr::new(IpAddr::V4(OBSW_SERVER_ADDR), SERVER_PORT); + let client = UdpSocket::bind("127.0.0.1:7302").expect("Connecting to UDP server failed"); + + if cli.ping {} +}