use ar_drivers::{any_glasses, DisplayMode};
use clap::Parser;
#[derive(clap::Parser, Debug)]
struct CliArgs {
#[arg(value_enum, default_value_t = CliDisplayMode::Stereo)]
mode: CliDisplayMode,
#[clap(long, short)]
keep_running: bool,
}
#[derive(clap::ValueEnum, Debug, Clone)]
enum CliDisplayMode {
#[value(name("2d"), alias("same-on-both"))]
SameOnBoth,
#[value(name("3d"), alias("sbs"), alias("stereo"))]
Stereo,
#[value(name("halfsbs"), alias("sbs2"), alias("half-stereo"))]
HalfSBS,
#[value(name("high-refresh-rate-2d"), alias("120hz"))]
HighRefreshRate,
#[value(name("high-refresh-rate-3d"))]
HighRefreshRateSBS,
}
fn main() {
let args = CliArgs::parse();
let mut glasses = any_glasses().unwrap();
println!("Got glasses, serial={}", glasses.serial().unwrap());
println!(
"Display mode was: {:?}",
glasses.get_display_mode().unwrap()
);
glasses
.set_display_mode(match args.mode {
CliDisplayMode::SameOnBoth => DisplayMode::SameOnBoth,
CliDisplayMode::Stereo => DisplayMode::Stereo,
CliDisplayMode::HalfSBS => DisplayMode::HalfSBS,
CliDisplayMode::HighRefreshRate => DisplayMode::HighRefreshRate,
CliDisplayMode::HighRefreshRateSBS => DisplayMode::HighRefreshRateSBS,
})
.unwrap();
if args.keep_running {
loop {
glasses.read_event().unwrap();
}
}
}