示例#1
0
        private void _SendMassStorageResponse(byte[] request, byte[] outgoingData, byte status)
        {
            //Build data packet, if we have one
            if (outgoingData != null && outgoingData.Length > 0)
            {
                //Split this up into 0x200 byte packets
                int bytesLeft  = outgoingData.Length;
                int bytesSoFar = 0;
                while (bytesLeft > 0)
                {
                    int count = Math.Min(bytesLeft, 0x200);
                    _device.WriteOutgoingData(0x01, outgoingData, bytesSoFar, count);
                    bytesSoFar += count;
                    bytesLeft  -= count;
                }
            }

            //Send CSW
            var response = new byte[13];

            response[0] = (byte)'U';
            response[1] = (byte)'S';
            response[2] = (byte)'B';
            response[3] = (byte)'S';
            response[4] = request[4];
            response[5] = request[5];
            response[6] = request[6];
            response[7] = request[7];
            _device.WriteOutgoingData(0x01, response);
        }
示例#2
0
        private void _SendMessages()
        {
            while (true)
            {
                try
                {
                    if (_configured)
                    {
                        byte[] msg = null;

                        lock (_messages)
                        {
                            if (_messages.Count > 0)
                            {
                                msg = _messages.Dequeue();
                            }
                        }

                        if (msg != null)
                        {
                            _device.WriteOutgoingData(0x01, msg);
                        }
                    }
                }
                catch
                {
                    //Don't care...
                }

                Thread.Sleep(_waitTimeMs);
            }
        }
示例#3
0
        private void DeviceForwarder_DataReceived(object sender, EndpointDataEventArgs e)
        {
            //Send it out to the host
            UsbEndpointReader reader = sender as UsbEndpointReader;

            if (reader != null)
            {
                _device.WriteOutgoingData(reader.EpNum & 0x7F, e.Buffer, 0, e.Count);
            }
        }