[Pcsclite-cvs-commit] r4937 - in /trunk/Drivers/ccid/src: ccid.c ccid.h ccid_serial.c ccid_usb.c commands.c defs.h ifdhandler.c

rousseau at users.alioth.debian.org rousseau at users.alioth.debian.org
Mon May 10 09:28:03 UTC 2010


Author: rousseau
Date: Mon May 10 09:28:02 2010
New Revision: 4937

URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=4937
Log:
change read timeout from second to millisecond unit to have a sub-second
control

Modified:
    trunk/Drivers/ccid/src/ccid.c
    trunk/Drivers/ccid/src/ccid.h
    trunk/Drivers/ccid/src/ccid_serial.c
    trunk/Drivers/ccid/src/ccid_usb.c
    trunk/Drivers/ccid/src/commands.c
    trunk/Drivers/ccid/src/defs.h
    trunk/Drivers/ccid/src/ifdhandler.c

Modified: trunk/Drivers/ccid/src/ccid.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/Drivers/ccid/src/ccid.c?rev=4937&op=diff
==============================================================================
--- trunk/Drivers/ccid/src/ccid.c (original)
+++ trunk/Drivers/ccid/src/ccid.c Mon May 10 09:28:02 2010
@@ -63,7 +63,7 @@
 		case CL1356D:
 			/* the firmware needs some time to initialize */
 			(void)sleep(1);
-			ccid_descriptor->readTimeout = 60; /* 60 seconds */
+			ccid_descriptor->readTimeout = 60*1000; /* 60 seconds */
 			break;
 	}
 

Modified: trunk/Drivers/ccid/src/ccid.h
URL: http://svn.debian.org/wsvn/pcsclite/trunk/Drivers/ccid/src/ccid.h?rev=4937&op=diff
==============================================================================
--- trunk/Drivers/ccid/src/ccid.h (original)
+++ trunk/Drivers/ccid/src/ccid.h Mon May 10 09:28:02 2010
@@ -86,7 +86,7 @@
 
 	/*
 	 * Read communication port timeout
-	 * value is seconds
+	 * value is milliseconds
 	 * this value can evolve dynamically if card request it (time processing).
 	 */
 	unsigned int readTimeout;

Modified: trunk/Drivers/ccid/src/ccid_serial.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/Drivers/ccid/src/ccid_serial.c?rev=4937&op=diff
==============================================================================
--- trunk/Drivers/ccid/src/ccid_serial.c (original)
+++ trunk/Drivers/ccid/src/ccid_serial.c Mon May 10 09:28:02 2010
@@ -421,8 +421,8 @@
 		/* use select() to, eventually, timeout */
 		FD_ZERO(&fdset);
 		FD_SET(fd, &fdset);
-		t.tv_sec = serialDevice[reader_index].ccid.readTimeout;
-		t.tv_usec = 0;
+		t.tv_sec = serialDevice[reader_index].ccid.readTimeout / 1000;
+		t.tv_usec = (serialDevice[reader_index].ccid.readTimeout - t.tv_sec*1000)*1000;
 
 		i = select(fd+1, &fdset, NULL, NULL, &t);
 		if (i == -1)
@@ -433,7 +433,7 @@
 		else
 			if (i == 0)
 			{
-				DEBUG_COMM2("Timeout! (%d sec)", serialDevice[reader_index].ccid.readTimeout);
+				DEBUG_COMM2("Timeout! (%d ms)", serialDevice[reader_index].ccid.readTimeout);
 				return -1;
 			}
 
@@ -750,7 +750,7 @@
 		unsigned int rx_length = sizeof(rx_buffer);
 
 		/* 2 seconds timeout to not wait too long if no reader is connected */
-		serialDevice[reader].ccid.readTimeout = 2;
+		serialDevice[reader].ccid.readTimeout = 2*1000;
 
 		if (IFD_SUCCESS != CmdEscape(reader_index, tx_buffer, sizeof(tx_buffer),
 			rx_buffer, &rx_length))

Modified: trunk/Drivers/ccid/src/ccid_usb.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/Drivers/ccid/src/ccid_usb.c?rev=4937&op=diff
==============================================================================
--- trunk/Drivers/ccid/src/ccid_usb.c (original)
+++ trunk/Drivers/ccid/src/ccid_usb.c Mon May 10 09:28:02 2010
@@ -623,7 +623,7 @@
 
 	rv = usb_bulk_read(usbDevice[reader_index].handle,
 		usbDevice[reader_index].bulk_in, (char *)buffer, *length,
-		usbDevice[reader_index].ccid.readTimeout * 1000);
+		usbDevice[reader_index].ccid.readTimeout);
 
 	if (rv < 0)
 	{
@@ -952,7 +952,7 @@
 
 	ret = usb_control_msg(usbDevice[reader_index].handle, requesttype,
 		request, value, usbDevice[reader_index].interface, (char *)bytes, size,
-		usbDevice[reader_index].ccid.readTimeout * 1000);
+		usbDevice[reader_index].ccid.readTimeout);
 
 	if (requesttype & 0x80)
 		DEBUG_XXD("receive: ", bytes, ret);

Modified: trunk/Drivers/ccid/src/commands.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/Drivers/ccid/src/commands.c?rev=4937&op=diff
==============================================================================
--- trunk/Drivers/ccid/src/commands.c (original)
+++ trunk/Drivers/ccid/src/commands.c Mon May 10 09:28:02 2010
@@ -446,7 +446,7 @@
 	i2dw(a - 10, cmd + 1);  /* CCID message length */
 
 	old_read_timeout = ccid_descriptor -> readTimeout;
-	ccid_descriptor -> readTimeout = min(30, TxBuffer[0]+10);	/* at least 30 seconds */
+	ccid_descriptor -> readTimeout = min(30, TxBuffer[0]+10)*1000;	/* at least 30 seconds */
 
 	if (WritePort(reader_index, a, cmd) != STATUS_SUCCESS)
 	{
@@ -674,7 +674,7 @@
 	i2dw(a - 10, cmd + 1);	/* command length (includes bPINOperation) */
 
 	old_read_timeout = ccid_descriptor -> readTimeout;
-	ccid_descriptor -> readTimeout = min(30, TxBuffer[0]+10);	/* at least 30 seconds */
+	ccid_descriptor -> readTimeout = min(30, TxBuffer[0]+10)*1000;	/* at least 30 seconds */
 
 	if (WritePort(reader_index, a, cmd) != STATUS_SUCCESS)
 	{
@@ -729,7 +729,7 @@
 	_ccid_descriptor *ccid_descriptor = get_ccid_descriptor(reader_index);
 
 	old_read_timeout = ccid_descriptor -> readTimeout;
-	ccid_descriptor -> readTimeout = 30;	/* 30 seconds */
+	ccid_descriptor -> readTimeout = 30*1000;	/* 30 seconds */
 
 again:
 	/* allocate buffers */

Modified: trunk/Drivers/ccid/src/defs.h
URL: http://svn.debian.org/wsvn/pcsclite/trunk/Drivers/ccid/src/defs.h?rev=4937&op=diff
==============================================================================
--- trunk/Drivers/ccid/src/defs.h (original)
+++ trunk/Drivers/ccid/src/defs.h Mon May 10 09:28:02 2010
@@ -74,8 +74,8 @@
 #define T_0 0
 #define T_1 1
 
-/* Default communication read timeout in seconds */
-#define DEFAULT_COM_READ_TIMEOUT 2
+/* Default communication read timeout in milliseconds */
+#define DEFAULT_COM_READ_TIMEOUT (2*1000)
 
 /*
  * communication ports abstraction

Modified: trunk/Drivers/ccid/src/ifdhandler.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/Drivers/ccid/src/ifdhandler.c?rev=4937&op=diff
==============================================================================
--- trunk/Drivers/ccid/src/ifdhandler.c (original)
+++ trunk/Drivers/ccid/src/ifdhandler.c Mon May 10 09:28:02 2010
@@ -945,7 +945,7 @@
 				break;
 			}
 
-		DEBUG_COMM2("Timeout: %d seconds", ccid_desc->readTimeout);
+		DEBUG_COMM2("Timeout: %d ms", ccid_desc->readTimeout);
 
 		ret = SetParameters(reader_index, 1, sizeof(param), param);
 		if (IFD_SUCCESS != ret)
@@ -986,8 +986,7 @@
 		ccid_desc->readTimeout = T0_card_timeout(f, d, param[2] /* TC1 */,
 			param[3] /* TC2 */, ccid_desc->dwDefaultClock);
 
-		DEBUG_COMM2("Communication timeout: %d seconds",
-			ccid_desc->readTimeout);
+		DEBUG_COMM2("Communication timeout: %d ms", ccid_desc->readTimeout);
 
 		ret = SetParameters(reader_index, 0, sizeof(param), param);
 		if (IFD_SUCCESS != ret)
@@ -1125,7 +1124,7 @@
 			 * 1 ETU = 372 cycles during ATR
 			 * with a 4 MHz clock => 29 seconds
 			 */
-			ccid_descriptor->readTimeout = 60;
+			ccid_descriptor->readTimeout = 60*1000;
 
 			nlength = sizeof(pcbuffer);
 			return_value = CmdPowerOn(reader_index, &nlength, pcbuffer,
@@ -1874,16 +1873,11 @@
 
 	/* ISO in */
 	t  = 261 * EGT + (3 + 3) * WWT;
-	/* Convert from milliseonds to seconds rouned to the upper value
-	 * use +1 instead of ceil() to round up to the nearest integer
-	 * so we can avoid a dependency on the math library */
-	t = t/1000 +1;
 	if (timeout < t)
 		timeout = t;
 
 	/* ISO out */
 	t = 5 * EGT + (1 + 259) * WWT;
-	t = t/1000 +1;
 	if (timeout < t)
 		timeout = t;
 
@@ -1931,11 +1925,6 @@
 
 	timeout = 260*EGT + BWT + 260*CWT;
 
-	/* Convert from milliseonds to seconds rounded to the upper value
-	 * we use +1 instead of ceil() to round up to the nearest greater integer
-	 * so we can avoid a dependency on the math library */
-	timeout = timeout/1000 +1;
-
 	return timeout;
 } /* T1_card_timeout  */
 




More information about the Pcsclite-cvs-commit mailing list