[Pcsclite-cvs-commit] r2776 - in /trunk/Drivers/ccid/src: ccid_usb.c ccid_usb.h
rousseau at users.alioth.debian.org
rousseau at users.alioth.debian.org
Fri Feb 1 09:29:44 UTC 2008
Author: rousseau
Date: Fri Feb 1 09:29:44 2008
New Revision: 2776
URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=2776
Log:
add InterruptRead() to read the interrupt pipe use by asynchronous card
movements
Modified:
trunk/Drivers/ccid/src/ccid_usb.c
trunk/Drivers/ccid/src/ccid_usb.h
Modified: trunk/Drivers/ccid/src/ccid_usb.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/Drivers/ccid/src/ccid_usb.c?rev=2776&op=diff
==============================================================================
--- trunk/Drivers/ccid/src/ccid_usb.c (original)
+++ trunk/Drivers/ccid/src/ccid_usb.c Fri Feb 1 09:29:44 2008
@@ -844,3 +844,44 @@
return ret;
} /* ControlUSB */
+/*****************************************************************************
+ *
+ * InterruptRead
+ *
+ *
+ ****************************************************************************/
+int InterruptRead(int reader_index)
+{
+ int ret;
+ char buffer[8];
+ int timeout = 60*60*1000; /* 60 minutes */
+ static int hasfailed = FALSE;
+
+ if (hasfailed)
+ {
+ DEBUG_COMM("driver has failed");
+ return 0;
+ }
+
+ DEBUG_COMM("before");
+ ret = usb_interrupt_read(usbDevice[reader_index].handle,
+ usbDevice[reader_index].interrupt, buffer, sizeof(buffer), timeout);
+ DEBUG_COMM2("after %d\n", ret);
+
+ if (0 == ret)
+ hasfailed = TRUE;
+
+ if (ret < 0)
+ {
+ /* if usb_interrupt_read() times out we get EILSEQ */
+ if (errno != EILSEQ)
+ DEBUG_CRITICAL4("usb_interrupt_read(%s/%s): %s",
+ usbDevice[reader_index].dirname,
+ usbDevice[reader_index].filename, strerror(errno));
+ }
+ else
+ DEBUG_XXD("NotifySlotChange: ", buffer, ret);
+
+ return ret;
+} /* InterruptRead */
+
Modified: trunk/Drivers/ccid/src/ccid_usb.h
URL: http://svn.debian.org/wsvn/pcsclite/trunk/Drivers/ccid/src/ccid_usb.h?rev=2776&op=diff
==============================================================================
--- trunk/Drivers/ccid/src/ccid_usb.h (original)
+++ trunk/Drivers/ccid/src/ccid_usb.h Fri Feb 1 09:29:44 2008
@@ -42,4 +42,5 @@
int ControlUSB(int reader_index, int requesttype, int request, int value,
unsigned char *bytes, unsigned int size);
+int InterruptRead(int reader_index);
#endif
More information about the Pcsclite-cvs-commit
mailing list