Mercurial > hg > ucis.core
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; |