diff --git a/README-Windows.txt b/README-Windows.txt index c29120b..5f049d1 100644 --- a/README-Windows.txt +++ b/README-Windows.txt @@ -7,12 +7,12 @@ Requirements ============ - MinGW-w64 compiler toolchain [1] -- LibUsb-Win32 1.2.4.6 (or greater) [2] +- LibUsb-Win32 1.2.5.0 (or greater) [2] - CMake 2.8 [3] This was tested on Windows 7 64 bit, but should work on Windows Vista and Windows XP and 32 bit as well. -Only the ACS ACR122 reader is tested at the moment, so any feedback about other devices is very welcome. +Only the ACS ACR122 and the ASK Logo readers are tested at the moment, so any feedback about other devices is very welcome. Community forum: http://www.libnfc.org/community/ @@ -53,5 +53,5 @@ References [1] the easiest way is to use the TDM-GCC installer. Make sure to select MinGW-w64 in the installer, the regular MinGW does not contain headers for PCSC. http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm64-gcc-4.5.1.exe/download -[2] http://sourceforge.net/projects/libusb-win32/files/libusb-win32-snapshots/20110512/libusb-win32-snapshot-1.2.4.6.zip/download +[2] http://sourceforge.net/projects/libusb-win32/files/ [3] http://www.cmake.org diff --git a/libnfc/drivers/pn53x_usb.c b/libnfc/drivers/pn53x_usb.c index f757bd1..44695fd 100644 --- a/libnfc/drivers/pn53x_usb.c +++ b/libnfc/drivers/pn53x_usb.c @@ -40,13 +40,12 @@ Thanks to d18c7db and Okko for example code #ifndef _WIN32 // Under POSIX system, we use libusb (>= 0.1.12) #include - #define USB_INFINITE_TIMEOUT 0 + #define USB_TIMEDOUT ETIMEDOUT #define _usb_strerror( X ) strerror(-X) #else - // Under Windows we use libusb-win32 (>= 1.2.4) + // Under Windows we use libusb-win32 (>= 1.2.5) #include - // libusb-win32's bug workaround: 0 as timeout does not means infite as expected - #define USB_INFINITE_TIMEOUT 100 + #define USB_TIMEDOUT 116 #define _usb_strerror( X ) usb_strerror() #endif @@ -61,6 +60,8 @@ Thanks to d18c7db and Okko for example code #define PN53X_USB_DRIVER_NAME "PN53x USB" +#define USB_INFINITE_TIMEOUT 0 + #define DRIVER_DATA(pnd) ((struct pn53x_usb_data*)(pnd->driver_data)) typedef enum { @@ -105,7 +106,7 @@ pn53x_usb_bulk_read_ex (struct pn53x_usb_data *data, byte_t abtRx[], const size_ if (res > 0) { PRINT_HEX ("RX", abtRx, res); } else if (res < 0) { - if (-res != ETIMEDOUT) { + if (-res != USB_TIMEDOUT) { ERR ("Unable to read from USB (%s)", _usb_strerror (res)); } } @@ -481,7 +482,7 @@ pn53x_usb_receive (nfc_device_t * pnd, byte_t * pbtData, const size_t szDataLen) read: res = pn53x_usb_bulk_read_ex (DRIVER_DATA (pnd), abtRxBuf, sizeof (abtRxBuf), delayed_reply ? 250 : USB_INFINITE_TIMEOUT); - if (delayed_reply && (res == -ETIMEDOUT)) { + if (delayed_reply && (res == -USB_TIMEDOUT)) { if (DRIVER_DATA (pnd)->abort_flag) { DRIVER_DATA (pnd)->abort_flag = false; pn53x_usb_ack (pnd);