/// <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);
        }
Exemplo n.º 2
0
        public UsbInterfaceInfo(UsbDevice usbDevice, UsbInterfaceDescriptor usbInterfaceDescriptor, IEnumerable <IUsbEndpointDescriptor> usbEndpoints)
        {
            mUsbDevice = usbDevice;
            mUsbInterfaceDescriptor = usbInterfaceDescriptor;

            foreach (var usbEndpoint in usbEndpoints)
            {
                mEndpointInfo.Add(new UsbEndpointInfo(usbEndpoint));
            }
        }
Exemplo n.º 3
0
        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));
            }
        }
Exemplo n.º 4
0
        /// <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);
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 6
0
 internal UsbInterfaceInfo(UsbDevice usbDevice, byte[] descriptor)
 {
     mUsbDevice = usbDevice;
     mUsbInterfaceDescriptor = new UsbInterfaceDescriptor();
     Helper.BytesToObject(descriptor, 0, Math.Min(UsbInterfaceDescriptor.Size, descriptor[0]), mUsbInterfaceDescriptor);
 }
Exemplo n.º 7
0
 internal static extern bool WinUsb_QueryInterfaceSettings([In] SafeHandle InterfaceHandle,
                                                           byte AlternateInterfaceNumber,
                                                           [MarshalAs(UnmanagedType.LPStruct), In, Out] UsbInterfaceDescriptor
                                                           UsbAltInterfaceDescriptor);
Exemplo n.º 8
0
 internal static extern Boolean WinUsb_QueryInterfaceSettings(IntPtr interfaceHandle, Byte alternateInterfaceNumber, ref UsbInterfaceDescriptor usbAltInterfaceDescriptor);
 public UsbAlternateInterface(UsbInterfaceDescriptor descriptor)
 {
     Descriptor = descriptor;
 }
Exemplo n.º 10
0
 internal static extern Boolean WinUsb_QueryInterfaceSettings(IntPtr interfaceHandle, Byte alternateInterfaceNumber, ref UsbInterfaceDescriptor usbAltInterfaceDescriptor);