[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