Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
devel:ARM:Factory:Contrib:ILP32
pcsc-acsccid
acsccid-1.1.11-polling-thread.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File acsccid-1.1.11-polling-thread.patch of Package pcsc-acsccid
Index: acsccid-1.1.11/src/ifdhandler.c =================================================================== --- acsccid-1.1.11.orig/src/ifdhandler.c +++ acsccid-1.1.11/src/ifdhandler.c @@ -433,7 +433,7 @@ EXTERNAL RESPONSECODE IFDHCloseChannel(D #if !defined(TWIN_SERIAL) -static RESPONSECODE IFDHPolling(DWORD Lun, int timeout) +static RESPONSECODE IFDHPollingWithTimeout(DWORD Lun, int timeout) { int reader_index; @@ -450,7 +450,7 @@ static RESPONSECODE IFDHPolling(DWORD Lu /* on an ICCD device the card is always inserted * so no card movement will ever happen: just do nothing */ -static RESPONSECODE IFDHSleep(DWORD Lun, int timeout) +static RESPONSECODE IFDHSleepWithTimeout(DWORD Lun, int timeout) { int reader_index; @@ -484,6 +484,16 @@ static RESPONSECODE IFDHStopPolling(DWOR (void)InterruptStop(reader_index); return IFD_SUCCESS; } + +static RESPONSECODE IFDHPolling(DWORD Lun) +{ + return IFDHPollingWithTimeout(Lun, 2 * 1000); /* 2 seconds */ +} + +static RESPONSECODE IFDHSleep(DWORD Lun) +{ + return IFDHSleepWithTimeout(Lun, 10 * 60 * 1000); /* 10 minutes */ +} #endif @@ -703,7 +713,7 @@ EXTERNAL RESPONSECODE IFDHGetCapabilitie { *Length = sizeof(void *); if (Value) - *(void **)Value = IFDHPolling; + *(void **)Value = IFDHPollingWithTimeout; } if ((PROTOCOL_ICCD_A == ccid_desc->bInterfaceProtocol) @@ -711,7 +721,7 @@ EXTERNAL RESPONSECODE IFDHGetCapabilitie { *Length = sizeof(void *); if (Value) - *(void **)Value = IFDHSleep; + *(void **)Value = IFDHSleepWithTimeout; } } break; @@ -763,6 +773,44 @@ EXTERNAL RESPONSECODE IFDHGetCapabilitie } } break; + + case TAG_IFD_POLLING_THREAD: + { + _ccid_descriptor *ccid_desc; + + /* default value: not supported */ + *Length = 0; + + ccid_desc = get_ccid_descriptor(reader_index); + + /* Disable polling thread. */ + if ((ccid_desc->readerID == ACS_APG8201_B2) + || (ccid_desc->readerID == ACS_APG8201_B2RO) + || ccid_desc->isSamSlot) + { + break; + } + + /* CCID and not ICCD */ + if (((PROTOCOL_CCID == ccid_desc -> bInterfaceProtocol) + || (PROTOCOL_ACR38 == ccid_desc -> bInterfaceProtocol)) + /* 3 end points */ + && (3 == ccid_desc -> bNumEndpoints)) + { + *Length = sizeof(void *); + if (Value) + *(void **)Value = IFDHPolling; + } + + if ((PROTOCOL_ICCD_A == ccid_desc->bInterfaceProtocol) + || (PROTOCOL_ICCD_B == ccid_desc->bInterfaceProtocol)) + { + *Length = sizeof(void *); + if (Value) + *(void **)Value = IFDHSleep; + } + } + break; #endif case SCARD_ATTR_VENDOR_IFD_SERIAL_NO:
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor