#[allow(unused_imports)]
use log::{debug, error, info, trace, warn};
use crate::usb::enumerate_devices;
use crate::{Device, Error, Options};
use onerom_config::hw::Board;
pub async fn scan(options: &Options, board_filter: Option<Board>) -> Result<Vec<Device>, Error> {
let mut devices = enumerate_devices(options.unrecognised, &options.vid_pid).await?;
if let Some(board) = board_filter.as_ref() {
devices.retain(|d| {
d.onerom
.as_ref()
.and_then(|o| o.get_board())
.map(|b| &b == board)
.unwrap_or(false)
});
}
if let Some(device) = options.device.as_ref() {
match device.chip_id {
Some(id) => devices.retain(|d| d.chip_id == Some(id)),
None => devices.retain(|d| d.serial == device.serial),
}
}
devices.sort_by_key(|d| d.sort_key());
Ok(devices)
}