comparison USBLib/Communication/LibUsbDotNet.cs @ 67:2d16447eff12

Simplified USB communication code, added functions to abort pipe transfers
author Ivo Smits <Ivo@UCIS.nl>
date Wed, 16 Oct 2013 01:11:49 +0200
parents abe0d55a2201
children
comparison
equal deleted inserted replaced
66:b7bc27c6734e 67:2d16447eff12
32 transferLength = 0; 32 transferLength = 0;
33 return false; 33 return false;
34 } 34 }
35 } 35 }
36 public bool ControlTransfer(ref UsbSetupPacket setupPacket, Byte[] buffer, int bufferLength, out int lengthTransferred) { 36 public bool ControlTransfer(ref UsbSetupPacket setupPacket, Byte[] buffer, int bufferLength, out int lengthTransferred) {
37 if ((setupPacket.RequestType & 128) != 0) { 37 lengthTransferred = Device.ControlTransfer((UsbControlRequestType)setupPacket.RequestType, setupPacket.Request, setupPacket.Value, setupPacket.Index, buffer, 0, bufferLength);
38 lengthTransferred = Device.ControlRead((UsbControlRequestType)setupPacket.RequestType, setupPacket.Request, setupPacket.Value, setupPacket.Index, buffer, 0, bufferLength);
39 } else {
40 lengthTransferred = Device.ControlWrite((UsbControlRequestType)setupPacket.RequestType, setupPacket.Request, setupPacket.Value, setupPacket.Index, buffer, 0, bufferLength);
41 }
42 return true; 38 return true;
43 } 39 }
44 public UsbEndpointReader OpenEndpointReader(ReadEndpointID readEndpointID, int buffersize, EndpointType endpointType) { 40 public UsbEndpointReader OpenEndpointReader(ReadEndpointID readEndpointID, int buffersize, EndpointType endpointType) {
45 UsbEndpointReader reader = new UsbEndpointReader(Device, (Byte)readEndpointID, endpointType); 41 UsbEndpointReader reader = new UsbEndpointReader(Device, (Byte)readEndpointID, endpointType);
46 reader.ReadBufferSize = buffersize; 42 reader.ReadBufferSize = buffersize;
137 EndpointID = epid; 133 EndpointID = epid;
138 EndpointType = eptype; 134 EndpointType = eptype;
139 ReadBufferSize = 4096; 135 ReadBufferSize = 4096;
140 } 136 }
141 public ErrorCode Read(byte[] buffer, int offset, int count, int timeout, out int transferLength) { 137 public ErrorCode Read(byte[] buffer, int offset, int count, int timeout, out int transferLength) {
142 switch (EndpointType) { 138 transferLength = Device.PipeTransfer(EndpointID, buffer, offset, count);
143 case EndpointType.Bulk: transferLength = Device.BulkRead(EndpointID, buffer, offset, count); break;
144 case EndpointType.Interrupt: transferLength = Device.InterruptRead(EndpointID, buffer, offset, count); break;
145 default: transferLength = 0; return ErrorCode.Error;
146 }
147 return ErrorCode.Ok; 139 return ErrorCode.Ok;
148 } 140 }
149 public void Dispose() { DataReceivedEnabled = false; } 141 public void Dispose() { DataReceivedEnabled = false; }
150 142
151 private bool mDataReceivedEnabled; 143 private bool mDataReceivedEnabled;