[Pcsclite-cvs-commit] r4645 - /trunk/PCSC/src/ifdwrapper.c

rousseau at users.alioth.debian.org rousseau at users.alioth.debian.org
Fri Jan 8 14:59:22 UTC 2010


Author: rousseau
Date: Fri Jan  8 14:59:22 2010
New Revision: 4645

URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=4645
Log:
better support of PCSCLITE_STATIC_DRIVER.

This is used to statically link the reader driver to pcscd. Since the
link is static you must define the IFDHandler API version at compilation
time.  Either define IFDHANDLERv1, IFDHANDLERv2 or IFDHANDLERv3

Modified:
    trunk/PCSC/src/ifdwrapper.c

Modified: trunk/PCSC/src/ifdwrapper.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/ifdwrapper.c?rev=4645&op=diff
==============================================================================
--- trunk/PCSC/src/ifdwrapper.c (original)
+++ trunk/PCSC/src/ifdwrapper.c Fri Jan  8 14:59:22 2010
@@ -88,18 +88,17 @@
 			dwProtocol, ucFlags, ucPTS1, ucPTS2, ucPTS3);
 	}
 #else
-	if (rContext->dwVersion == IFD_HVERSION_1_0)
+#ifdef IFDHANDLERv1
 	{
 		ucValue[0] = rContext->dwSlot;
 		(void)IFDSetCapabilities(rContext, TAG_IFD_SLOTNUM, 1, ucValue);
 		rv = IFD_Set_Protocol_Parameters(dwProtocol, ucFlags, ucPTS1,
 			ucPTS2, ucPTS3);
 	}
-	else
-	{
-		rv = IFDHSetProtocolParameters(rContext->dwSlot, dwProtocol,
-			ucFlags, ucPTS1, ucPTS2, ucPTS3);
-	}
+#else
+	rv = IFDHSetProtocolParameters(rContext->dwSlot, dwProtocol, ucFlags,
+		ucPTS1, ucPTS2, ucPTS3); 
+#endif
 #endif
 
 	return rv;
@@ -152,13 +151,11 @@
 			rv = (*IFDH_create_channel) (rContext->dwSlot, rContext->dwPort);
 	}
 #else
-	if (rContext->dwVersion == IFD_HVERSION_1_0)
-	{
-		rv = IO_Create_Channel(rContext->dwPort);
-	} else if (rContext->dwVersion == IFD_HVERSION_2_0)
-	{
-		rv = IFDHCreateChannel(rContext->dwSlot, rContext->dwPort);
-	} else
+#ifdef IFDHANDLERv1
+	rv = IO_Create_Channel(rContext->dwPort);
+#elif IFDHANDLERv2
+	rv = IFDHCreateChannel(rContext->dwSlot, rContext->dwPort);
+#else
 	{
 		/* Use device name only if defined */
 		if (rContext->lpcDevice[0] != '\0')
@@ -166,6 +163,7 @@
 		else
 			rv = IFDHCreateChannel(rContext->dwSlot, rContext->dwPort);
 	}
+#endif
 #endif
 
 	/* END OF LOCKED REGION */
@@ -214,10 +212,11 @@
 	else
 		rv = (*IFDH_close_channel) (rContext->dwSlot);
 #else
-	if (rContext->dwVersion == IFD_HVERSION_1_0)
-		rv = IO_Close_Channel();
-	else
-		rv = IFDHCloseChannel(rContext->dwSlot);
+#ifdef IFDHANDLERv1
+	rv = IO_Close_Channel();
+#else
+	rv = IFDHCloseChannel(rContext->dwSlot);
+#endif
 #endif
 
 	/* END OF LOCKED REGION */
@@ -256,11 +255,11 @@
 		rv = (*IFDH_set_capabilities) (rContext->dwSlot, dwTag,
 			dwLength, pucValue);
 #else
-	if (rContext->dwVersion == IFD_HVERSION_1_0)
-		rv = IFD_Set_Capabilities(dwTag, pucValue);
-	else
-		rv = IFDHSetCapabilities(rContext->dwSlot, dwTag, dwLength,
-			pucValue);
+#ifdef IFDHANDLERv1
+	rv = IFD_Set_Capabilities(dwTag, pucValue);
+#else
+	rv = IFDHSetCapabilities(rContext->dwSlot, dwTag, dwLength, pucValue);
+#endif
 #endif
 
 	return rv;
@@ -298,11 +297,11 @@
 		rv = (*IFDH_get_capabilities) (rContext->dwSlot, dwTag,
 			pdwLength, pucValue);
 #else
-	if (rContext->dwVersion == IFD_HVERSION_1_0)
-		rv = IFD_Get_Capabilities(dwTag, pucValue);
-	else
-		rv = IFDHGetCapabilities(rContext->dwSlot, dwTag, pdwLength,
-			pucValue);
+#ifdef IFDHANDLERv1
+	rv = IFD_Get_Capabilities(dwTag, pucValue);
+#else
+	rv = IFDHGetCapabilities(rContext->dwSlot, dwTag, pdwLength, pucValue);
+#endif
 #endif
 
 	/* END OF LOCKED REGION */
@@ -318,8 +317,10 @@
 	PUCHAR pucAtr, PDWORD pdwAtrLen)
 {
 	RESPONSECODE rv;
+#ifndef PCSCLITE_STATIC_DRIVER
 	short ret;
 	SMARTCARD_EXTENSION sSmartCard;
+#endif
 	DWORD dwStatus;
 	UCHAR ucValue[1];
 
@@ -367,14 +368,15 @@
 		ret = ATRDecodeAtr(&sSmartCard, pucAtr, *pdwAtrLen);
 	}
 #else
-	if (rContext->dwVersion == IFD_HVERSION_1_0)
+#ifdef IFDHANDLERv1
 	{
 		ucValue[0] = rContext->dwSlot;
 		(void)IFDSetCapabilities(rContext, TAG_IFD_SLOTNUM, 1, ucValue);
 		rv = IFD_Power_ICC(dwAction);
 	}
-	else
-		rv = IFDHPowerICC(rContext->dwSlot, dwAction, pucAtr, pdwAtrLen);
+#else
+	rv = IFDHPowerICC(rContext->dwSlot, dwAction, pucAtr, pdwAtrLen);
+#endif
 #endif
 
 	/* END OF LOCKED REGION */
@@ -445,14 +447,15 @@
 	else
 		rv = (*IFDH_icc_presence) (rContext->dwSlot);
 #else
-	if (rContext->dwVersion == IFD_HVERSION_1_0)
+#ifdef IFDHANDLERv1
 	{
 		ucValue[0] = rContext->dwSlot;
 		(void)IFDSetCapabilities(rContext, TAG_IFD_SLOTNUM, 1, ucValue);
 		rv = IFD_Is_ICC_Present();
 	}
-	else
-		rv = IFDHICCPresence(rContext->dwSlot);
+#else
+	rv = IFDHICCPresence(rContext->dwSlot);
+#endif
 #endif
 
 	/* END OF LOCKED REGION */
@@ -500,7 +503,9 @@
 #ifndef PCSCLITE_STATIC_DRIVER
 			rv = (*IFD_get_capabilities) (dwTag, pucAtr);
 #else
+#ifdef IFDHANDLERv1
 			rv = IFD_Get_Capabilities(dwTag, pucAtr);
+#endif
 #endif
 
 			/* END OF LOCKED REGION */
@@ -571,8 +576,8 @@
 #ifndef PCSCLITE_STATIC_DRIVER
 	rv = (*IFDH_control_v2) (rContext->dwSlot, TxBuffer, TxLength,
 		RxBuffer, RxLength);
-#else
-	rv = IFDHControl_v2(rContext->dwSlot, TxBuffer, TxLength,
+#elif IFDHANDLERv2
+	rv = IFDHControl(rContext->dwSlot, TxBuffer, TxLength,
 		RxBuffer, RxLength);
 #endif
 
@@ -622,7 +627,7 @@
 #ifndef PCSCLITE_STATIC_DRIVER
 	rv = (*IFDH_control) (rContext->dwSlot, ControlCode, TxBuffer,
 		TxLength, RxBuffer, RxLength, BytesReturned);
-#else
+#elif IFDHANDLERv3
 	rv = IFDHControl(rContext->dwSlot, ControlCode, TxBuffer,
 		TxLength, RxBuffer, RxLength, BytesReturned);
 #endif
@@ -664,7 +669,6 @@
 	PDWORD pdwRxLength, PSCARD_IO_HEADER pioRxPci)
 {
 	RESPONSECODE rv = IFD_SUCCESS;
-	UCHAR ucValue[1] = "\x00";
 
 #ifndef PCSCLITE_STATIC_DRIVER
 	RESPONSECODE(*IFD_transmit_to_icc) (SCARD_IO_HEADER, PUCHAR, DWORD,
@@ -691,6 +695,8 @@
 #ifndef PCSCLITE_STATIC_DRIVER
 	if (rContext->dwVersion == IFD_HVERSION_1_0)
 	{
+		UCHAR ucValue[1];
+
 		ucValue[0] = rContext->dwSlot;
 		(void)IFDSetCapabilities(rContext, TAG_IFD_SLOTNUM, 1, ucValue);
 		rv = (*IFD_transmit_to_icc) (pioTxPci, (LPBYTE) pucTxBuffer,
@@ -701,17 +707,20 @@
 			(LPBYTE) pucTxBuffer, dwTxLength,
 			pucRxBuffer, pdwRxLength, pioRxPci);
 #else
-	if (rContext->dwVersion == IFD_HVERSION_1_0)
-	{
+#ifdef IFDHANDLERv1
+	{
+		UCHAR ucValue[1];
+
 		ucValue[0] = rContext->dwSlot;
 		(void)IFDSetCapabilities(rContext, TAG_IFD_SLOTNUM, 1, ucValue);
 		rv = IFD_Transmit_to_ICC(pioTxPci, (LPBYTE) pucTxBuffer,
 			dwTxLength, pucRxBuffer, pdwRxLength, pioRxPci);
 	}
-	else
-		rv = IFDHTransmitToICC(rContext->dwSlot, pioTxPci,
-			(LPBYTE) pucTxBuffer, dwTxLength,
-			pucRxBuffer, pdwRxLength, pioRxPci);
+#else
+	rv = IFDHTransmitToICC(rContext->dwSlot, pioTxPci,
+		(LPBYTE) pucTxBuffer, dwTxLength,
+		pucRxBuffer, pdwRxLength, pioRxPci);
+#endif
 #endif
 
 	/* END OF LOCKED REGION */




More information about the Pcsclite-cvs-commit mailing list