private void RefreshDevices() { FTDIDevices.Clear(); var newDevices = mFTDILibrary.EnumerateFTDIDevices(); uint index = 0; foreach (var node in newDevices) { if (node.Type != FTDI.FT_DEVICE.FT_DEVICE_UNKNOWN) { uint chipID = 0; if (FTDI.IsFTDChipIDDLLLoaded()) { mFTDILibrary.GetChipIDFromDeviceIndex(index, out chipID); } FTDIDevices.Add(new FTDIDeviceInfo(node, index, chipID)); index++; } } #region fakeDevices #if ENABLE_FAKE_USB_DEVICES if ((FTDIDevices.Count == 0) && (DateTime.Now.Second % 3 == 0)) { FTDI.FT_DEVICE_INFO_NODE tempInfo0 = new FTDI.FT_DEVICE_INFO_NODE(); tempInfo0.Description = "Debug Placeholder FTDI Device 0"; tempInfo0.ID = 1000; tempInfo0.SerialNumber = "SerialNum 1000"; tempInfo0.Type = FTDI.FT_DEVICE.FT_DEVICE_232R; FTDIDevices.Add(new FTDIDeviceInfo(tempInfo0, index++, 0x01010101)); FTDI.FT_DEVICE_INFO_NODE tempInfo1 = new FTDI.FT_DEVICE_INFO_NODE(); tempInfo1.Description = "Debug Placeholder FTDI Device 1"; tempInfo1.ID = 1001; tempInfo1.SerialNumber = "SerialNum 1001"; tempInfo1.Type = FTDI.FT_DEVICE.FT_DEVICE_UNKNOWN; FTDIDevices.Add(new FTDIDeviceInfo(tempInfo1, index++, 0x00000000)); FTDI.FT_DEVICE_INFO_NODE tempInfo2 = new FTDI.FT_DEVICE_INFO_NODE(); tempInfo2.Description = "Debug Placeholder FTDI Device 2"; tempInfo2.ID = 1002; tempInfo2.SerialNumber = "SerialNum 1002"; tempInfo2.Type = FTDI.FT_DEVICE.FT_DEVICE_BM; FTDIDevices.Add(new FTDIDeviceInfo(tempInfo2, index++, 0x01010101)); } #endif #endregion }
private void OnRefreshDevices() { RefreshDevices(); FTDIDeviceInfo matchedInfoInList = FTDIDevices.FirstOrDefault(this.SelectedUSBDevicePredicate); if (matchedInfoInList == null) { //couldn't find the the selected device in the list, try to use the first one in the list SelectedDeviceInfo = FTDIDevices.FirstOrDefault(); } else { //use the one in the list SelectedDeviceInfo = matchedInfoInList; } CollectionViewSource.GetDefaultView(FTDIDevices).MoveCurrentToFirst(); }