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