public UwpUsbInterface(
            windowsUsbInterface usbInterface,
            PerformControlTransferAsync performControlTransferAsync,
            IDataReceiver dataReceiver,
            ILoggerFactory loggerFactory,
            ushort?readBuffersize  = null,
            ushort?writeBufferSize = null) : base(
                performControlTransferAsync,
                loggerFactory.CreateLogger <UwpUsbInterface>(),
                readBuffersize,
                writeBufferSize)
        {
            UsbInterface = usbInterface ?? throw new ArgumentNullException(nameof(usbInterface));

            foreach (var inPipe in usbInterface.InterruptInPipes)
            {
                var uwpUsbInterfaceEndpoint = new UwpUsbInterfaceInterruptReadEndpoint(
                    inPipe,
                    dataReceiver,
                    loggerFactory.CreateLogger <UwpUsbInterfaceInterruptReadEndpoint>());

                UsbInterfaceEndpoints.Add(uwpUsbInterfaceEndpoint);
                InterruptReadEndpoint ??= uwpUsbInterfaceEndpoint;
            }

            foreach (var outPipe in usbInterface.InterruptOutPipes)
            {
                var uwpUsbInterfaceEndpoint =
                    new UwpUsbInterfaceEndpoint <UsbInterruptOutPipe>(
                        outPipe,
                        loggerFactory.CreateLogger <UwpUsbInterfaceEndpoint <UsbInterruptOutPipe> >());
                UsbInterfaceEndpoints.Add(uwpUsbInterfaceEndpoint);
                InterruptWriteEndpoint ??= uwpUsbInterfaceEndpoint;
            }

            foreach (var inPipe in usbInterface.BulkInPipes)
            {
                var uwpUsbInterfaceEndpoint = new UwpUsbInterfaceEndpoint <UsbBulkInPipe>(inPipe,
                                                                                          loggerFactory.CreateLogger <UwpUsbInterfaceEndpoint <UsbBulkInPipe> >());
                UsbInterfaceEndpoints.Add(uwpUsbInterfaceEndpoint);
                ReadEndpoint ??= uwpUsbInterfaceEndpoint;
            }

            foreach (var outPipe in usbInterface.BulkOutPipes)
            {
                var uwpUsbInterfaceEndpoint = new UwpUsbInterfaceEndpoint <UsbBulkOutPipe>(outPipe,
                                                                                           loggerFactory.CreateLogger <UwpUsbInterfaceEndpoint <UsbBulkOutPipe> >());
                UsbInterfaceEndpoints.Add(uwpUsbInterfaceEndpoint);
                WriteEndpoint ??= uwpUsbInterfaceEndpoint;
            }
        }
Example #2
0
        public UWPUsbInterface(windowsUsbInterface usbInterface, ILogger logger, ITracer tracer, ushort?readBuffersize, ushort?writeBufferSize) : base(logger, tracer, readBuffersize, writeBufferSize)
        {
            UsbInterface = usbInterface ?? throw new ArgumentNullException(nameof(usbInterface));

            foreach (var inPipe in usbInterface.InterruptInPipes)
            {
                var uwpUsbInterfaceEndpoint = new UWPUsbInterfaceInterruptReadEndpoint(inPipe, Logger, Tracer);
                UsbInterfaceEndpoints.Add(uwpUsbInterfaceEndpoint);
                if (InterruptReadEndpoint == null)
                {
                    InterruptReadEndpoint = uwpUsbInterfaceEndpoint;
                }
            }

            foreach (var outPipe in usbInterface.InterruptOutPipes)
            {
                var uwpUsbInterfaceEndpoint = new UWPUsbInterfaceEndpoint <UsbInterruptOutPipe>(outPipe);
                UsbInterfaceEndpoints.Add(uwpUsbInterfaceEndpoint);
                if (InterruptWriteEndpoint == null)
                {
                    InterruptWriteEndpoint = uwpUsbInterfaceEndpoint;
                }
            }

            foreach (var inPipe in usbInterface.BulkInPipes)
            {
                var uwpUsbInterfaceEndpoint = new UWPUsbInterfaceEndpoint <UsbBulkInPipe>(inPipe);
                UsbInterfaceEndpoints.Add(uwpUsbInterfaceEndpoint);
                if (ReadEndpoint == null)
                {
                    ReadEndpoint = uwpUsbInterfaceEndpoint;
                }
            }

            foreach (var outPipe in usbInterface.BulkOutPipes)
            {
                var uwpUsbInterfaceEndpoint = new UWPUsbInterfaceEndpoint <UsbBulkOutPipe>(outPipe);
                UsbInterfaceEndpoints.Add(uwpUsbInterfaceEndpoint);
                if (WriteEndpoint == null)
                {
                    WriteEndpoint = uwpUsbInterfaceEndpoint;
                }
            }

            //TODO: Why does not UWP not support Control Transfer?
        }