use std::collections::HashSet;
use hidapi::{HidApi, HidResult};
use crate::info::{is_mirabox_vendor, Kind};
pub fn new_hidapi() -> HidResult<HidApi> {
HidApi::new()
}
pub fn refresh_device_list(hidapi: &mut HidApi) -> HidResult<()> {
hidapi.refresh_devices()
}
pub fn list_devices(hidapi: &HidApi) -> Vec<(Kind, String)> {
hidapi
.device_list()
.filter_map(|d| {
if !is_mirabox_vendor(d.vendor_id()) {
return None;
}
let serial = d.serial_number()?;
Some((
Kind::from_vid_pid(d.vendor_id(), d.product_id())?,
serial.to_string(),
))
})
.collect::<HashSet<_>>()
.into_iter()
.collect()
}