/// <summary> /// Creates a new transfer queue instance. /// </summary> /// <param name="endpointBase">The endpoint to transfer data to/from.</param> /// <param name="maxOutstandingIO">The number of transfers to <see cref="UsbTransfer.Submit"/> before waiting for a completion.</param> /// <param name="bufferSize">The size of each data buffer.</param> /// <param name="timeout">The maximum time to wait for each transfer.</param> /// <param name="isoPacketSize">For isochronous use only. The iso packet size. If 0, the endpoints max packet size is used.</param> public UsbTransferQueue(UsbEndpointBase endpointBase, int maxOutstandingIO, int bufferSize, int timeout, int isoPacketSize) { EndpointBase = endpointBase; IsoPacketSize = isoPacketSize; Timeout = timeout; BufferSize = bufferSize; MaxOutstandingIO = maxOutstandingIO; mTransferHandles = new Handle[maxOutstandingIO]; mBuffer = new byte[maxOutstandingIO][]; for (int i = 0; i < maxOutstandingIO; i++) { mBuffer[i] = new byte[bufferSize]; } IsoPacketSize = isoPacketSize > 0 ? isoPacketSize : endpointBase.EndpointInfo.Descriptor.MaxPacketSize; }
/// <summary></summary> protected UsbTransfer(UsbEndpointBase endpointBase) { mEndpointBase = endpointBase; }