Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
 public RequestType(UsbEndpointDirection dir, UsbRequestType type, UsbRequestRecipient rec)
 {
     value = (byte)((byte)dir | (byte)type | (byte)rec);
 }
Ejemplo n.º 3
0
        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));
            }
        }
        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));
            }
        }