66 DWORD dwPreferred, UCHAR ucAvailable, UCHAR ucDefault)
74 return SET_PROTOCOL_WRONG_ARGUMENT;
77 if (! (dwPreferred & ucAvailable))
91 Log2(PCSC_LOG_ERROR,
"Protocol T=%d requested but unsupported by the card",
93 return SET_PROTOCOL_WRONG_ARGUMENT;
100 dwPreferred &= ucAvailable;
110 return SET_PROTOCOL_WRONG_ARGUMENT;
112 Log2(PCSC_LOG_INFO,
"Attempting PTS to T=%d",
113 (SCARD_PROTOCOL_T0 == ucChosen ? 0 : 1));
114 rv =
IFDSetPTS(rContext, ucChosen, 0x00, 0x00, 0x00, 0x00);
120 Log2(PCSC_LOG_INFO,
"PTS not supported by driver, using T=%d",
121 (SCARD_PROTOCOL_T0 == protocol) ? 0 : 1);
124 Log2(PCSC_LOG_INFO,
"PTS protocol not supported, using T=%d",
125 (SCARD_PROTOCOL_T0 == protocol) ? 0 : 1);
128 Log3(PCSC_LOG_INFO,
"PTS failed (%ld), using T=%d", rv,
129 (SCARD_PROTOCOL_T0 == protocol) ? 0 : 1);
135 return SET_PROTOCOL_PPS_FAILED;
LONG IFDSetPTS(READER_CONTEXT *rContext, DWORD dwProtocol, UCHAR ucFlags, UCHAR ucPTS1, UCHAR ucPTS2, UCHAR ucPTS3)
Set the protocol type selection (PTS).
#define IFD_NOT_SUPPORTED
request is not supported
This handles protocol defaults, PTS, etc.
This wraps the dynamic ifdhandler functions.
#define SCARD_PROTOCOL_T1
T=1 active protocol.
This keeps track of smart card protocols, timing issues and Answer to Reset ATR handling.
#define SCARD_PROTOCOL_T0
T=0 active protocol.
This handles card insertion/removal events, updates ATR, protocol, and status information.
DWORD PHSetProtocol(struct ReaderContext *rContext, DWORD dwPreferred, UCHAR ucAvailable, UCHAR ucDefault)
Determine which protocol to use.
This keeps a list of defines for pcsc-lite.
This keeps track of a list of currently available reader structures.
#define IFD_PROTOCOL_NOT_SUPPORTED
requested protocol not supported
#define IFD_SUCCESS
no error