Beispiel #1
0
        public override void EndWrite(IAsyncResult asyncResult)
        {
            UsbStreamAsyncTransfer asyncTransfer = (UsbStreamAsyncTransfer)asyncResult;

            asyncTransfer.mCompleteEvent.WaitOne();

            if (asyncTransfer.Result == ErrorCode.Success && asyncTransfer.mCount == asyncTransfer.TransferredLength)
            {
                return;
            }

            if (asyncTransfer.Result == ErrorCode.IoTimedOut)
            {
                throw new TimeoutException(String.Format("{0}:Endpoint 0x{1:X2} IO timed out.", asyncTransfer.Result, mUsbEndpoint.EpNum));
            }
            if (asyncTransfer.Result == ErrorCode.IoCancelled)
            {
                throw new IOCancelledException(String.Format("{0}:Endpoint 0x{1:X2} IO was cancelled.", asyncTransfer.Result, mUsbEndpoint.EpNum));
            }
            if (asyncTransfer.mCount != asyncTransfer.TransferredLength)
            {
                throw new IOException(String.Format("{0}:Failed writing {1} byte(s) to endpoint 0x{2:X2}.",
                                                    asyncTransfer.Result,
                                                    asyncTransfer.mCount - asyncTransfer.TransferredLength,
                                                    mUsbEndpoint.EpNum));
            }

            throw new IOException(String.Format("{0}:Failed writing to endpoint 0x{1:X2}", asyncTransfer.Result, mUsbEndpoint.EpNum));
        }
Beispiel #2
0
        public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
        {
            UsbStreamAsyncTransfer asyncTransfer = new UsbStreamAsyncTransfer(mUsbEndpoint, buffer, offset, count, callback, state, WriteTimeout);

            WaitThread.Start(asyncTransfer);
            return(asyncTransfer);
        }
Beispiel #3
0
        public override int EndRead(IAsyncResult asyncResult)
        {
            UsbStreamAsyncTransfer asyncTransfer = (UsbStreamAsyncTransfer)asyncResult;

            asyncTransfer.mCompleteEvent.WaitOne();

            if (asyncTransfer.Result == ErrorCode.Success)
            {
                return(asyncTransfer.TransferredLength);
            }

            if (asyncTransfer.Result == ErrorCode.IoTimedOut)
            {
                throw new TimeoutException(String.Format("{0}:Endpoint 0x{1:X2} IO timed out.", asyncTransfer.Result, mUsbEndpoint.EpNum));
            }
            if (asyncTransfer.Result == ErrorCode.IoCancelled)
            {
                throw new IOCancelledException(String.Format("{0}:Endpoint 0x{1:X2} IO was cancelled.", asyncTransfer.Result, mUsbEndpoint.EpNum));
            }

            throw new IOException(string.Format("{0}:Failed reading from endpoint:{1}", asyncTransfer.Result, mUsbEndpoint.EpNum));
        }
Beispiel #4
0
        private static void AsyncTransferFn(object oContext)
        {
            UsbStreamAsyncTransfer context = oContext as UsbStreamAsyncTransfer;

            context.SyncTransfer();
        }
Beispiel #5
0
 public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
 {
     UsbStreamAsyncTransfer asyncTransfer = new UsbStreamAsyncTransfer(mUsbEndpoint, buffer, offset, count, callback, state, WriteTimeout);
     WaitThread.Start(asyncTransfer);
     return asyncTransfer;
 }