Updated example to work again, fixed crash in interface.rs

This commit is contained in:
G2-Games 2024-01-28 18:41:20 -06:00
parent 1f740509c4
commit d0e42076d8
4 changed files with 15 additions and 22 deletions

View file

@ -10,8 +10,8 @@ license = "AGPL-3.0"
[dependencies] [dependencies]
hex = "0.4.3" hex = "0.4.3"
nusb = "0.1.4"
translit = "0.5.0" translit = "0.5.0"
yusb = "0.1.2"
[dependencies.minidisc-rs] [dependencies.minidisc-rs]
path = "minidisc-rs" path = "minidisc-rs"

View file

@ -9,7 +9,7 @@ use nusb::{Device, DeviceInfo, Interface};
use futures_lite::future::block_on; use futures_lite::future::block_on;
const DEFAULT_TIMEOUT: Duration = Duration::new(9999999, 0); const DEFAULT_TIMEOUT: Duration = Duration::new(10000, 0);
const BULK_WRITE_ENDPOINT: u8 = 0x02; const BULK_WRITE_ENDPOINT: u8 = 0x02;
const BULK_READ_ENDPOINT: u8 = 0x81; const BULK_READ_ENDPOINT: u8 = 0x81;
@ -98,7 +98,7 @@ impl NetMD {
const READ_REPLY_RETRY_INTERVAL: u32 = 10; const READ_REPLY_RETRY_INTERVAL: u32 = 10;
/// Creates a new interface to a NetMD device /// Creates a new interface to a NetMD device
pub fn new(device_info: DeviceInfo) -> Result<Self, Box<dyn Error>> { pub fn new(device_info: &DeviceInfo) -> Result<Self, Box<dyn Error>> {
let mut model = DeviceId { let mut model = DeviceId {
vendor_id: device_info.vendor_id(), vendor_id: device_info.vendor_id(),
product_id: device_info.product_id(), product_id: device_info.product_id(),

View file

@ -202,8 +202,8 @@ impl NetMDInterface {
const MAX_INTERIM_READ_ATTEMPTS: u8 = 4; const MAX_INTERIM_READ_ATTEMPTS: u8 = 4;
const INTERIM_RESPONSE_RETRY_INTERVAL: u32 = 100; const INTERIM_RESPONSE_RETRY_INTERVAL: u32 = 100;
pub fn new(device: nusb::DeviceInfo) -> Result<Self, Box<dyn Error>> { pub fn new(device: &nusb::DeviceInfo) -> Result<Self, Box<dyn Error>> {
let net_md_device = base::NetMD::new(device).unwrap(); let net_md_device = base::NetMD::new(device)?;
Ok(NetMDInterface { net_md_device }) Ok(NetMDInterface { net_md_device })
} }

View file

@ -1,29 +1,22 @@
use minidisc_rs::netmd::interface; use minidisc_rs::netmd::interface;
use yusb; use nusb;
fn main() { fn main() {
let webusb_context = yusb::Context::new().unwrap(); let devices = nusb::list_devices().unwrap();
for device in webusb_context.devices().unwrap() {
let handle = match device.open() {
Ok(handle) => handle,
Err(_) => continue,
};
let descriptor = device.device_descriptor().unwrap();
println!(
"Connected to VID: {:04x}, PID: {:04x}",
descriptor.vendor_id(),
descriptor.product_id(),
);
for device in devices {
// Ensure the player is a minidisc player and not some other random device // Ensure the player is a minidisc player and not some other random device
let mut player_controller = match interface::NetMDInterface::new(device) { let mut player_controller = match interface::NetMDInterface::new(&device) {
Ok(player) => player, Ok(player) => player,
Err(_) => continue, Err(_) => continue,
}; };
println!(
"Connected to VID: {:04x}, PID: {:04x}",
device.vendor_id(),
device.product_id(),
);
println!( println!(
"Player Model: {}", "Player Model: {}",
player_controller player_controller