[Pcsclite-cvs-commit] r2325 - trunk/PCSC/doc/example

Ludovic Rousseau rousseau at alioth.debian.org
Wed Jan 10 10:57:33 CET 2007


Author: rousseau
Date: 2007-01-10 10:57:33 +0100 (Wed, 10 Jan 2007)
New Revision: 2325

Modified:
   trunk/PCSC/doc/example/pcsc_demo.c
Log:
improve code to be able to also use T=1 cards


Modified: trunk/PCSC/doc/example/pcsc_demo.c
===================================================================
--- trunk/PCSC/doc/example/pcsc_demo.c	2007-01-10 09:41:13 UTC (rev 2324)
+++ trunk/PCSC/doc/example/pcsc_demo.c	2007-01-10 09:57:33 UTC (rev 2325)
@@ -63,6 +63,7 @@
 	char pbReader[MAX_READERNAME] = "";
 	int reader_nb;
 	int i;
+    SCARD_IO_REQUEST *pioSendPci;
 	SCARD_IO_REQUEST pioRecvPci;
 	BYTE pbRecvBuffer[10];
 	BYTE pbSendBuffer[] = { 0xC0, 0xA4, 0x00, 0x00, 0x02, 0x3F, 0x00 };
@@ -173,10 +174,23 @@
 	printf("\n");
 	PCSC_ERROR(rv, "SCardStatus")
 
+    switch(dwActiveProtocol)
+    {
+        case SCARD_PROTOCOL_T0:
+            pioSendPci = SCARD_PCI_T0;
+            break;
+        case SCARD_PROTOCOL_T1:
+            pioSendPci = SCARD_PCI_T1;
+            break;
+        default:
+            printf("Unknown protocol\n");
+            return -1;
+    }
+
 	/* exchange APDU */
 	dwSendLength = sizeof(pbSendBuffer);
 	dwRecvLength = sizeof(pbRecvBuffer);
-	rv = SCardTransmit(hCard, SCARD_PCI_T0, pbSendBuffer, dwSendLength,
+	rv = SCardTransmit(hCard, pioSendPci, pbSendBuffer, dwSendLength,
 		&pioRecvPci, pbRecvBuffer, &dwRecvLength);
 	PCSC_ERROR(rv, "SCardTransmit")
 
@@ -187,14 +201,14 @@
 	/* connect to a card */
 	dwActiveProtocol = -1;
 	rv = SCardConnect(hContext, readers[reader_nb], SCARD_SHARE_EXCLUSIVE,
-		SCARD_PROTOCOL_T0, &hCard, &dwActiveProtocol);
+		SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1, &hCard, &dwActiveProtocol);
 	printf(" Protocol: %ld\n", dwActiveProtocol);
 	PCSC_ERROR(rv, "SCardConnect")
 
 	/* exchange APDU */
 	dwSendLength = sizeof(pbSendBuffer);
 	dwRecvLength = sizeof(pbRecvBuffer);
-	rv = SCardTransmit(hCard, SCARD_PCI_T0, pbSendBuffer, dwSendLength,
+	rv = SCardTransmit(hCard, pioSendPci, pbSendBuffer, dwSendLength,
 		&pioRecvPci, pbRecvBuffer, &dwRecvLength);
 	PCSC_ERROR(rv, "SCardTransmit")
 
@@ -234,7 +248,7 @@
 	/* exchange APDU */
 	dwSendLength = sizeof(pbSendBuffer);
 	dwRecvLength = sizeof(pbRecvBuffer);
-	rv = SCardTransmit(hCard, SCARD_PCI_T0, pbSendBuffer, dwSendLength,
+	rv = SCardTransmit(hCard, pioSendPci, pbSendBuffer, dwSendLength,
 		&pioRecvPci, pbRecvBuffer, &dwRecvLength);
 	PCSC_ERROR(rv, "SCardTransmit")
 




More information about the Pcsclite-cvs-commit mailing list