endymion 0.0.1

Bias lighting, written in Rust
use ddp_rs::connection;
use ddp_rs::protocol;

fn main() {
    let args: Vec<String> = std::env::args().collect();
    if args.len() < 3 {
        eprintln!("Usage: {} <ip_address> <num_leds>", args[0]);
        std::process::exit(1);
    }

    // Bootleg arg parsing
    let ip_address = &args[1];
    let target_address = format!("{}:4048", ip_address);
    let num_leds_str = &args[2];
    let num_leds: usize = num_leds_str
        .parse()
        .expect("Failed to parse num_leds as a number");

    let mut conn = connection::DDPConnection::try_new(
        &target_address,
        protocol::PixelConfig::default(),
        protocol::ID::Default,
        std::net::UdpSocket::bind("0.0.0.0:4048").unwrap(),
    )
    .unwrap();

    loop {
        for i in 0..num_leds {
            let mut leds: Vec<u8> = vec![0; num_leds * 3];
            leds[i * 3] = 255u8;

            conn.write(&leds).unwrap();
            std::thread::sleep(std::time::Duration::from_millis(10));
        }
    }
}