Rename USB_TIMEOUT to USB_INFINITE_TIMEOUT and use it each time bulk read need to be infinite. (Thanks to Guty)

This commit is contained in:
Romuald Conty 2011-06-10 10:04:31 +00:00
parent 850b3c2375
commit 29856a67a0

View file

@ -40,13 +40,13 @@ Thanks to d18c7db and Okko for example code
#ifndef _WIN32 #ifndef _WIN32
// Under POSIX system, we use libusb (>= 0.1.12) // Under POSIX system, we use libusb (>= 0.1.12)
#include <usb.h> #include <usb.h>
#define USB_TIMEOUT 0 #define USB_INFINITE_TIMEOUT 0
#define _usb_strerror( X ) strerror(-X) #define _usb_strerror( X ) strerror(-X)
#else #else
// Under Windows we use libusb-win32 (>= 1.2.4) // Under Windows we use libusb-win32 (>= 1.2.4)
#include <lusb0_usb.h> #include <lusb0_usb.h>
// libusb-win32's bug workaround: 0 as timeout does not means infite as expected // libusb-win32's bug workaround: 0 as timeout does not means infite as expected
#define USB_TIMEOUT 10 #define USB_INFINITE_TIMEOUT 100
#define _usb_strerror( X ) usb_strerror() #define _usb_strerror( X ) usb_strerror()
#endif #endif
@ -89,7 +89,7 @@ bool pn53x_usb_init (nfc_device_t *pnd);
int int
pn53x_usb_bulk_read (struct pn53x_usb_data *data, byte_t abtRx[], const size_t szRx) pn53x_usb_bulk_read (struct pn53x_usb_data *data, byte_t abtRx[], const size_t szRx)
{ {
int res = usb_bulk_read (data->pudh, data->uiEndPointIn, (char *) abtRx, szRx, USB_TIMEOUT); int res = usb_bulk_read (data->pudh, data->uiEndPointIn, (char *) abtRx, szRx, USB_INFINITE_TIMEOUT);
if (res > 0) { if (res > 0) {
PRINT_HEX ("RX", abtRx, res); PRINT_HEX ("RX", abtRx, res);
} else if (res < 0) { } else if (res < 0) {
@ -116,11 +116,11 @@ int
pn53x_usb_bulk_write (struct pn53x_usb_data *data, byte_t abtTx[], const size_t szTx) pn53x_usb_bulk_write (struct pn53x_usb_data *data, byte_t abtTx[], const size_t szTx)
{ {
PRINT_HEX ("TX", abtTx, szTx); PRINT_HEX ("TX", abtTx, szTx);
int res = usb_bulk_write (data->pudh, data->uiEndPointOut, (char *) abtTx, szTx, USB_TIMEOUT); int res = usb_bulk_write (data->pudh, data->uiEndPointOut, (char *) abtTx, szTx, USB_INFINITE_TIMEOUT);
if (res > 0) { if (res > 0) {
// HACK This little hack is a well know problem of USB, see http://www.libusb.org/ticket/6 for more details // HACK This little hack is a well know problem of USB, see http://www.libusb.org/ticket/6 for more details
if ((res % data->uiMaxPacketSize) == 0) { if ((res % data->uiMaxPacketSize) == 0) {
usb_bulk_write (data->pudh, data->uiEndPointOut, "\0", 0, USB_TIMEOUT); usb_bulk_write (data->pudh, data->uiEndPointOut, "\0", 0, USB_INFINITE_TIMEOUT);
} }
} else { } else {
ERR ("Unable to write to USB (%s)", _usb_strerror (res)); ERR ("Unable to write to USB (%s)", _usb_strerror (res));
@ -483,7 +483,7 @@ pn53x_usb_receive (nfc_device_t * pnd, byte_t * pbtData, const size_t szDataLen)
int res; int res;
read: read:
res = pn53x_usb_bulk_read_ex (DRIVER_DATA (pnd), abtRxBuf, sizeof (abtRxBuf), delayed_reply ? 250 : 0); 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 == -ETIMEDOUT)) {
if (DRIVER_DATA (pnd)->abort_flag) { if (DRIVER_DATA (pnd)->abort_flag) {