commit | f67f065709c948d2e29150ea2a3d9441a2609f36 | [log] [tgz] |
---|---|---|
author | Matthias Bolte <matthias.bolte@googlemail.com> | Mon Dec 16 13:38:35 2019 +0100 |
committer | Chris Dickens <christopher.a.dickens@gmail.com> | Thu Jan 02 18:52:24 2020 -0800 |
tree | 9a36373fa0e2575348fb688dd99227228a9a9de3 | |
parent | 1e9d26a753a741bfdb0769b4c895697d16edcc27 [diff] |
windows: Fix USBD_STATUS to LIBUSB_TRANSFER_STATUS translation The MSDN documentaion says that the most significant 4 bits of the USBD_STATUS value indicate success/pending/error state, but then gives them as 2 bit values. The broken translations code assumes these to be the lower 2 bits: 0b0000 for success 0b0001 for pending 0b0010 for error 0b0011 for error But actually it's the higher 2 bits: 0b0000 for success 0b0100 for pending 0b1000 for error 0b1100 for error The USBDK code already deals with USBD_STATUS and gets it correct. Another problem is that the broken translations code then masks off the most significant 4 bits of the USBD_STATUS value, but then compares it to the full 32 bit error codes to figure out the actual error. This switch will always jump to the default case, because all checked error codes have their most significant 2 bits set, but the values they are compared against have those bits masked off. Move the working code from the USBDK backend to the shared header and reuse it in the WinUSB backend too. [dickens] Fixed whitespace, removed unused definitions, add ifdef guard, and retained name as USBD_SUCCESS to match w32api header. Closes #665 Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
libusb is a library for USB device access from Linux, macOS, Windows, OpenBSD/NetBSD and Haiku userspace. It is written in C (Haiku backend in C++) and licensed under the GNU Lesser General Public License version 2.1 or, at your option, any later version (see COPYING).
libusb is abstracted internally in such a way that it can hopefully be ported to other operating systems. Please see the PORTING file for more information.
libusb homepage: http://libusb.info/
Developers will wish to consult the API documentation: http://api.libusb.info
Use the mailing list for questions, comments, etc: http://mailing-list.libusb.info
(Please use the mailing list rather than mailing developers directly)