private bool ControlTransfer(UsbRequestType requestType, UsbRequestRecipient requestRecipient, UsbEndpointDirection requestDirection, byte request, short value, short index, short length, byte[] data) { var lengthTransferred = -1; var requestTypeByte = (byte)requestType; var requestRecipientByte = (byte)requestRecipient; var requestDirectionByte = (byte)requestDirection; var fullRequestTypeByte = (byte)(requestTypeByte | requestRecipientByte | requestDirectionByte); var setupPacket = new UsbSetupPacket(fullRequestTypeByte, request, value, index, length); if (data == null) { data = new byte[0]; } return(MyUsbDevice.ControlTransfer(ref setupPacket, data, data.Length, out lengthTransferred)); }
private void ControlTransfer(UsbRequestType requestType, UsbRequestRecipient requestRecipient, UsbEndpointDirection requestDirection, byte request, short value, short index, short length, byte[] data) { if (!IsOpen) { const string message = "CrazyradioDriver is not open."; Log.Error(message); throw new CrazyradioDriverException(message); } var lengthTransferred = -1; var messageFailed = true; var requestTypeByte = (byte)requestType; var requestRecipientByte = (byte)requestRecipient; var requestDirectionByte = (byte)requestDirection; var fullRequestTypeByte = (byte)(requestTypeByte | requestRecipientByte | requestDirectionByte); var setupPacket = new UsbSetupPacket(fullRequestTypeByte, request, value, index, length); var controlTransferInputsString = string.Format("Control transfer inputs: \n\tFullRequestTypeByte: 0x{0:x2} => (0x{1:x2} (RequestType: {2}) | 0x{3:x2} (RequestRecipient: {4}) | 0x{5:x2} (RequestDirection: {6})), \n\tRequest: 0x{7:x2}, \n\tValue: {8}, \n\tIndex: {9}, \n\tLength: {10}, \n\tData: [{11}].", fullRequestTypeByte, requestTypeByte, requestType, requestRecipientByte, requestRecipient, requestDirectionByte, requestDirection, request, value, index, length, BitConverter.ToString(data)); Log.Debug(controlTransferInputsString); Log.Debug("Sending UsbDevice a control transfer message."); messageFailed = !_crazyradioUsbDevice.ControlTransfer(ref setupPacket, data, data.Length, out lengthTransferred); if (messageFailed) { var message = string.Format("Failed sending UsbDevice a control message. {0}\nUsbErrorMessage:\n{1}", controlTransferInputsString, UsbDevice.LastErrorString); Log.Error(message); throw new CrazyradioDriverException(message); } else { Log.DebugFormat("Successfully sent UsbDevice a control message. \n\tLength transferred: {0}, \n\tData: [{1}].", lengthTransferred, BitConverter.ToString(data)); } }
public RequestType(UsbEndpointDirection dir, UsbRequestType type, UsbRequestRecipient rec) { value = (byte)((byte)dir | (byte)type | (byte)rec); }
private void ControlTransfer(UsbRequestType requestType, UsbRequestRecipient requestRecipient, UsbEndpointDirection requestDirection, byte request, short value, short index, short length, byte[] data) { if (!IsOpen) { const string message = "Crazyradio USB dongle is not open."; Log.Error(message); throw new CrazyradioDriverException(message); } var lengthTransferred = -1; var messageFailed = true; var requestTypeByte = (byte) requestType; var requestRecipientByte = (byte) requestRecipient; var requestDirectionByte = (byte) requestDirection; var fullRequestTypeByte = (byte) (requestTypeByte | requestRecipientByte | requestDirectionByte); var setupPacket = new UsbSetupPacket(fullRequestTypeByte, request, value, index, length); var controlTransferInputsString = string.Format("Control transfer inputs: \n\tFullRequestTypeByte: 0x{0:x2} => (0x{1:x2} (RequestType: {2}) | 0x{3:x2} (RequestRecipient: {4}) | 0x{5:x2} (RequestDirection: {6})), \n\tRequest: 0x{7:x2}, \n\tValue: {8}, \n\tIndex: {9}, \n\tLength: {10}, \n\tData: [{11}].", fullRequestTypeByte, requestTypeByte, requestType, requestRecipientByte, requestRecipient, requestDirectionByte, requestDirection, request, value, index, length, BitConverter.ToString(data)); Log.Debug(controlTransferInputsString); Log.Debug("Sending Crazyradio USB dongle a control transfer message."); messageFailed = !_crazyradioUsbDevice.ControlTransfer(ref setupPacket, data, data.Length, out lengthTransferred); if (messageFailed) { var message = string.Format("Failed sending Crazyradio USB dongle a control message. {0}\nUsbErrorMessage:\n{1}", controlTransferInputsString, UsbDevice.LastErrorString); Log.Error(message); throw new CrazyradioDriverException(message); } else { Log.DebugFormat("Successfully sent Crazyradio USB dongle a control message. \n\tLength transferred: {0}, \n\tData: [{1}].", lengthTransferred, BitConverter.ToString(data)); } }