Commit Graph

75 Commits

Author SHA1 Message Date
Sebastian Zagrodzki
0ba09a9942 Move device handle to newUSBTransfer args, remove separate attach() 2017-02-14 01:24:20 +01:00
Sebastian Zagrodzki
16f99ed0b0 Merge remote-tracking branch 'origin/master' into async_transfers_everywhere 2017-02-14 01:12:35 +01:00
Sebastian Zagrodzki
1b4014cb28 Set the pointer type, to make the compiler happy, otherwise it might
complain about the incompatible pointer types.
2017-02-13 19:25:24 +01:00
Sebastian Zagrodzki
d4d7011a44 Don't assume libusb headers are always in libusb-1.0.
Use pkg-config to add correct include paths for libusb regardless of the
platform.
2017-02-13 17:08:46 +01:00
Sebastian Zagrodzki
e9d2ce49f0 Add missing attach. 2017-02-13 03:17:29 +01:00
Sebastian Zagrodzki
931a15849b set the same channel in t.xfer.user_data as in t.done. 2017-02-13 03:14:38 +01:00
Sebastian Zagrodzki
ea1db2d56a move to updated transfer init protocol 2017-02-13 03:02:32 +01:00
Sebastian Zagrodzki
4a64c18350 move newUSBTransfer as a vanilla function to transfer.go.
Initialize all static params at new.
2017-02-13 03:01:30 +01:00
Sebastian Zagrodzki
a47809fda8 Simplify the C part even more - the buffer that xfer uses for
transferring data is the same as the one that was created in
newUSBTransfer.
2017-02-13 02:50:47 +01:00
Sebastian Zagrodzki
83a4778988 wait() does not need the buffer passed explicitly, it's already stored
in t.buf.
2017-02-10 22:32:16 +01:00
Sebastian Zagrodzki
1860441a7b iso.go is no longer needed, the only iso-specific part lives in
transfer.c
2017-02-10 22:12:21 +01:00
Sebastian Zagrodzki
31b3ac1c67 move iso.c to transfer.c, as it's used for all transfers.
move transfer callback to transfer.go.
2017-02-10 22:11:54 +01:00
Sebastian Zagrodzki
d7ed6d67e6 Rename iso_callback to transfer_callback, it's used for all transfer
types.
2017-02-10 22:08:39 +01:00
Sebastian Zagrodzki
87abb704d7 Make all transfer types use a generic endpoint.transfer() function
that uses libusb's asynchronous interface.
2017-02-10 22:06:57 +01:00
Sebastian Zagrodzki
c9c2757fe6 Replace the libusb_bulk_transfer with the same prepare-submit-wait
routine iso transfers use.
2017-02-10 21:46:12 +01:00
Sebastian Zagrodzki
9e50cd8c1c Rename extract_data to extract_iso_data, add extract_data for use by
other transfer types.
2017-02-10 21:45:26 +01:00
Sebastian Zagrodzki
b4393ac372 Merge branch 'rawread_benchmark' 2017-02-09 22:52:55 +01:00
Sebastian Zagrodzki
c792f8e028 replace allocTransfer with a new more generic newUSBTransfer 2017-02-09 22:51:28 +01:00
Sebastian Zagrodzki
de92c7047b make methods of usbTransfer private 2017-02-09 22:38:16 +01:00
Sebastian Zagrodzki
80b2741a2c Rename Transfer to usbTransfer, it's internal to gousb.
Move usbTransfer and it's methods to transfer.go, it's not only used by
iso transfers.
2017-02-09 22:36:51 +01:00
Sebastian Zagrodzki
66a1f45cd9 Remove the artificial limit. The worst case is a longer timeout for the
transfer is required.
2017-02-08 23:29:17 +01:00
Sebastian Zagrodzki
c27a77b547 Pass the max buffer size down to the alloc_transfer. Use the number
of iso packets matching the buffer size. This guarantees that the
transfer size is smaller or equal to the buffer.
Device will transfer less data if iso transfer response does not utilize the
maximum available number of iso packets per microframe or doesn't fill
the packets entirely.
2017-02-08 23:02:08 +01:00
Sebastian Zagrodzki
a35725f4fb When extracting transfer data, pay attention to the size of the buffer
provided by the user, which may be smaller than the length of data
received in the transfer.
2017-02-08 22:37:12 +01:00
Sebastian Zagrodzki
a19ac0f654 Per http://www.beyondlogic.org/usbnutshell/usb5.shtml#EndpointDescriptors:
bits 0-3 are endpoint number, 4-6 reserved, set to zero, bit 7 is
direction. Bits 0-3 is 0x0f.
2017-02-08 22:35:45 +01:00
Sebastian Zagrodzki
1800586f77 Merge branch 'master' into authors_and_contributing 2017-02-07 09:44:41 +01:00
zagrodzki
cd91046028 Merge pull request #21 from thorduri/iso-callback-prototype
Appease C99 by providing a prototype for iso_callback().
2017-02-07 08:24:36 +01:00
Sebastian Zagrodzki
beb4fdbac5 Update copyright notes for multiple contributors. 2017-02-07 07:37:57 +01:00
Sebastian Zagrodzki
397a363de1 Revert "Ditto for device_test, move to usb_test package."
This reverts commit c1b87403fa.
2017-02-06 20:26:32 +01:00
Sebastian Zagrodzki
aafad620e6 Revert "Move usb_test to a separate package, in line with opensource Go"
This reverts commit 4d60ebb065.
2017-02-06 20:26:23 +01:00
Sebastian Zagrodzki
9849c8088e Add a reference to libusb ticket on incorrect max iso packet size. 2017-02-05 16:49:02 +01:00
Sebastian Zagrodzki
c1b87403fa Ditto for device_test, move to usb_test package. 2017-02-05 16:46:56 +01:00
Sebastian Zagrodzki
4d60ebb065 Move usb_test to a separate package, in line with opensource Go
expectations. Multiple packages per directory are not supported in this
realm ;) And with a separate package, the dot import seems unnecessary.
2017-02-05 16:29:22 +01:00
Sebastian Zagrodzki
f13728c6e1 Set the MaxIsoPacket field in the endpoint info if the endpoint is
an isochronous endpoint. Use MaxIsoPacket as the iso packet size
when preparing the iso transfer.
2017-02-05 16:20:58 +01:00
Sebastian Zagrodzki
4319ef2cc2 Revert "Use the calculated max iso packet size."
The libusb_get_max_iso_packet_size ignores the endpoint information and
will return the same size for all endpoints, even if the current
alternative configuration does not support given size.

This reverts commit a6e284610b.
2017-02-05 16:00:53 +01:00
Sebastian Zagrodzki
a6e284610b Use the calculated max iso packet size. 2017-02-05 04:16:57 +01:00
Thordur Bjornsson
82210bc585 Aappease C99 by providing a prototype for iso_callback(). 2016-09-26 17:51:26 +02:00
Kyle Lemons
8736c99b74 Whitelist tests for travis-ci 2016-04-03 10:25:58 -07:00
Kyle Lemons
0042b0dd4f report correct error during Enum failure 2016-04-02 13:20:31 -07:00
Kyle Lemons
497c20341d idiomatic slice append 2016-04-02 13:19:59 -07:00
nodtem66
3138826f8a fix cgo build directive 2015-04-08 01:25:20 +07:00
nodtem66
c7d3dad580 add unit test device_test.go 2015-03-04 01:36:51 +07:00
nodtem66
f3b93aa5fa handle error OpenDeviceWithVidPid and add GetStringDescriptor 2015-03-04 01:32:24 +07:00
nodtem66
4bf19c7f86 undo the edited usb_test.go in TestMultipleContexts to origin 2015-03-03 00:24:24 +07:00
nodtem66
897ea727f3 tested for libusb-1.0.19 on windows (MinGw) 2015-03-03 00:20:31 +07:00
Kyle Lemons
b9f2aa720b Fix up usb to pass reliably and to work cross-platform 2013-08-14 19:38:57 -07:00
Kyle Lemons
ca13741ba1 See https://github.com/kylelemons/gousb/pull/7
Merge branch 'fix-context-close-race' of https://github.com/krasin/gousb
2013-08-14 19:23:18 -07:00
Kyle Lemons
96f1a0a774 Update LICENSE 2013-08-14 19:22:55 -07:00
Ivan Krasin
f0ae807096 Fix race condition with C.libusb_handle_events that might still being called while libusb_exit is executed. Use C.libusb_handle_events_timeout_completed which accepts timeouts and pass 100 ms timeout. This is the recommended way to deal with this issue, see http://libusb.sourceforge.net/api-1.0/group__poll.html#ga43e52b912a760b41a0cf8a4a472fbd5b and http://libusb.sourceforge.net/api-1.0/group__poll.html#ga4989086e3f0327f3886a4c474ec7c327 2013-08-14 00:34:00 -07:00
Ivan Krasin
e5e703175c Add a test case that triggers 'handle_events: error: libusb: unknown error [code -99]' 2013-08-14 00:25:49 -07:00
Kyle Lemons
f0081d8ff9 add xbox example and make some changes to support it 2013-06-22 08:38:58 -07:00