- added composite HID device support in xusb.c
- fixed signed/unsigned bug in windows_compat.c (Orin Eman)
- added support for synchronous completion of async requests
- composite HID device support (ClassGUID fallback for driver unavail., read interface number from MI_##, extra path for HID)
- generic interface_by_endpoint and get_valid_interface
- added HID struct in priv
- HID submit_control_transfer
- added Visual Studio 2005 (MSVC8) solution and project files (Orin Eman)
- renamed VS 2008 solution and project files
- fixed "warning: undefined symbols not allowed" for MinGW/cygwin in configure.ac
- composite devices as a separate backend API
- mutidriver support in composite devices interface
- HID: device interface path, open/close (WIP)
- added HID test in xusb.c
- fixed Windows version and DDK support
- smaller fixes
- changed ssize_t to int for libusb_get_device_list (do we really expect that
many devices?). Also in lsusb.c
- redefined inline to __inline in libusb.h
- remove the unistd.h include for OS_WINDOWS
- api/ vs ddk/ for ddk includes
- changed variadics using ,fmt... to ,... and __VA_ARGS__
- list_for_each_entry now requires a type parameter
- libusb_cpu_to_le16 as inline
- time.h vs sys/time.h
- harmonization of #ifdef vs #if defined() within individual files
- defined an empty __drv_preferredFunction(func,why) before #include
<cfgmgr32.h>, as it only applies to obsolete functions
- excluded USB_HUB_CAPS redefinition from MSVC
- new msvc top directory for includes (stdint.h inttypes.h and pthread)
- new config_msvc.h file
- new README_MSVC and MSVC project files
- removed various warnings (signed/unsigned comparisons, cast, etc)
- windows_set_interface_altsetting (untested)
- windows_set_configuration (untested)
- updated xusb.c test program, with comprehensive XBox Controller test and
preparation for bulk transfers test on Mass Storage device
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.
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.
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.
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.
Lots of libusb apps I write are simple test apps not intended to be real
apps. Having a function available to quickly locate my device will be
handy in such situations.