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; } }
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? }