public override Status Scan <USB_HID_Device>(out List <USB_HID_Device> device_list, ScanOptions scan_opt = ScanOptions.None) { device_list = new List <USB_HID_Device>(); devices.Clear(); try { int i = 1; var alldev = DeviceList.Local.GetHidDevices(); if (alldev != null && alldev.Count() > 0) { foreach (HidDevice dev in alldev) { if (scan_opt.HasFlag(ScanOptions.UsbHid_IgnoreTexasVid) || (dev.VendorID == TI_VID && dev.ProductID == TI_BSL_PID)) { //dev.GetReportDescriptor().DeviceItems[0].Usages; string device_name = DEVICE_PREFIX + i; Comm.USB_HID_Device nod = new Comm.USB_HID_Device ( dev.VendorID, dev.ProductID, dev.GetSerialNumber(), dev.GetManufacturer(), dev.GetProductName(), // dev.GetFriendlyName() device_name, dev.DevicePath, "", Mode.USB_HID ); nod.FormattedDescription = nod.ToString(); devices.Add(device_name.ToLower(), nod); i++; } } device_list = devices.Select(pair => pair.Value).Cast <USB_HID_Device>().ToList(); } return(Utils.StatusCreate(0)); } catch (Exception ex) { return(Utils.StatusCreate(601, ex.Message)); } }
public override Status Scan <FTDI_Device>(out List <FTDI_Device> device_list, ScanOptions scan_opt = ScanOptions.None) { device_list = new List <FTDI_Device>(); devices.Clear(); try { uint ftdiDeviceCount = 0; ftStatus = FTDI.FT_STATUS.FT_OK; if (ftdi == null) { ftdi = new FTDI(); } ftStatus = ftdi.GetNumberOfDevices(ref ftdiDeviceCount); if (ftStatus != FTDI.FT_STATUS.FT_OK) { return(Utils.StatusCreate(300, ftStatus.ToString())); } FTDI.FT_DEVICE_INFO_NODE[] ftdiDeviceList = new FTDI.FT_DEVICE_INFO_NODE[ftdiDeviceCount]; int timeout = Const.TIMEOUT_SCAN; do { Task.Delay(5).Wait(); ftStatus = ftdi.GetDeviceList(ftdiDeviceList); timeout -= 5; if (timeout <= 0) { return(Utils.StatusCreate(302)); } if (BSL430NET.Interrupted) { throw new Bsl430NetException(666); } }while (ftStatus != FTDI.FT_STATUS.FT_OK); int i = 1; foreach (var dev in ftdiDeviceList) { string device_name = DEVICE_PREFIX + i; string type = dev.Type.ToString(); string description = dev.Description; string serial = dev.SerialNumber.ToString(); string vidpid = String.Format("{0:x}", dev.ID); int vid = -1; int pid = -1; Int32.TryParse(vidpid.Substring(vidpid.Length - 4, 4), NumberStyles.HexNumber, null, out pid); Int32.TryParse(vidpid.Substring(0, vidpid.Length - 4), NumberStyles.HexNumber, null, out vid); if (!(scan_opt.HasFlag(ScanOptions.Ftdi_IgnoreUnknownDev) && type.ToLower().Contains("unknown"))) { Comm.FTDI_Device nod = new Comm.FTDI_Device ( vid, pid, type, serial, device_name, description, "", Mode.UART_FTD2XX ); nod.FormattedDescription = nod.ToString(); devices.Add(device_name.ToLower(), nod); i++; } } device_list = devices.Select(pair => pair.Value).Cast <FTDI_Device>().ToList(); return(Utils.StatusCreate(0)); } catch (Bsl430NetException ex) { throw ex; } catch (Exception ex) { return(Utils.StatusCreate(301, ex.Message)); } }