Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 5 additions & 9 deletions rockusb/examples/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -547,17 +547,16 @@ fn reset_parser() -> impl clap::builder::TypedValueParser<Value = ResetOpcode> {

#[derive(Debug, Clone)]
pub struct DeviceArg {
pub bus_number: u8,
pub bus_id: String,
pub address: u8,
}

fn parse_device(device: &str) -> Result<DeviceArg> {
let mut parts = device.split(':');
let bus_number = parts
let bus_id = parts
.next()
.ok_or_else(|| anyhow!("No bus number: use <bus>:<address>"))?
.parse()
.map_err(|_| anyhow!("Bus should be a number"))?;
.ok_or_else(|| anyhow!("No bus id: use <bus>:<address>"))?
.to_string();
let address = parts
.next()
.ok_or_else(|| anyhow!("No address: use <bus>:<address>"))?
Expand All @@ -566,10 +565,7 @@ fn parse_device(device: &str) -> Result<DeviceArg> {
if parts.next().is_some() {
return Err(anyhow!("Too many parts"));
}
Ok(DeviceArg {
bus_number,
address,
})
Ok(DeviceArg { bus_id, address })
}

#[derive(clap::Parser)]
Expand Down
6 changes: 4 additions & 2 deletions rockusb/examples/rockusb-libusb.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,12 @@ fn main() -> Result<()> {
.iter()
.find(|d| match d {
Ok(device) => {
device.bus_number() == dev.bus_number && device.address() == dev.address

@dingari dingari Jun 16, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't know which is better...

let bus_number = dev.bus_id.parse().unwrap();
device.bus_number() == bus_number && device.address() == dev.address

or

let bus_id = format!("{:03}", device.bus_number());
bus_id == dev.bus_id && device.address() == dev.address

let bus_id = format!("{:03}", device.bus_number());
bus_id == dev.bus_id && device.address() == dev.address
}
Err(DeviceUnavalable { device, .. }) => {
device.bus_number() == dev.bus_number && device.address() == dev.address
let bus_id = format!("{:03}", device.bus_number());
bus_id == dev.bus_id && device.address() == dev.address
}
})
.ok_or_else(|| anyhow!("Specified device not found"))?
Expand Down
6 changes: 3 additions & 3 deletions rockusb/examples/rockusb.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ async fn list_available_devices() -> Result<()> {
println!("Available rockchip devices:");
for d in devices {
println!(
"* Bus {} Device {} ID {}:{}",
d.busnum(),
"* Bus {} Device {} ID {:04x}:{:04x}",
d.bus_id(),
d.device_address(),
d.vendor_id(),
d.product_id()
Expand All @@ -33,7 +33,7 @@ async fn main() -> Result<()> {
let mut devices = rockusb::nusb::devices().await?;
let info = if let Some(dev) = opt.device {
devices
.find(|d| d.busnum() == dev.bus_number && d.device_address() == dev.address)
.find(|d| d.bus_id() == dev.bus_id && d.device_address() == dev.address)
.ok_or_else(|| anyhow!("Specified device not found"))?
} else {
let mut devices: Vec<_> = devices.collect();
Expand Down