00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef CHIPCARD_SERVER_DEVICEMANAGER_L_H
00015 #define CHIPCARD_SERVER_DEVICEMANAGER_L_H
00016
00017
00018 #include <gwenhywfar/types.h>
00019 #include <gwenhywfar/ipc.h>
00020 #include <gwenhywfar/inherit.h>
00021 #include <gwenhywfar/stringlist.h>
00022
00023
00032 typedef struct LCDM_DEVICEMANAGER LCDM_DEVICEMANAGER;
00033
00034 GWEN_INHERIT_FUNCTION_DEFS(LCDM_DEVICEMANAGER)
00035
00036
00037 #include "server_l.h"
00038 #include "lockmanager_l.h"
00039 #include <chipcard2/chipcard2.h>
00040 #include "common/card.h"
00041 #include "common/devmonitor.h"
00042
00043
00044
00045 LCDM_DEVICEMANAGER *LCDM_DeviceManager_new(LCS_SERVER *server);
00046 void LCDM_DeviceManager_free(LCDM_DEVICEMANAGER *dm);
00047
00048 int LCDM_DeviceManager_Init(LCDM_DEVICEMANAGER *dm, GWEN_DB_NODE *dbConfig);
00049 int LCDM_DeviceManager_Fini(LCDM_DEVICEMANAGER *dm);
00050
00051 void LCDM_DeviceManager_BeginUseCard(LCDM_DEVICEMANAGER *dm, LCCO_CARD *cd);
00052 void LCDM_DeviceManager_EndUseCard(LCDM_DEVICEMANAGER *dm, LCCO_CARD *cd);
00053
00054 void LCDM_DeviceManager_BeginUseReader(LCDM_DEVICEMANAGER *dm,
00055 GWEN_TYPE_UINT32 rid);
00056 void LCDM_DeviceManager_EndUseReader(LCDM_DEVICEMANAGER *dm,
00057 GWEN_TYPE_UINT32 rid);
00058
00059
00063 void LCDM_DeviceManager_BeginUseReaders(LCDM_DEVICEMANAGER *dm);
00064 void LCDM_DeviceManager_EndUseReaders(LCDM_DEVICEMANAGER *dm, int count);
00065
00066
00067 void LCDM_DeviceManager_DriverIpcDown(LCDM_DEVICEMANAGER *dm,
00068 GWEN_TYPE_UINT32 ipcId);
00069
00074 int LCDM_DeviceManager_ListReaders(LCDM_DEVICEMANAGER *dm);
00075
00080 int LCDM_DeviceManager_ListDrivers(LCDM_DEVICEMANAGER *dm);
00081
00082
00086 int LCDM_DeviceManager_Work(LCDM_DEVICEMANAGER *dm);
00087
00088 int LCDM_DeviceManager_HandleRequest(LCDM_DEVICEMANAGER *dm,
00089 GWEN_TYPE_UINT32 rid,
00090 const char *name,
00091 GWEN_DB_NODE *dbReq);
00092
00093 GWEN_TYPE_UINT32 LCDM_DeviceManager_SendCardCommand(LCDM_DEVICEMANAGER *dm,
00094 LCCO_CARD *card,
00095 GWEN_DB_NODE *dbCmd);
00096
00097 const char *LCDM_DeviceManager_GetDriverVar(LCDM_DEVICEMANAGER *dm,
00098 LCCO_CARD *card,
00099 const char *vname);
00100
00101 void LCDM_DeviceManager_DumpState(const LCDM_DEVICEMANAGER *dm);
00102
00103
00104
00105 LCS_LOCKMANAGER*
00106 LCDM_DeviceManager_GetLockManager(const LCDM_DEVICEMANAGER *dm,
00107 GWEN_TYPE_UINT32 rid,
00108 int slot);
00109
00110 void LCDM_DeviceManager_ClientDown(LCDM_DEVICEMANAGER *dm,
00111 GWEN_TYPE_UINT32 clid);
00112
00113
00114 GWEN_TYPE_UINT32 LCDM_DeviceManager_LockReader(LCDM_DEVICEMANAGER *dm,
00115 GWEN_TYPE_UINT32 rid,
00116 GWEN_TYPE_UINT32 clid,
00117 int maxLockTime,
00118 int maxLockCount);
00119 int LCDM_DeviceManager_CheckLockReaderRequest(LCDM_DEVICEMANAGER *dm,
00120 GWEN_TYPE_UINT32 rid,
00121 GWEN_TYPE_UINT32 rqid);
00122 int LCDM_DeviceManager_RemoveLockReaderRequest(LCDM_DEVICEMANAGER *dm,
00123 GWEN_TYPE_UINT32 rid,
00124 GWEN_TYPE_UINT32 rqid);
00125
00126 int LCDM_DeviceManager_CheckLockReaderAccess(LCDM_DEVICEMANAGER *dm,
00127 GWEN_TYPE_UINT32 rid,
00128 GWEN_TYPE_UINT32 rqid);
00129
00130 int LCDM_DeviceManager_UnlockReader(LCDM_DEVICEMANAGER *dm,
00131 GWEN_TYPE_UINT32 rid,
00132 GWEN_TYPE_UINT32 rqid);
00133
00134 int LCDM_DeviceManager_SuspendReaderCheck(LCDM_DEVICEMANAGER *dm,
00135 GWEN_TYPE_UINT32 rid);
00136
00137 void LCDM_DeviceManager_ResumeReaderCheck(LCDM_DEVICEMANAGER *dm,
00138 GWEN_TYPE_UINT32 rid);
00139
00140 GWEN_TYPE_UINT32
00141 LCDM_DeviceManager_SendReaderCommand(LCDM_DEVICEMANAGER *dm,
00142 GWEN_TYPE_UINT32 readerId,
00143 GWEN_DB_NODE *dbCmd);
00144
00145
00146 #endif
00147
00148
00149