MCPcopy Create free account
hub / github.com/FrameworkComputer/framework-system / find_devices

Function find_devices

framework_lib/src/ccgx/hid.rs:261–287  ·  view source on GitHub ↗

Find HDMI/DP Expansion cards, optionally filter by product ID or serial number

(api: &HidApi, filter_devs: &[u16], sn: Option<&str>)

Source from the content-addressed store, hash-verified

259
260/// Find HDMI/DP Expansion cards, optionally filter by product ID or serial number
261pub fn find_devices(api: &HidApi, filter_devs: &[u16], sn: Option<&str>) -> Vec<DeviceInfo> {
262 api.device_list()
263 .filter_map(|dev_info| {
264 let vid = dev_info.vendor_id();
265 let pid = dev_info.product_id();
266 let usage_page = dev_info.usage_page();
267
268 debug!("Found {:X}:{:X} Usage Page: {}", vid, pid, usage_page);
269 #[cfg(not(target_os = "freebsd"))]
270 let usage_page_filter = usage_page == CCG_USAGE_PAGE;
271 // On FreeBSD it seems we don't get different usage pages
272 // There's just one entry overall
273 #[cfg(target_os = "freebsd")]
274 let usage_page_filter = true;
275
276 if vid == FRAMEWORK_VID
277 && filter_devs.contains(&pid)
278 && usage_page_filter
279 && (sn.is_none() || sn == dev_info.serial_number())
280 {
281 Some(dev_info.clone())
282 } else {
283 None
284 }
285 })
286 .collect()
287}
288
289pub fn flash_firmware(fw_binary: &[u8]) {
290 let versions = if let Some(versions) = ccgx::binary::read_versions(fw_binary, SiliconId::Ccg3) {

Callers 3

flash_firmwareFunction · 0.85
wait_to_reappearFunction · 0.85
print_dp_hdmi_detailsFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected