| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
As of 2.6.26, the descriptors file now includes all descriptors, not
just the active one.
|
|
|
|
|
| |
Suggested by David Zeuthen. This allows multiple libraries in the same
process to independently use libusb without interfering.
|
| |
|
|
|
|
| |
Add a THANKS file, make copyright notices easily accessible, update TODO
|
|
|
|
|
|
| |
Now offers a mechanism to wait for events while another thread is
doing the event handling. Complicates things for MT async apps, but
then again it's a bit of a tricky combination to start with.
|
|
|
|
| |
Hopefully one of the last API tweaks...
|
|
|
|
| |
Hopefully comprehensive enough for people to get started.
|
|
|
|
|
| |
This involved moving from select() to poll() because there is no way to
distinguish usbfs's POLLERR condition with select().
|
| |
|
|
|
|
|
|
|
|
| |
Document behaviour where host-endian and bus-endian (little) should be
used respectively.
Also remove packed attribute from libusb_control_setup as all fields
are naturally aligned.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
libusb no longer caches descriptors in libusb_device but backends are
intended to be able to provide copies from memory. In the common linux
case we can use sysfs.
|
|
|
|
| |
Partially based on some libusb-devel discussions
|
| |
|
|
|
|
|
| |
We were allocating the wrong number of URBs for transfers of size
multiples of 16k.
|
| |
|
|
|
|
|
| |
Write access is not needed until later.
Also fix handling of open() error code.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This results in a significant performance increase for bulk transfers
larger than 16kb, and fixes a bug where data would be spliced and mixed
between two simultaneously submitted transfers to the same endpoint.
It also allows isochronous transfers larger than 16kb to be submitted.
This commit also improves cancellation - the library now understands
what is going on.
|
|
|
|
| |
Make it clear that apps should not mess with these structures
|
| |
|
|
|
|
|
|
|
|
|
| |
Due to variable-sized structures, this involved changing allocation
mechanism. All transfers must now be allocated and freed through
libusb.
A synchronous function is missing, and I could do with writing a few
more helper functions to simplify things.
|
| |
|
|
|
|
|
| |
The callback may free the transfer, in which case we can't read the flags
after it has returned.
|
|
|
|
|
| |
Hopefully mostly complete. Some constants were renamed and move into
enums.
|
|
|
|
| |
This also includes a libusb_get_pollfds API change
|
| |
|
|
|
|
| |
Based on feedback from Tim Roberts
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Leads to some hefty API changes. Now we're much more similar to the
Linux kernel model.
Problems with dealing with asynchronous control transfers are passed
on to the user, basically you must allocate a buffer, start with the
setup, and put the data after. This won't make much sense until
documented (soon...)
|
|
|
|
|
|
|
| |
Now refer to everything as "transfers" as consistent with the USB spec
libusb_transfer is now a kind of transfer handle. To reduce confusion
with libusb_bulk_transfer and libusb_control_transfer, those have been
renamed to libusb_{control,bulk}_transfer_request.
|
|
|
|
|
| |
/dev/bus/usb is a relatively new thing probably not present on every
system
|
|
|
|
|
|
|
|
| |
Devices are now assigned a session ID (currently busnum:devaddr) which
is used to distinguish unique devices.
Now multiple callers of libusb_get_device_list will get the same
libusb_device structure instances.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
libusb_find_devices and libusb_get_devices are no more
libusb_get_device_list obtains a list of libusb_device structures for all
known devices in the system.
Each libusb_device now has a reference count, defaulting to 1 on
instantiation. The reference count of 1 refers to the fact that it is
present in the list in this scenario.
Opening a device adds a pointer to the libusb_device structure in the
handle, so that also adds a reference. Closing the device removes that
reference.
The function to free the device list can optionally unref all the devices
inside.
In future we will make the libusb_device instances all "global" so that if
the app calls get_device_list twice it actually gets the same libusb_device
structure references back. This way we can start to track disconnects, and
we can investigate adding a unique "session ID" to each libusb_device, an
identifier guaranteed to be unique to that device until reboot.
|
|
|
|
|
| |
Applications can now be notified when they should start and stop polling
new file descriptors.
|
| |
|
|
|
|
|
|
|
| |
Instead of timers, add a mechanism for informing the parent app when the
next timeout is due to happen, so that it can call us at that time.
As we no longer use signals, signalfd has also been removed.
|
|
|
|
|
| |
We don't need to use signalfd for this functionality because we can poll
the file descriptors for write events.
|
|
|
|
|
| |
Start listing the things I want to discuss/reconsider before 1.0 API
is final.
|
| |
|
|
Basic library structure which supports enumerating detected USB devices
|