#[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| {
if let Some(onerom) = d.onerom.as_ref()
&& let Some(flash) = onerom.flash.as_ref()
&& let Some(flash_board) = flash.board.as_ref()
{
flash_board == board
} else {
false
}
});
}
if let Some(device) = options.device.as_ref() {
devices.retain(|d| d.serial == device.serial);
}
devices.sort_by_key(|d| d.sort_key());
Ok(devices)
}