/// <summary> /// Will convert all the interfaces to a human readable format /// </summary> private String GetInterfaceDescriptorsAsString() { String content = null; if (EventHandlerForDevice.Current.IsDeviceConnected) { var interfaces = EventHandlerForDevice.Current.Device.Configuration.UsbInterfaces; content = "Interface Descriptors"; foreach (UsbInterface usbInterface in interfaces) { // Will use class/subclass/protocol values from the first interface setting (usually the selected one) UsbInterfaceDescriptor usbInterfaceDescriptor = usbInterface.InterfaceSettings[0].InterfaceDescriptor; content += "\n\nInterface Number : 0x" + usbInterface.InterfaceNumber.ToString("X2", NumberFormatInfo.InvariantInfo) + "\nClass Code : 0x" + usbInterfaceDescriptor.ClassCode.ToString("X2", NumberFormatInfo.InvariantInfo) + "\nSubclass Code : 0x" + usbInterfaceDescriptor.SubclassCode.ToString("X2", NumberFormatInfo.InvariantInfo) + "\nProtocol Code: 0x" + usbInterfaceDescriptor.ProtocolCode.ToString("X2", NumberFormatInfo.InvariantInfo) + "\nNumber of Interface Settings : " + usbInterface.InterfaceSettings.Count.ToString("D", NumberFormatInfo.InvariantInfo) + "\nNumber of open Bulk In Endpoints : " + usbInterface.BulkInPipes.Count.ToString("D", NumberFormatInfo.InvariantInfo) + "\nNumber of open Bulk Out Endpoints : " + usbInterface.BulkOutPipes.Count.ToString("D", NumberFormatInfo.InvariantInfo) + "\nNumber of open Interrupt In Endpoints : " + usbInterface.InterruptInPipes.Count.ToString("D", NumberFormatInfo.InvariantInfo) + "\nNumber of open Interrupt Out Endpoints : " + usbInterface.InterruptOutPipes.Count.ToString("D", NumberFormatInfo.InvariantInfo); } } return(content); }
public UsbInterfaceInfo(UsbDevice usbDevice, UsbInterfaceDescriptor usbInterfaceDescriptor, IEnumerable <IUsbEndpointDescriptor> usbEndpoints) { mUsbDevice = usbDevice; mUsbInterfaceDescriptor = usbInterfaceDescriptor; foreach (var usbEndpoint in usbEndpoints) { mEndpointInfo.Add(new UsbEndpointInfo(usbEndpoint)); } }
internal UsbInterfaceInfo(UsbDevice usbDevice, MonoUsbAltInterfaceDescriptor monoUSBAltInterfaceDescriptor) { mUsbDevice = usbDevice; mUsbInterfaceDescriptor = new UsbInterfaceDescriptor(monoUSBAltInterfaceDescriptor); List <MonoUsbEndpointDescriptor> monoUsbEndpoints = monoUSBAltInterfaceDescriptor.EndpointList; foreach (MonoUsbEndpointDescriptor monoUSBEndpoint in monoUsbEndpoints) { mEndpointInfo.Add(new UsbEndpointInfo(monoUSBEndpoint)); } }
/// <summary> /// Gets a <see cref="IUsbInterfaceDescriptor"/> for the specified AlternateInterfaceNumber, /// </summary> /// <param name="alternateInterfaceNumber">The alternate interface index for the <see cref="IUsbInterfaceDescriptor"/> to retrieve. </param> /// <param name="usbAltInterfaceDescriptor">The <see cref="IUsbInterfaceDescriptor"/> for the specified AlternateInterfaceNumber.</param> /// <returns>True on success.</returns> public bool QueryInterfaceSettings(byte alternateInterfaceNumber, ref IUsbInterfaceDescriptor usbAltInterfaceDescriptor) { bool bSuccess; UsbInterfaceDescriptor usbInterfaceDescriptor = new UsbInterfaceDescriptor(); bSuccess = WinUsbAPI.WinUsb_QueryInterfaceSettings(Handle, alternateInterfaceNumber, usbInterfaceDescriptor); if (!bSuccess) { UsbError.Error(ErrorCode.Win32Error, Marshal.GetLastWin32Error(), "QueryInterfaceSettings", this); } usbAltInterfaceDescriptor = usbInterfaceDescriptor; return(bSuccess); }
/// <summary> /// Gets a <see cref="UsbInterfaceDescriptor"/> for the specified AlternateInterfaceNumber, /// </summary> /// <param name="alternateInterfaceNumber">The alternate interface index for the <see cref="UsbInterfaceDescriptor"/> to retrieve. </param> /// <param name="usbAltInterfaceDescriptor">The <see cref="UsbInterfaceDescriptor"/> for the specified AlternateInterfaceNumber.</param> /// <returns>True on success.</returns> public bool QueryInterfaceSettings(byte alternateInterfaceNumber, ref UsbInterfaceDescriptor usbAltInterfaceDescriptor) { bool bSuccess; //if (mSemDeviceLock != null) //{ // if (LockDevice() != ErrorCode.None) return false; //} //try //{ bSuccess = WinUsbAPI.WinUsb_QueryInterfaceSettings(Handle, alternateInterfaceNumber, usbAltInterfaceDescriptor); if (!bSuccess) { UsbError.Error(ErrorCode.Win32Error, Marshal.GetLastWin32Error(), "QueryInterfaceSettings", this); } //} //finally //{ // if (mSemDeviceLock != null) UnlockDevice(); //} return(bSuccess); }
internal UsbInterfaceInfo(UsbDevice usbDevice, byte[] descriptor) { mUsbDevice = usbDevice; mUsbInterfaceDescriptor = new UsbInterfaceDescriptor(); Helper.BytesToObject(descriptor, 0, Math.Min(UsbInterfaceDescriptor.Size, descriptor[0]), mUsbInterfaceDescriptor); }
internal static extern bool WinUsb_QueryInterfaceSettings([In] SafeHandle InterfaceHandle, byte AlternateInterfaceNumber, [MarshalAs(UnmanagedType.LPStruct), In, Out] UsbInterfaceDescriptor UsbAltInterfaceDescriptor);
internal static extern Boolean WinUsb_QueryInterfaceSettings(IntPtr interfaceHandle, Byte alternateInterfaceNumber, ref UsbInterfaceDescriptor usbAltInterfaceDescriptor);
public UsbAlternateInterface(UsbInterfaceDescriptor descriptor) { Descriptor = descriptor; }