/// <summary> /// Opens the USB device for communucation. /// </summary> /// <param name="usbDevice">The newly created UsbDevice.</param> /// <returns>True on success.</returns> public bool Open(out LibUsbDevice usbDevice) { bool bSuccess = LibUsbDevice.Open(mDeviceFilename, out usbDevice); if (bSuccess) { usbDevice.mUsbRegistry = this; } return(bSuccess); }
/// <summary> /// Opens the USB device for communucation. /// </summary> /// <param name="deviceFilename">The LibUsb device filename to open.</param> /// <param name="usbDevice">The newly created UsbDevice.</param> /// <returns>True on success.</returns> public static bool Open(string deviceFilename, out LibUsbDevice usbDevice) { usbDevice = null; SafeFileHandle sfh = LibUsbDriverIO.OpenDevice(deviceFilename); if (!sfh.IsClosed && !sfh.IsInvalid) { usbDevice = new LibUsbDevice(LibUsbApi, sfh, deviceFilename); return(true); } else { // UsbDevice.Error(ErrorCode.DeviceNotFound, "The device is no longer attached or failed to open.", typeof(LibUsbDevice)); } return(false); }
private LibUsbRegistry(SafeFileHandle usbHandle, string deviceFileName, int deviceIndex) { mDeviceFilename = deviceFileName; mDeviceIndex = deviceIndex; GetPropertiesSPDRP(usbHandle); string symbolicName; if (GetCustomDeviceKeyValue(usbHandle, SYMBOLIC_NAME_KEY, out symbolicName, 512) == ErrorCode.None) { symbolicName = FixSymbolicName(symbolicName); mDeviceProperties.Add(SYMBOLIC_NAME_KEY, symbolicName); } string regKeyPathnameStr; GetObjectName(usbHandle, 0, out regKeyPathnameStr); mDeviceProperties.Add("DevicePlugPlayRegistryKey", regKeyPathnameStr); // If the SymbolicName key does not exists, use the first HardwareID string. if (!mDeviceProperties.ContainsKey(SYMBOLIC_NAME_KEY) || String.IsNullOrEmpty(symbolicName)) { string[] hwIDs = mDeviceProperties[SPDRP.HardwareId.ToString()] as string[]; if ((hwIDs == null) || hwIDs.Length == 0) { LibUsbDevice usbDevice = new LibUsbDevice(UsbDevice.LibUsbApi, usbHandle, deviceFileName); LegacyUsbRegistry.GetPropertiesSPDRP(usbDevice, mDeviceProperties); return; } if (hwIDs.Length > 0) { mDeviceProperties.Add(SYMBOLIC_NAME_KEY, hwIDs[0]); } } string deviceInterfaceGuids; if (GetCustomDeviceKeyValue(usbHandle, LIBUSB_INTERFACE_GUIDS, out deviceInterfaceGuids, 512) == ErrorCode.None) { string[] deviceInterfaceGuidsArray = deviceInterfaceGuids.Split(new char[] { '\0' }, StringSplitOptions.RemoveEmptyEntries); mDeviceProperties.Add(LIBUSB_INTERFACE_GUIDS, deviceInterfaceGuidsArray); } }
internal UsbConfigInfo(LibUsbDevice usbDevice, LibUsbConfigDescriptor configDescriptor) { mUsbDevice = usbDevice; mUsbConfigDescriptor = new UsbConfigDescriptor(configDescriptor); List<LibUsbInterface> monoUSBInterfaces = configDescriptor.InterfaceList; foreach (LibUsbInterface usbInterface in monoUSBInterfaces) { List<LibUsbAltInterfaceDescriptor> monoUSBAltInterfaces = usbInterface.AltInterfaceList; foreach (LibUsbAltInterfaceDescriptor monoUSBAltInterface in monoUSBAltInterfaces) { UsbInterfaceInfo usbInterfaceInfo = new UsbInterfaceInfo(mUsbDevice, monoUSBAltInterface); mInterfaceList.Add(usbInterfaceInfo); } } }
private LibUsbRegistry(SafeFileHandle usbHandle, string deviceFileName, int deviceIndex) { mDeviceFilename = deviceFileName; mDeviceIndex = deviceIndex; GetPropertiesSPDRP(usbHandle); string symbolicName; if (GetCustomDeviceKeyValue(usbHandle, SYMBOLIC_NAME_KEY, out symbolicName, 512) == ErrorCode.None) { symbolicName = FixSymbolicName(symbolicName); mDeviceProperties.Add(SYMBOLIC_NAME_KEY, symbolicName); } string regKeyPathnameStr; GetObjectName(usbHandle, 0, out regKeyPathnameStr); mDeviceProperties.Add("DevicePlugPlayRegistryKey", regKeyPathnameStr); // If the SymbolicName key does not exists, use the first HardwareID string. if (!mDeviceProperties.ContainsKey(SYMBOLIC_NAME_KEY) || String.IsNullOrEmpty(symbolicName)) { string[] hwIDs = mDeviceProperties[SPDRP.HardwareId.ToString()] as string[]; if ((hwIDs == null) || hwIDs.Length==0) { LibUsbDevice usbDevice = new LibUsbDevice(UsbDevice.LibUsbApi, usbHandle, deviceFileName); LegacyUsbRegistry.GetPropertiesSPDRP(usbDevice, mDeviceProperties); return; } if (hwIDs.Length > 0) { mDeviceProperties.Add(SYMBOLIC_NAME_KEY, hwIDs[0]); } } string deviceInterfaceGuids; if (GetCustomDeviceKeyValue(usbHandle, LIBUSB_INTERFACE_GUIDS, out deviceInterfaceGuids, 512) == ErrorCode.None) { string[] deviceInterfaceGuidsArray = deviceInterfaceGuids.Split(new char[] {'\0'}, StringSplitOptions.RemoveEmptyEntries); mDeviceProperties.Add(LIBUSB_INTERFACE_GUIDS, deviceInterfaceGuidsArray); } }
/// <summary> /// Opens the USB device for communucation. /// </summary> /// <param name="usbDevice">The newly created UsbDevice.</param> /// <returns>True on success.</returns> public bool Open(out LibUsbDevice usbDevice) { bool bSuccess = LibUsbDevice.Open(mDeviceFilename, out usbDevice); if (bSuccess) { usbDevice.mUsbRegistry = this; } return bSuccess; }
private static ErrorCode GetConfigs(LibUsbDevice usbDevice, out List<UsbConfigInfo> configInfoListRtn) { configInfoListRtn = new List<UsbConfigInfo>(); UsbError usbError = null; List<LibUsbConfigDescriptor> configList = new List<LibUsbConfigDescriptor>(); int iConfigs = usbDevice.Info.Descriptor.ConfigurationCount; for (int iConfig = 0; iConfig < iConfigs; iConfig++) { LibUsbConfigHandle nextConfigHandle; int ret = LibUsbApi.GetConfigDescriptor(usbDevice.mMonoUSBProfile.ProfileHandle, (byte) iConfig, out nextConfigHandle); Debug.Print("GetConfigDescriptor:{0}", ret); if (ret != 0 || nextConfigHandle.IsInvalid) { usbError = UsbError.Error(ErrorCode.MonoApiError, ret, String.Format("GetConfigDescriptor Failed at index:{0}", iConfig), usbDevice); return usbError.ErrorCode; } try { LibUsbConfigDescriptor nextConfig = new LibUsbConfigDescriptor(); Marshal.PtrToStructure(nextConfigHandle.DangerousGetHandle(), nextConfig); UsbConfigInfo nextConfigInfo = new UsbConfigInfo(usbDevice, nextConfig); configInfoListRtn.Add(nextConfigInfo); } catch (Exception ex) { UsbError.Error(ErrorCode.InvalidConfig, Marshal.GetLastWin32Error(), ex.ToString(), usbDevice); } finally { if (!nextConfigHandle.IsInvalid) nextConfigHandle.Close(); } } return ErrorCode.Success; }
/// <summary> /// Opens the USB device for communucation. /// </summary> /// <param name="deviceFilename">The LibUsb device filename to open.</param> /// <param name="usbDevice">The newly created UsbDevice.</param> /// <returns>True on success.</returns> public static bool Open(string deviceFilename, out LibUsbDevice usbDevice) { usbDevice = null; SafeFileHandle sfh = LibUsbDriverIO.OpenDevice(deviceFilename); if (!sfh.IsClosed && !sfh.IsInvalid) { usbDevice = new LibUsbDevice(LibUsbApi, sfh, deviceFilename); return true; } else { // UsbDevice.Error(ErrorCode.DeviceNotFound, "The device is no longer attached or failed to open.", typeof(LibUsbDevice)); } return false; }
private void usbDisconnected() { _usbDevice = null; lblStatus.Text = "Not Connected"; }
private void tmrUSBCheck_Tick(object sender, EventArgs e) { if (_usbDevice == null) { // (0x16C1, "Nima Alamatsaz", 0x15DC, "AVROscope") foreach (LibUsbRegistry reg in LibUsbDevice.AllLibUsbDevices) if (reg.Vid == 0x16C1 && reg.Pid == 0x0002 && reg.Device.Info.ManufacturerString == "Nima Alamatsaz" && reg.Device.Info.ProductString == "AVROscope") { _usbDevice = (LibUsbDevice)reg.Device; if (_usbDevice.Open()) lblStatus.Text = "Connected"; else { lblStatus.Text = "Can't Connect"; _usbDevice = null; } } } }