platform/upstream/libusb.git
12 years agoautotools: LT_LANG([Windows Resource]) makes windres check redundant
Pete Batard [Mon, 26 Mar 2012 22:34:25 +0000 (23:34 +0100)]
autotools: LT_LANG([Windows Resource]) makes windres check redundant

12 years agoExamples: add xusb sample
Pete Batard [Mon, 26 Mar 2012 22:48:49 +0000 (23:48 +0100)]
Examples: add xusb sample

* Also improvements to WDK build scripts:
  cd to original dir on error, use 2 cores if available

12 years agoVS2005: Bring x86_64 output directories in line with x86_32
Pete Batard [Mon, 26 Mar 2012 23:03:07 +0000 (00:03 +0100)]
VS2005: Bring x86_64 output directories in line with x86_32

12 years agoLinux: fix inaccurate comment
Hans de Goede [Mon, 26 Mar 2012 22:01:48 +0000 (23:01 +0100)]
Linux: fix inaccurate comment

* We don't stop on urbs/iso pkts with less data then requested

12 years agoLinux: Remove unneeded status assignation
Hans de Goede [Mon, 26 Mar 2012 22:00:28 +0000 (23:00 +0100)]
Linux: Remove unneeded status assignation

* status value was never used

12 years agoLinux: Translate iso pkt status codes to libusb transfer status codes
Hans de Goede [Mon, 26 Mar 2012 21:54:12 +0000 (22:54 +0100)]
Linux: Translate iso pkt status codes to libusb transfer status codes

* Linux negative errno from iso pkts status must be translated and reported.

12 years agoLinux: Fix handling of urb status codes
Hans de Goede [Mon, 26 Mar 2012 21:51:56 +0000 (22:51 +0100)]
Linux: Fix handling of urb status codes

* Adds EOVERFLOW handling in handle_control_completion
* Removes handling of codes that can never occur on an iso urb

12 years agoLinux: Don't print errors when cancel_transfer fails with NOT_FOUND
Hans de Goede [Mon, 26 Mar 2012 20:37:03 +0000 (21:37 +0100)]
Linux: Don't print errors when cancel_transfer fails with NOT_FOUND

* Under some cricumstances, LIBUSB_ERROR_NOT_FOUND is an expected
  return value for cancel_transfer so printing an error is undesirable.

12 years agoLinux: Fix cancel_transfer return value when cancelling a multi-urb transfer
Hans de Goede [Mon, 26 Mar 2012 20:33:39 +0000 (21:33 +0100)]
Linux: Fix cancel_transfer return value when cancelling a multi-urb transfer

* if we've successfully cancelled the last urb, and then another urb
  fails with errno == EINVAL, we shouldn't return LIBUSB_ERROR_NOT_FOUND

12 years agolibusbi.h: Add IS_EPIN() IS_EPOUT() IS_XFERIN() and IS_XFEROUT() macros
Peter Stuge [Thu, 22 Mar 2012 00:52:59 +0000 (01:52 +0100)]
libusbi.h: Add IS_EPIN() IS_EPOUT() IS_XFERIN() and IS_XFEROUT() macros

The macros make backend code a little simpler to read, since the
transfer and endpoint direction is checked in several places across
the supported platforms.

12 years agoAdd LIBUSB_TRANSFER_ADD_ZERO_PACKET flag to indicate need for ZLP
Peter Stuge [Wed, 22 Feb 2012 13:21:54 +0000 (14:21 +0100)]
Add LIBUSB_TRANSFER_ADD_ZERO_PACKET flag to indicate need for ZLP

Some protocols which use USB require an extra zero length data packet
to signal end-of-transfer on bulk endpoints, if the last data packet
is exactly wMaxPacketSize bytes long.

This flag allows applications to inform libusb about this requirement,
so that libusb can handle the issue transparently.

At the moment the new flag is only supported on Linux, and submitting
a transfer with the flag set returns an error at submit time on other
systems. Hopefully implementations will soon follow for other systems.

References #6.

12 years agolibusb.h: Add comma after last value in enums to ease future expansion
Peter Stuge [Sun, 19 Feb 2012 05:58:16 +0000 (06:58 +0100)]
libusb.h: Add comma after last value in enums to ease future expansion

12 years agoLinux: Rework bulk continuation check to generic kernel version check
Peter Stuge [Sun, 19 Feb 2012 04:39:33 +0000 (05:39 +0100)]
Linux: Rework bulk continuation check to generic kernel version check

The old check_flag_bulk_continuation() tested for one specific running
kernel version. The new kernel_version_ge() instead allows to test the
running kernel version against major, minor and sublevel parameters.

12 years agoOpenBSD: Correctly catch attempts to do isochronous OUT transfers
Peter Stuge [Sun, 19 Feb 2012 04:32:10 +0000 (05:32 +0100)]
OpenBSD: Correctly catch attempts to do isochronous OUT transfers

LIBUSB_ENDPOINT_OUT is the value of the direction bit, which is 0 for
OUT transfers, so the previous condition could never evaluate to true.

12 years agoDarwin: Do not reject devices with product id 0x0000
Peter Stuge [Sat, 18 Feb 2012 23:42:20 +0000 (00:42 +0100)]
Darwin: Do not reject devices with product id 0x0000

Fixes #128.

12 years agoDo not call timerfd functions when timerfd is not being used
Peter Stuge [Mon, 13 Feb 2012 15:59:51 +0000 (16:59 +0100)]
Do not call timerfd functions when timerfd is not being used

When libusb was built with timerfd support but used on a system
without timerfd support the library would hang indefinitely on
completion of the first transfer, since timerfd functions were
being called unconditionally and the error returned when timerfd
was not being used caused a confused internal state.

Many thanks to Ivo Smits for looking into the issue, proposing
an initial solution, and helping with testing! Fixes #73.

12 years agoWindows: Fix MSVC6 IDE warning on line continuation in libusb-1.0.rc
Michael Plante [Sun, 12 Feb 2012 18:49:35 +0000 (13:49 -0500)]
Windows: Fix MSVC6 IDE warning on line continuation in libusb-1.0.rc

* libusb\libusb-1.0.rc(21): Could not find the file LIBUSB_RC.
* only shows up first time after opening workspace.
* shows up on either build or clean.
* not actually due to rc.exe, but prior to it.
* probably an IDE bug.
* does not show up when running an exported makefile.

Signed-off-by: Michael Plante <michael.plante@gmail.com>
12 years agoWindows: Add Renesas SuperSpeed support for libusb_get_device_speed()
Pete Batard [Sat, 7 Jan 2012 23:30:23 +0000 (23:30 +0000)]
Windows: Add Renesas SuperSpeed support for libusb_get_device_speed()

* tests conducted using a Renesas PCIE USB 3.0 controller and driver and
  a mass storage USB 3.0 confirm that USB_NODE_CONNECTION_INFORMATION_EX
  uses (undocumented) value 3 for SuperSpeed

12 years agoautogen.sh: Try to use libtoolize before trying glibtoolize
Peter Stuge [Fri, 10 Feb 2012 17:06:43 +0000 (18:06 +0100)]
autogen.sh: Try to use libtoolize before trying glibtoolize

This helps on Mac OS X where an old glibtoolize is included in the
system and newer, manually installed, versions provide libtoolize.

See also http://marc.info/?m=132490560131894

12 years agoRename the lsusb example program to listdevs
Peter Stuge [Wed, 8 Feb 2012 14:54:21 +0000 (15:54 +0100)]
Rename the lsusb example program to listdevs

This is intended to reduce confusion with the much more significant
lsusb utility which is part of the usbutils package.

12 years agocore.c: Fix clang warning about useless store to a variable
Sean McBride [Fri, 9 Dec 2011 18:44:21 +0000 (13:44 -0500)]
core.c: Fix clang warning about useless store to a variable

12 years agoDarwin: Clarify comments on event thread creation and termination
Sean McBride [Fri, 9 Dec 2011 18:43:46 +0000 (13:43 -0500)]
Darwin: Clarify comments on event thread creation and termination

12 years agoDarwin: Fix incorrect mutex protection of libusb_darwin_acfl global
Sean McBride [Fri, 9 Dec 2011 18:43:46 +0000 (13:43 -0500)]
Darwin: Fix incorrect mutex protection of libusb_darwin_acfl global

12 years agoDarwin: Use retained runloop variable instead of CFRunLoopGetCurrent()
Sean McBride [Fri, 9 Dec 2011 18:43:46 +0000 (13:43 -0500)]
Darwin: Use retained runloop variable instead of CFRunLoopGetCurrent()

12 years agoDarwin: Fix libusb_init() and libusb_exit() refcount race condition
Sean McBride [Fri, 9 Dec 2011 18:37:22 +0000 (13:37 -0500)]
Darwin: Fix libusb_init() and libusb_exit() refcount race condition

Use OSAtomicIncrement32Barrier() and OSAtomicDecrement32Barrier()
in darwin_init() and darwin_exit() to be thread safe.

12 years agothreads_posix.c: Fix prototype warning by including threads_posix.h
Sean McBride [Fri, 9 Dec 2011 18:33:28 +0000 (13:33 -0500)]
threads_posix.c: Fix prototype warning by including threads_posix.h

12 years agoWindows: Fix crash during enumeration with >= 64 connected devices
Dave Camarillo [Fri, 23 Sep 2011 10:56:58 +0000 (11:56 +0100)]
Windows: Fix crash during enumeration with >= 64 connected devices

* indexes were outgrowing the unref_list array before realloc,
  resulting in out of bound access and crash.

12 years agoWindows MSVC6: Remove SetupAPI, AdvAPI32 and OLE32 dependencies
Pete Batard [Tue, 26 Oct 2010 15:31:13 +0000 (16:31 +0100)]
Windows MSVC6: Remove SetupAPI, AdvAPI32 and OLE32 dependencies

* this ensures that libusb dependent applications only need
  to link with libusb on Windows
* (copied from Pete's msvc08 mods to msvc6 by Michael)

12 years agoWindows: Output an error message on calls to libusb_get_pollfds()
Pete Batard [Wed, 14 Dec 2011 02:18:10 +0000 (21:18 -0500)]
Windows: Output an error message on calls to libusb_get_pollfds()

Signed-off-by: Michael Plante <michael.plante@gmail.com>
12 years agoio.c: Fix comment since pthreads isn't the only threading libusb uses
Pete Batard [Fri, 4 Jun 2010 03:14:20 +0000 (22:14 -0500)]
io.c: Fix comment since pthreads isn't the only threading libusb uses

12 years agolibusb.h: Cast in libusb_get_string_descriptor() to avoid MSVC6 warning
Michael Plante [Tue, 3 Aug 2010 00:59:12 +0000 (19:59 -0500)]
libusb.h: Cast in libusb_get_string_descriptor() to avoid MSVC6 warning

On MSVC6 bitwise OR promotes to int, causing the warning.

12 years agoWindows: guid_to_string() is only discarded when macro-usbi_dbg used
Michael Plante [Fri, 23 Dec 2011 22:50:21 +0000 (16:50 -0600)]
Windows: guid_to_string() is only discarded when macro-usbi_dbg used

* usbi_dbg encloses all references to guid_to_string
* MinGW/cygwin warn about an unused function, so the #if
  squelches this warning
* MSVC6 uses a variadic function form of usbi_dbg instead
  of a macro, so the compiler still "sees" guid_to_string
  and it therefore needs to always be defined for MSVC6,
  even if it's only a stub.
* So we define it if usbi_dbg is used OR if MSVC6 is used.

Signed-off-by: Michael Plante <michael.plante@gmail.com>
12 years agoWindows: Fix undefined datatype 'LONG_PTR' in MSVC6
Pete Batard [Tue, 15 Nov 2011 01:11:12 +0000 (01:11 +0000)]
Windows: Fix undefined datatype 'LONG_PTR' in MSVC6

* issue reported by Elmi

Signed-off-by: Michael Plante <michael.plante@gmail.com>
12 years agoWindows: Fix for MSVC6 preprocessor not accepting blank parameters
Pete Batard [Sun, 13 Nov 2011 23:10:15 +0000 (23:10 +0000)]
Windows: Fix for MSVC6 preprocessor not accepting blank parameters

* unlike later iterations of Visual Studio, MSVC6 does not accept
  blank parameters on macro calls [eg. CALL(a, ,b)]
* blank params were used with the DLL_DECLARE and DLL_LOAD macros
* issue reported by Elmi

12 years agoWindows: Switch MSVC6 .dsp project files from MBCS to Unicode
Michael Plante [Tue, 26 Oct 2010 10:39:38 +0000 (11:39 +0100)]
Windows: Switch MSVC6 .dsp project files from MBCS to Unicode

* MBCS (which is different from UTF-8) only makes sense if
  supporting Windows 95/98, which we don't
* (try to match Pete's vcproj changes in MSVC6)

12 years agoWindows: Add missing MSVC6 lsusb.dsp project file
Michael Plante [Wed, 14 Dec 2011 02:39:40 +0000 (21:39 -0500)]
Windows: Add missing MSVC6 lsusb.dsp project file

Signed-off-by: Michael Plante <michael.plante@gmail.com>
12 years agoOpenBSD backend
Martin Pieuchot [Mon, 30 Jan 2012 08:59:30 +0000 (09:59 +0100)]
OpenBSD backend

12 years agoconfigure.ac: Darwin: Move -lobjc from LIBS to PC_LIBS_PRIVATE
Xiaofan Chen [Fri, 13 Jan 2012 17:07:34 +0000 (18:07 +0100)]
configure.ac: Darwin: Move -lobjc from LIBS to PC_LIBS_PRIVATE

Since commit 40327cd134718475f6cec8935b856d4fdff2099c it is neccessary
to explicitly include -lobjc not only when linking libusb itself, but
also for programs linking statically against libusb. References #63.

See also http://marc.info/?m=132505900202378

12 years agoexamples: Link only with ../libusb/libusb-1.0.la and not with -lusb-1.0
Xiaofan Chen [Fri, 13 Jan 2012 12:04:00 +0000 (13:04 +0100)]
examples: Link only with ../libusb/libusb-1.0.la and not with -lusb-1.0

Previous _LDFLAGS included both the freshly built libusb in ../libusb
and -lusb-1.0, where libtool would usually resolve the latter to an
already-installed libusb library in the system. The extra reference
to a second libusb library resulted in failure to build examples on
Mac OS X in some cases, and is plain wrong.

See also the thread at http://marc.info/?m=132637593623667

12 years agolibusb/Makefile.am: Avoid recursive variables in .rc silent-rule
Peter Stuge [Thu, 12 Jan 2012 09:34:55 +0000 (10:34 +0100)]
libusb/Makefile.am: Avoid recursive variables in .rc silent-rule

Not every make supports recursive variable expansion so some automake
versions complain about non-POSIX variable names ever since commit
70bec4a9f8ec28d36c731011fa24d37c74ad3523 which added support for
silent-rules in our rule to compile the Windows .rc file.

This commit removes the recursive variables and instead uses the
simple and generic GEN message and associated variable.

12 years agoCore: Fix #122 warning: no previous prototype for ‘usbi_log_v’
Ludovic Rousseau [Sat, 24 Sep 2011 16:27:54 +0000 (18:27 +0200)]
Core: Fix #122 warning: no previous prototype for ‘usbi_log_v’

Declare the usbi_log_v() function before using it.

12 years agoDarwin: Set a name for the background thread on Mac OS X 10.6 and later
Sean McBride [Fri, 14 Oct 2011 18:40:29 +0000 (14:40 -0400)]
Darwin: Set a name for the background thread on Mac OS X 10.6 and later

The call to pthread_setname_np() makes it easy to identify the
background thread in the Xcode debugger and in crash reports.

13 years agolibusb/Makefile.am: Add libusb-1.0.rc dependency on version.h
Peter Stuge [Thu, 22 Sep 2011 19:42:35 +0000 (21:42 +0200)]
libusb/Makefile.am: Add libusb-1.0.rc dependency on version.h

13 years agolibusb/Makefile.am: Make the libusb-1.0.rc rule support silent-rules
Peter Stuge [Thu, 22 Sep 2011 19:38:29 +0000 (21:38 +0200)]
libusb/Makefile.am: Make the libusb-1.0.rc rule support silent-rules

13 years agoconfigure.ac: Enable libtool support for Windows Resource language
Peter Stuge [Thu, 22 Sep 2011 19:17:37 +0000 (21:17 +0200)]
configure.ac: Enable libtool support for Windows Resource language

13 years agodescriptor.c: Use size_t for minor 64 bit compliance improvement
Sean McBride [Mon, 19 Sep 2011 16:52:44 +0000 (12:52 -0400)]
descriptor.c: Use size_t for minor 64 bit compliance improvement

Fixes #121.

13 years agoDarwin: Fix warnings about mismatched signed/unsigned compare
Sean McBride [Mon, 19 Sep 2011 16:42:33 +0000 (12:42 -0400)]
Darwin: Fix warnings about mismatched signed/unsigned compare

References #121.

13 years agoFix unused variable warnings when without timerfd and/or when on Darwin
Sean McBride [Mon, 19 Sep 2011 16:38:20 +0000 (12:38 -0400)]
Fix unused variable warnings when without timerfd and/or when on Darwin

References #121.

13 years agoCorrectly handle LIBUSB_TRANSFER_OVERFLOW in libusb_control_transfer()
Ludovic Rousseau [Fri, 16 Sep 2011 16:07:56 +0000 (18:07 +0200)]
Correctly handle LIBUSB_TRANSFER_OVERFLOW in libusb_control_transfer()

sync.c: In function `libusb_control_transfer':
sync.c:122: warning: enumeration value `LIBUSB_TRANSFER_OVERFLOW' not
handled in switch

Fixes #120.

13 years agoWindows: do not set altsetting 0 as part of libusb_release_interface()
Pete Batard [Mon, 19 Sep 2011 15:01:37 +0000 (16:01 +0100)]
Windows: do not set altsetting 0 as part of libusb_release_interface()

* pointed out by Travis Robinson and Xiaofan Chen
* similar to a change advised by Alan Stern for the Linux kernel:
  http://marc.info/?m=122790204410765

13 years agoWindows: fix communication with hubs
Pete Batard [Mon, 19 Sep 2011 14:45:35 +0000 (15:45 +0100)]
Windows: fix communication with hubs

* issue reported by René Haunstrup in http://marc.info/?m=130503019227814

13 years agoWindows: add USB 3.0 controller support
Pete Batard [Mon, 19 Sep 2011 14:41:39 +0000 (15:41 +0100)]
Windows: add USB 3.0 controller support

* Windows 8, NEC/Renesas, TI, Fresco Logic, Etron, VIA, ASMedia
  (some of which untested!)
* includes workaround for NEC/Renesas USB 3.0 root hubs

13 years agoWindows: add static keywords and drop duplicated or unneeded code
Pete Batard [Mon, 19 Sep 2011 14:28:03 +0000 (15:28 +0100)]
Windows: add static keywords and drop duplicated or unneeded code

13 years agoWindows: fix 'windows_error_str' defined but not used when not logging
Pete Batard [Mon, 19 Sep 2011 12:59:46 +0000 (13:59 +0100)]
Windows: fix 'windows_error_str' defined but not used when not logging

13 years agolibusbi.h: Silence unused context variable warnings when not logging
Peter Stuge [Thu, 22 Sep 2011 08:19:17 +0000 (10:19 +0200)]
libusbi.h: Silence unused context variable warnings when not logging

13 years agoWindows: copy DLL file regardless of ddk_build.cmd dll argument case
Pete Batard [Mon, 19 Sep 2011 12:06:22 +0000 (13:06 +0100)]
Windows: copy DLL file regardless of ddk_build.cmd dll argument case

13 years agoWindows: Add uint32_t typedef for old MSC so that DDK can build lsusb
Pete Batard [Sun, 18 Sep 2011 19:06:45 +0000 (20:06 +0100)]
Windows: Add uint32_t typedef for old MSC so that DDK can build lsusb

13 years agoDarwin: fix port leak in darwin_clock_gettime()
Vitali Lovich [Fri, 16 Sep 2011 14:53:25 +0000 (08:53 -0600)]
Darwin: fix port leak in darwin_clock_gettime()

13 years agoDarwin: remove unnecessary run loop invalidation during libusb_exit()
Vitali Lovich [Fri, 16 Sep 2011 14:50:40 +0000 (08:50 -0600)]
Darwin: remove unnecessary run loop invalidation during libusb_exit()

13 years agoDarwin: fix port leak during libusb_exit()
Vitali Lovich [Fri, 16 Sep 2011 14:49:54 +0000 (08:49 -0600)]
Darwin: fix port leak during libusb_exit()

13 years agoDarwin: fix potential leak on libusb_claim_interface() error
Vitali Lovich [Fri, 16 Sep 2011 14:48:28 +0000 (08:48 -0600)]
Darwin: fix potential leak on libusb_claim_interface() error

13 years agoDarwin: Fix #117 transfer size 64/32 bit issue for transfer callbacks
Nathan Hjelm [Fri, 16 Sep 2011 14:41:01 +0000 (08:41 -0600)]
Darwin: Fix #117 transfer size 64/32 bit issue for transfer callbacks

The transfer size is now always truncated to 32 bits.

13 years agoRemove username from SF FRS rsync upload command
Peter Stuge [Thu, 15 Sep 2011 15:04:43 +0000 (17:04 +0200)]
Remove username from SF FRS rsync upload command

13 years agoSupport release candidate versions in configure.ac and libusb-1.0.rc
Peter Stuge [Thu, 15 Sep 2011 14:48:35 +0000 (16:48 +0200)]
Support release candidate versions in configure.ac and libusb-1.0.rc

13 years agoTidy .gitignore a little
Peter Stuge [Thu, 15 Sep 2011 14:32:47 +0000 (16:32 +0200)]
Tidy .gitignore a little

There's no xusb, we need a glob pattern for matching .exe files, and
fpusb tarballs aren't very common in the libusb source dir.

13 years agoDocs: Clarify that libusb_handle_events_timeout() tv param can't be NULL
Hans de Goede [Wed, 14 Sep 2011 08:53:48 +0000 (10:53 +0200)]
Docs: Clarify that libusb_handle_events_timeout() tv param can't be NULL

The example code and API doc for libusb_handle_events_timeout() could be
interpreted as it being OK to pass a NULL pointer for the tv argument (I
interpreted it like that when I first started coding for libusb).

This patch changes the docs to make it clear that one must always supply
a tv struct to libusb_handle_events_timeout.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
13 years agoMakefile.am: Do not remove ChangeLog on make distclean, fixes #116
Peter Stuge [Wed, 14 Sep 2011 06:23:43 +0000 (08:23 +0200)]
Makefile.am: Do not remove ChangeLog on make distclean, fixes #116

[pbatard: Remove it on make maintainer-clean instead]

13 years agoDarwin: Reduce race likelihood between cancellation and device disconnect
Vitali Lovich [Wed, 14 Sep 2011 05:02:06 +0000 (07:02 +0200)]
Darwin: Reduce race likelihood between cancellation and device disconnect

References #88. The race condition still remains, but this change
makes it less likely to trigger.

13 years agoDocument that libusb_get_device_list() can return any libusb_error code
Peter Stuge [Wed, 14 Sep 2011 02:00:33 +0000 (04:00 +0200)]
Document that libusb_get_device_list() can return any libusb_error code

Fixes #87.

13 years agoLinux: Fix #81 URB double free race condition on device disconnect
Pete Batard [Thu, 16 Jun 2011 09:49:13 +0000 (10:49 +0100)]
Linux: Fix #81 URB double free race condition on device disconnect

A submitted transfer that has just been failed by the kernel could be
picked up by an event handler to be cleaned up, where freeing of URB
memory would race with the submit function doing it's own cleanup and
freeing as a result of the submit failing.

libusb_submit_transfer() always holds itransfer->lock, so the race can
be avoided by taking that lock also in the cleanup path and checking
that the URB memory has not already been freed before freeing it there.

As http://libusb.org/ticket/81#comment:14 notes there is still another
possible, but unlikely, race condition between libusb_submit_transfer()
and an event handling thread. That will require more work to solve.

[stuge: Add check in cleanup path that URBs have not already been freed]

13 years agoAdd libusb_error_name() API function
Peter Stuge [Wed, 14 Sep 2011 01:00:14 +0000 (03:00 +0200)]
Add libusb_error_name() API function

Until we have i18ned error messages we can at least offer easy
translation from numeric error code to the error code's name.

[hansg: switch() on enum to get a compiler warning if a case is missing]
[hansg: Better return value when called with an unknown error code]
[hansg: Fix DEFAULT_VISIBILITY in definition to compile on all platforms]

13 years agoAdd libusb_has_capability() API function
Peter Stuge [Wed, 14 Sep 2011 00:30:18 +0000 (02:30 +0200)]
Add libusb_has_capability() API function

Since it is currently not planned to change the filename of the libusb
library between libusb-1.0 versions at least on Windows systems it's
important to have a capability API.

Currently there exists only one capability; LIBUSB_CAP_HAS_CAPABILITY,
which tests support for the libusb_has_capability() API.

13 years agoFix typos in introductory documentation
Sebastian Pipping [Tue, 13 Sep 2011 18:38:26 +0000 (20:38 +0200)]
Fix typos in introductory documentation

13 years agoLinux: Add libusb_open() debug and error messages with the device path
Pekka Nikander [Tue, 13 Sep 2011 16:57:43 +0000 (18:57 +0200)]
Linux: Add libusb_open() debug and error messages with the device path

Fixes #109.

13 years agoAdd debug message with libusb_open() error code
Pekka Nikander [Tue, 13 Sep 2011 16:52:36 +0000 (18:52 +0200)]
Add debug message with libusb_open() error code

References #109.

13 years agoDocument libusb_handle_events_completed() and _timeout_completed()
Hans de Goede [Mon, 12 Sep 2011 16:11:20 +0000 (18:11 +0200)]
Document libusb_handle_events_completed() and _timeout_completed()

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
[stuge: Note that the old racy functions should be avoided by new code]

13 years agoFix #56 race condition causing delayed completion of sync transfers
Graeme Gill [Sat, 10 Sep 2011 13:47:05 +0000 (15:47 +0200)]
Fix #56 race condition causing delayed completion of sync transfers

The sync API had a race where it would check a condition to know if it
needed to call a libusb_handle_events() function. However, the check
was done outside of the lock that is held while the condition is set,
so another thread could completely serve whatever was needed to make
the condition true between it being checked and the event handler being
called. This situation would be detected after a libusb-internal timeout
of 60 seconds, after which the transfer would be completed without
error, but with significant delay.

Original patch at http://marc.info/?l=libusb-devel&m=127252114815709

Changes by Hans de Goede:
- Renamed the "race-proof" functions from libusb_handle_events*_check()
  to libusb_handle_events*_completed()
- Drop r = 0 setting in libusb_handle_events_timeout_completed()
  (to make both completed checking cases identical flow wise)

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
[stuge: Simplify libusb_handle_events_timeout() change with a goto]
[pbatard: Fix _handle_events_timeout() and _completed() definitions]

13 years agoDarwin: Use a condition to signal async thread ready in libusb_init()
Nathan Hjelm [Sat, 27 Aug 2011 05:06:40 +0000 (23:06 -0600)]
Darwin: Use a condition to signal async thread ready in libusb_init()

13 years agoFix #64 use of reserved identifiers throughout libusb
Nathan Hjelm [Fri, 22 Jul 2011 04:34:12 +0000 (22:34 -0600)]
Fix #64 use of reserved identifiers throughout libusb

13 years agoDarwin: fix libusb_get_device_list() and libusb_claim_interface() leaks
Nathan Hjelm [Fri, 22 Jul 2011 04:31:09 +0000 (22:31 -0600)]
Darwin: fix libusb_get_device_list() and libusb_claim_interface() leaks

13 years agoDarwin: use kIOMasterPortDefault instead of creating a master port
Nathan Hjelm [Fri, 22 Jul 2011 04:28:47 +0000 (22:28 -0600)]
Darwin: use kIOMasterPortDefault instead of creating a master port

13 years agoAllow devices with zero configurations to be discovered
Peter Stuge [Wed, 27 Jul 2011 01:15:03 +0000 (03:15 +0200)]
Allow devices with zero configurations to be discovered

At least in Linux, wireless USB devices have zero configurations until
they have been authorized. This device state can be set for any USB
device using:

echo 0 > /sys/bus/usb/devices/?-?/authorized

An unauthorized device would previously make usbi_sanitize_device()
return LIBUSB_ERROR_IO, although there really was no I/O error.

Reported-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
13 years agoLinux: Continue enumeration even if one device returns an error
Peter Stuge [Wed, 27 Jul 2011 04:17:48 +0000 (06:17 +0200)]
Linux: Continue enumeration even if one device returns an error

13 years agoLinux: Handle single- and two-digit kernel versions like 3.0 and 4
Hans de Goede [Fri, 17 Jun 2011 08:19:00 +0000 (10:19 +0200)]
Linux: Handle single- and two-digit kernel versions like 3.0 and 4

The code has been tested with various version strings.

[stuge: Remove bogus string length check and optimize for newer kernels]

13 years agoWindows: Provide libusb_get_device_speed() data
Pete Batard [Thu, 3 Mar 2011 18:35:35 +0000 (18:35 +0000)]
Windows: Provide libusb_get_device_speed() data

* use (currently superspeed unaware) USB_NODE_CONNECTION_INFORMATION_EX

Fixes #45.

[stuge: Explicitly convert OS device speeds to libusb device speeds]
[pbatard: Add breaks overlooked when adding explicit conversion]

13 years agoDarwin: Provide libusb_get_device_speed() data
Trygve Laugstøl [Tue, 19 Jul 2011 21:20:40 +0000 (23:20 +0200)]
Darwin: Provide libusb_get_device_speed() data

References #45.

13 years agoLinux: Provide libusb_get_device_speed() data from sysfs
Hans de Goede [Thu, 17 Feb 2011 14:06:40 +0000 (15:06 +0100)]
Linux: Provide libusb_get_device_speed() data from sysfs

References #45.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
13 years agoAdd new API function libusb_get_device_speed()
Hans de Goede [Thu, 17 Feb 2011 12:17:55 +0000 (13:17 +0100)]
Add new API function libusb_get_device_speed()

Reworked version of my earlier patch, largely modelled after (if not
copy and pasted from) Trygve Laugstøl's <trygvis@inamo.no> similar
commit 5a6541e0d80fb1f21e2b960bc2337a612f9d74fb in
git://git.libusb.org/libusb-trygvis.git
http://git.libusb.org/libusb-trygvis.git
http://git.libusb.org/?p=libusb-trygvis.git;a=commitdiff;h=5a6541e0d

This patch does not add any OS specific code. The supporting code in
each backend follows in separate patches. References #45.

Signed-off-By: Hans de Goede <hdegoede@redhat.com>
13 years agoDarwin: Improve device enumeration performance
Nathan Hjelm [Sun, 20 Mar 2011 06:25:44 +0000 (00:25 -0600)]
Darwin: Improve device enumeration performance

The device location is saved, and later used whenever iterating over
devices. Fixes #111 and #112.

[stuge: Formatting fixes and split out libusb_get_device_speed() change]
[stuge: Combine with patch that uses the saved device location]

13 years agoLinux: Use __read_sysfs_attr() to get busnum and devaddr
Hans de Goede [Thu, 17 Feb 2011 11:49:36 +0000 (12:49 +0100)]
Linux: Use __read_sysfs_attr() to get busnum and devaddr

Remove code duplication.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
13 years agoLinux: Add __read_sysfs_attr() helper function
Hans de Goede [Thu, 17 Feb 2011 11:45:10 +0000 (12:45 +0100)]
Linux: Add __read_sysfs_attr() helper function

On Linux we often need to read (postive) integers from sysfs. This patch
adds a helper function for this. This is a preparation patch for adding
a libusb_get_device_speed() function to libusb.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
13 years agoLinux: Stop kernel from re-attaching in-kernel driver after reset
Hans de Goede [Tue, 8 Feb 2011 15:37:18 +0000 (16:37 +0100)]
Linux: Stop kernel from re-attaching in-kernel driver after reset

When an interface is bound to the usbfs driver (iow claimed), the
kernel will unbind it, and then after the reset do a device_attach
on the interface, which will bind the default in kernel driver to
the interface.

So if an app has detached the in kernel driver, and claimed the
interface and then does a libusb_reset_device. Things end up with
the interface no longer being bound to the usbfs driver (so no longer
claimed) and instead it is bound to the in kernel driver (iow the in
kernel driver is re-attached).

We can stop this from happening by releasing all claimed interfaces
before the reset, as the kernel will not do the device attach after
reset, if no driver was bound to the interface before the reset.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
13 years agoCore: Use USB_MAXINTERFACES rather then sizeof(claimed_interfaces)
Hans de Goede [Thu, 17 Feb 2011 11:35:46 +0000 (12:35 +0100)]
Core: Use USB_MAXINTERFACES rather then sizeof(claimed_interfaces)

claimed_interfaces is a long and thus its size differs on 32
versus 64 bits, this patch uses USB_MAXINTERFACES instead of
sizeof(claimed_interfaces) on interface number range checks
for consistent behavior independent of the arch.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
13 years agoLinux: Fix warnings seen when compiling with gcc-4.6
Hans de Goede [Wed, 9 Feb 2011 11:40:35 +0000 (12:40 +0100)]
Linux: Fix warnings seen when compiling with gcc-4.6

Compiling with gcc-4.6 results in the following warnings:
os/linux_usbfs.c: In function 'op_get_configuration':
os/linux_usbfs.c:1144:6: warning: variable 'r' set but not used ...
os/linux_usbfs.c: In function 'op_handle_events':
os/linux_usbfs.c:2091:40: warning: 'status' may be used uninitialized ...
os/linux_usbfs.c:2044:6: note: 'status' was declared here
dpfp.c: In function 'save_to_file':
dpfp.c:228:9: warning: variable 'ignore' set but not used ...
dpfp_threaded.c: In function 'save_to_file':
dpfp_threaded.c:257:9: warning: variable 'ignore' set but not used ...

This patch fixes these. (The second comes from handle_control_completion()
which gcc seems to inline into op_handle_events().)

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
[stuge: Add fixes for dpfp examples and update source references]

13 years agoDarwin: Fix #108 crash when a device is unplugged
Vitali Lovich [Tue, 14 Jun 2011 06:51:57 +0000 (08:51 +0200)]
Darwin: Fix #108 crash when a device is unplugged

13 years agolibusb.h: Add missing LIBUSB_CLASS_ codes currently defined by usb.org
Peter Stuge [Mon, 13 Jun 2011 20:58:23 +0000 (22:58 +0200)]
libusb.h: Add missing LIBUSB_CLASS_ codes currently defined by usb.org

LIBUSB_CLASS_PHYSICAL
LIBUSB_CLASS_SMART_CARD
LIBUSB_CLASS_CONTENT_SECURITY
LIBUSB_CLASS_VIDEO
LIBUSB_CLASS_PERSONAL_HEALTHCARE
LIBUSB_CLASS_DIAGNOSTIC_DEVICE

Per http://www.usb.org/developers/defined_class

13 years agolibusb.h: Add LIBUSB_CLASS_IMAGE in addition to LIBUSB_CLASS_PTP
Peter Stuge [Mon, 13 Jun 2011 20:53:40 +0000 (22:53 +0200)]
libusb.h: Add LIBUSB_CLASS_IMAGE in addition to LIBUSB_CLASS_PTP

The old LIBUSB_CLASS_PTP name is kept for compatibility. Fixes #106.

13 years agolibusb.h: Fix LIBUSB_CLASS_PRINTER description typo
Peter Stuge [Mon, 13 Jun 2011 20:52:48 +0000 (22:52 +0200)]
libusb.h: Fix LIBUSB_CLASS_PRINTER description typo

References #106.

13 years agoDarwin: Fix #100 warning cast to pointer from integer of different size
Sean McBride [Fri, 11 Feb 2011 16:28:04 +0000 (11:28 -0500)]
Darwin: Fix #100 warning cast to pointer from integer of different size

13 years agoconfigure.ac: Fix #97 clang warning about -fgnu89-inline
Sean McBride [Mon, 13 Jun 2011 20:26:43 +0000 (22:26 +0200)]
configure.ac: Fix #97 clang warning about -fgnu89-inline

Remove the test that sets the flag since GNU89 inline semantics are not
required by libusb.

[stuge: Also remove reference to the test result]