[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