minidisc-cli/src/main.rs

57 lines
1.9 KiB
Rust

use minidisc_rs::netmd::interface;
use cross_usb::usb::Device;
use cross_usb::device_filter;
#[tokio::main]
async fn main() {
// Can find devices this way
let filter = vec![
device_filter!{vendor_id:0x054c,product_id:0x0186}, // MZ-NH600
device_filter!{vendor_id:0x054c,product_id:0x00c9}, // MZ-NF610
];
let device = cross_usb::get_device_filter(filter).await.expect("No device found matching critera");
dbg!(device.vendor_id().await);
// Ensure the player is a minidisc player and not some other random device
let mut player_controller = match interface::NetMDInterface::new(&device).await {
Ok(player) => player,
Err(err) => {
dbg!(err);
panic!();
},
};
println!(
"Player Model: {}",
player_controller
.net_md_device
.device_name()
.await
.clone()
.unwrap()
);
let now = std::time::Instant::now();
let half_title = player_controller.disc_title(false).await.unwrap_or("".to_string());
let full_title = player_controller.disc_title(true).await.unwrap_or("".to_string());
println!(
"Disc Title: {} | {}",
half_title,
full_title
);
let track_count = player_controller.track_count().await.unwrap();
println!("{}", track_count);
let track_titles = player_controller.track_titles((0..track_count).collect(), false).await.unwrap();
let track_titlesw = player_controller.track_titles((0..track_count).collect(), true).await.unwrap();
let track_lengths = player_controller.track_lengths((0..track_count).collect()).await.unwrap();
for (i, track) in track_titles.iter().enumerate() {
println!(
"Track {i} Info:\n Title: {track} | {}\n Length: {:?}",
track_titlesw[i], track_lengths[i]
);
}
println!("{:?}", now.elapsed());
}