readerfactory.c File Reference

This keeps track of a list of currently available reader structures. More...

#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include <fcntl.h>
#include "misc.h"
#include "pcscd.h"
#include "ifdhandler.h"
#include "debuglog.h"
#include "thread_generic.h"
#include "readerfactory.h"
#include "dyn_generic.h"
#include "sys_generic.h"
#include "eventhandler.h"
#include "ifdwrapper.h"
#include "hotplug.h"
#include "strlcpycat.h"
#include "configfile.h"

Include dependency graph for readerfactory.c:

Go to the source code of this file.

Defines

#define TRUE   1
#define FALSE   0
#define IDENTITY_SHIFT   16
#define GET_ADDRESS_OPTIONALv1(field, function, code)
#define GET_ADDRESSv1(field, function)
#define GET_ADDRESS_OPTIONALv2(s, code)
#define GET_ADDRESSv2(s)
#define GET_ADDRESS_OPTIONALv3(s, code)
#define GET_ADDRESSv3(s)

Functions

LONG RFAllocateReaderSpace (void)
LONG RFAddReader (LPSTR lpcReader, DWORD dwPort, LPSTR lpcLibrary, LPSTR lpcDevice)
LONG RFRemoveReader (LPSTR lpcReader, DWORD dwPort)
LONG RFSetReaderName (PREADER_CONTEXT rContext, LPSTR readerName, LPSTR libraryName, DWORD dwPort, DWORD dwSlot)
LONG RFReaderInfo (LPSTR lpcReader, PREADER_CONTEXT *sReader)
LONG RFReaderInfoNamePort (DWORD dwPort, LPSTR lpcReader, PREADER_CONTEXT *sReader)
LONG RFReaderInfoById (DWORD dwIdentity, PREADER_CONTEXT *sReader)
LONG RFLoadReader (PREADER_CONTEXT rContext)
LONG RFBindFunctions (PREADER_CONTEXT rContext)
LONG RFUnBindFunctions (PREADER_CONTEXT rContext)
LONG RFUnloadReader (PREADER_CONTEXT rContext)
LONG RFCheckSharing (DWORD hCard)
LONG RFLockSharing (DWORD hCard)
LONG RFUnlockSharing (DWORD hCard)
LONG RFUnblockContext (SCARDCONTEXT hContext)
LONG RFUnblockReader (PREADER_CONTEXT rContext)
LONG RFInitializeReader (PREADER_CONTEXT rContext)
LONG RFUnInitializeReader (PREADER_CONTEXT rContext)
SCARDHANDLE RFCreateReaderHandle (PREADER_CONTEXT rContext)
LONG RFFindReaderHandle (SCARDHANDLE hCard)
LONG RFDestroyReaderHandle (SCARDHANDLE hCard)
LONG RFAddReaderHandle (PREADER_CONTEXT rContext, SCARDHANDLE hCard)
LONG RFRemoveReaderHandle (PREADER_CONTEXT rContext, SCARDHANDLE hCard)
LONG RFSetReaderEventState (PREADER_CONTEXT rContext, DWORD dwEvent)
LONG RFCheckReaderEventState (PREADER_CONTEXT rContext, SCARDHANDLE hCard)
LONG RFClearReaderEventState (PREADER_CONTEXT rContext, SCARDHANDLE hCard)
LONG RFCheckReaderStatus (PREADER_CONTEXT rContext)
void RFCleanupReaders (int shouldExit)
int RFStartSerialReaders (const char *readerconf)
void RFReCheckReaderConf (void)
void RFSuspendAllReaders (void)
void RFAwakeAllReaders (void)

Variables

static PREADER_CONTEXT sReadersContexts [PCSCLITE_MAX_READERS_CONTEXTS]
static DWORD dwNumReadersContexts = 0
static char * ConfigFile = NULL
static int ConfigFileCRC = 0
static PCSCLITE_MUTEX LockMutex = PTHREAD_MUTEX_INITIALIZER


Detailed Description

This keeps track of a list of currently available reader structures.

Definition in file readerfactory.c.


Define Documentation

#define GET_ADDRESS_OPTIONALv1 ( field,
function,
code   ) 

Value:

{ \
    void *f1 = NULL; \
    if (SCARD_S_SUCCESS != DYN_GetAddress(rContext->vHandle, &f1, "IFD_" #function)) \
    { \
        code \
    } \
    rContext->psFunctions.psFunctions_v1.pvf ## field = f1; \
}

#define GET_ADDRESS_OPTIONALv2 ( s,
code   ) 

Value:

{ \
    void *f1 = NULL; \
    if (SCARD_S_SUCCESS != DYN_GetAddress(rContext->vHandle, &f1, "IFDH" #s)) \
    { \
        code \
    } \
    rContext->psFunctions.psFunctions_v2.pvf ## s = f1; \
}

#define GET_ADDRESS_OPTIONALv3 ( s,
code   ) 

Value:

{ \
    void *f1 = NULL; \
    if (SCARD_S_SUCCESS != DYN_GetAddress(rContext->vHandle, &f1, "IFDH" #s)) \
    { \
        code \
    } \
    rContext->psFunctions.psFunctions_v3.pvf ## s = f1; \
}

#define GET_ADDRESSv1 ( field,
function   ) 

Value:

GET_ADDRESS_OPTIONALv1(field, function, \
        Log1(PCSC_LOG_CRITICAL, "IFDHandler functions missing: " #function ); \
        exit(1); )

#define GET_ADDRESSv2 (  ) 

Value:

GET_ADDRESS_OPTIONALv2(s, \
        Log1(PCSC_LOG_CRITICAL, "IFDHandler functions missing: " #s ); \
        exit(1); )

#define GET_ADDRESSv3 (  ) 

Value:

GET_ADDRESS_OPTIONALv3(s, \
        Log1(PCSC_LOG_CRITICAL, "IFDHandler functions missing: " #s ); \
        exit(1); )


Generated on Mon Aug 17 01:00:14 2009 for pcsc-lite by  doxygen 1.5.9