client.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003                              -------------------
00004     cvs         : $Id: client.h 177 2006-04-28 22:13:46Z martin $
00005     begin       : Mon Mar 01 2004
00006     copyright   : (C) 2004 by Martin Preuss
00007     email       : martin@libchipcard.de
00008 
00009  ***************************************************************************
00010  *          Please see toplevel file COPYING for license details           *
00011  ***************************************************************************/
00012 
00013 
00014 #ifndef CHIPCARD_CLIENT_CLIENT_H
00015 #define CHIPCARD_CLIENT_CLIENT_H
00016 
00017 #ifdef __cplusplus
00018 extern "C" {
00019 #endif
00020 
00021 #include <gwenhywfar/inherit.h>
00022 #include <chipcard2/chipcard2.h>
00023 #include <chipcard2/sharedstuff/pininfo.h>
00024 
00025 
00097 typedef struct LC_CLIENT LC_CLIENT;
00098 
00099 GWEN_INHERIT_FUNCTION_LIB_DEFS(LC_CLIENT, CHIPCARD_API)
00100 
00101 
00104 typedef enum {
00105   LC_Client_ResultOk=0,
00106   LC_Client_ResultWait,
00107   LC_Client_ResultIpcError,
00108   LC_Client_ResultCmdError,
00109   LC_Client_ResultDataError,
00110   LC_Client_ResultAborted,
00111   LC_Client_ResultInvalid,
00112   LC_Client_ResultInternal,
00113   LC_Client_ResultGeneric,
00114   LC_Client_ResultNoData,
00115   LC_Client_ResultCardRemoved,
00116   LC_Client_ResultNotSupported
00117 } LC_CLIENT_RESULT;
00118 
00119 
00123 typedef enum {
00124   LC_Client_CmdTargetCard=0,
00125   LC_Client_CmdTargetReader
00126 } LC_CLIENT_CMDTARGET;
00127 
00128 
00129 #include <gwenhywfar/db.h>
00130 #include <chipcard2-client/client/card.h>
00131 #include <chipcard2-client/client/notifications.h>
00132 #include <chipcard2-client/mon/monitor.h>
00133 
00134 
00141 #define LC_NOTIFY_FLAGS_DRIVER_MASK      0x0000000f
00142 #define LC_NOTIFY_FLAGS_DRIVER_START     0x00000001
00143 #define LC_NOTIFY_FLAGS_DRIVER_UP        0x00000002
00144 #define LC_NOTIFY_FLAGS_DRIVER_DOWN      0x00000004
00145 #define LC_NOTIFY_FLAGS_DRIVER_ERROR     0x00000008
00146 
00147 #define LC_NOTIFY_FLAGS_READER_MASK      0x000000f0
00148 #define LC_NOTIFY_FLAGS_READER_START     0x00000010
00149 #define LC_NOTIFY_FLAGS_READER_UP        0x00000020
00150 #define LC_NOTIFY_FLAGS_READER_DOWN      0x00000040
00151 #define LC_NOTIFY_FLAGS_READER_ERROR     0x00000080
00152 
00153 #define LC_NOTIFY_FLAGS_SERVICE_MASK     0x00000f00
00154 #define LC_NOTIFY_FLAGS_SERVICE_START    0x00000100
00155 #define LC_NOTIFY_FLAGS_SERVICE_UP       0x00000200
00156 #define LC_NOTIFY_FLAGS_SERVICE_DOWN     0x00000400
00157 #define LC_NOTIFY_FLAGS_SERVICE_ERROR    0x00000800
00158 
00159 #define LC_NOTIFY_FLAGS_CARD_MASK        0x0000f000
00160 #define LC_NOTIFY_FLAGS_CARD_INSERTED    0x00001000
00161 #define LC_NOTIFY_FLAGS_CARD_REMOVED     0x00002000
00162 #define LC_NOTIFY_FLAGS_CARD_RFU1        0x00004000
00163 #define LC_NOTIFY_FLAGS_CARD_RFU2        0x00008000
00164 
00165 #define LC_NOTIFY_FLAGS_CLIENT_MASK      0x0fff0000
00166 #define LC_NOTIFY_FLAGS_CLIENT_UP        0x00010000
00167 #define LC_NOTIFY_FLAGS_CLIENT_DOWN      0x00020000
00168 #define LC_NOTIFY_FLAGS_CLIENT_STARTWAIT 0x00040000
00169 #define LC_NOTIFY_FLAGS_CLIENT_STOPWAIT  0x00080000
00170 #define LC_NOTIFY_FLAGS_CLIENT_TAKECARD  0x00100000
00171 #define LC_NOTIFY_FLAGS_CLIENT_GOTCARD   0x00200000
00172 
00173 #define LC_NOTIFY_FLAGS_CLIENT_CMDSEND   0x00400000
00174 #define LC_NOTIFY_FLAGS_CLIENT_CMDRECV   0x00800000
00175 
00176 #define LC_NOTIFY_FLAGS_PRIVILEGED (\
00177   LC_NOTIFY_FLAGS_CLIENT_CMDSEND |\
00178   LC_NOTIFY_FLAGS_CLIENT_CMDRECV)
00179 
00186 typedef int (*LC_CLIENT_HANDLE_INREQUEST_FN)(LC_CLIENT *cl,
00187                                              GWEN_TYPE_UINT32 rid,
00188                                              GWEN_DB_NODE *dbReq);
00189 
00190 typedef void (*LC_CLIENT_SERVER_DOWN_FN)(LC_CLIENT *cl,
00191                                          GWEN_TYPE_UINT32 serverId);
00199 
00210 LC_CLIENT *LC_Client_new(const char *programName,
00211                          const char *programVersion,
00212                          const char *dataDir);
00213 void LC_Client_free(LC_CLIENT *cl);
00214 
00220 int LC_Client_ReadConfig(LC_CLIENT *cl, GWEN_DB_NODE *db);
00221 
00229 int LC_Client_ReadConfigFile(LC_CLIENT *cl, const char *fname);
00230 
00238 void LC_Client_SetHandleInRequestFn(LC_CLIENT *cl,
00239                                     LC_CLIENT_HANDLE_INREQUEST_FN fn);
00240 void LC_Client_SetServerDownFn(LC_CLIENT *cl,
00241                                LC_CLIENT_SERVER_DOWN_FN fn);
00242 
00243 int LC_Client_SendResponse(LC_CLIENT *cl,
00244                            GWEN_TYPE_UINT32 rid,
00245                            GWEN_DB_NODE *dbCommand);
00246 
00247 void LC_Client_RemoveInRequest(LC_CLIENT *cl, GWEN_TYPE_UINT32 rid);
00256 int LC_Client_GetShortTimeout(const LC_CLIENT *cl);
00257 int LC_Client_GetLongTimeout(const LC_CLIENT *cl);
00265 LCM_MONITOR *LC_Client_GetMonitor(const LC_CLIENT *cl);
00266 
00267 LC_CLIENT_RESULT LC_Client_SetNotify(LC_CLIENT *cl, GWEN_TYPE_UINT32 flags);
00268 
00276 LC_CLIENT_RESULT LC_Client_CheckResponse(LC_CLIENT *cl, GWEN_TYPE_UINT32 rid);
00277 LC_CLIENT_RESULT LC_Client_CheckResponse_Wait(LC_CLIENT *cl,
00278                                               GWEN_TYPE_UINT32 rid,
00279                                               int timeout);
00280 int LC_Client_Work(LC_CLIENT *cl, int maxmsg);
00281 LC_CLIENT_RESULT LC_Client_Work_Wait(LC_CLIENT *cl, int timeout);
00282 int LC_Client_DeleteRequest(LC_CLIENT *cl, GWEN_TYPE_UINT32 rid);
00291 
00292 LC_CLIENT_RESULT LC_Client_StartWait(LC_CLIENT *cl,
00293                                      GWEN_TYPE_UINT32 rflags,
00294                                      GWEN_TYPE_UINT32 rmask);
00295 
00296 GWEN_TYPE_UINT32 LC_Client_SendStartWait(LC_CLIENT *cl,
00297                                          GWEN_TYPE_UINT32 rflags,
00298                                          GWEN_TYPE_UINT32 rmask);
00299 LC_CLIENT_RESULT LC_Client_CheckStartWait(LC_CLIENT *cl,
00300                                           GWEN_TYPE_UINT32 rid);
00301 
00302 
00303 LC_CLIENT_RESULT LC_Client_StopWait(LC_CLIENT *cl);
00304 
00305 LC_CARD *LC_Client_GetNextCard(LC_CLIENT *cl);
00306 LC_CARD *LC_Client_PeekNextCard(LC_CLIENT *cl);
00307 LC_CARD *LC_Client_WaitForNextCard(LC_CLIENT *cl, int timeout);
00315 LC_CLIENT_RESULT LC_Client_OpenService(LC_CLIENT *cl,
00316                                        GWEN_TYPE_UINT32 serverId,
00317                                        GWEN_TYPE_UINT32 svid,
00318                                        GWEN_DB_NODE *dbData);
00319 
00320 LC_CLIENT_RESULT LC_Client_CloseService(LC_CLIENT *cl,
00321                                         GWEN_TYPE_UINT32 serverId,
00322                                         GWEN_TYPE_UINT32 svid,
00323                                         GWEN_DB_NODE *dbData);
00324 
00325 LC_CLIENT_RESULT LC_Client_ServiceCommand(LC_CLIENT *cl,
00326                                           GWEN_TYPE_UINT32 serverId,
00327                                           GWEN_TYPE_UINT32 svid,
00328                                           GWEN_DB_NODE *dbData,
00329                                           GWEN_DB_NODE *dbCmdResp);
00337 
00338 LC_CLIENT_RESULT LC_Client_LockReader(LC_CLIENT *cl,
00339                                       GWEN_TYPE_UINT32 serverId,
00340                                       GWEN_TYPE_UINT32 readerId,
00341                                       GWEN_TYPE_UINT32 *lockId);
00342 
00343 LC_CLIENT_RESULT LC_Client_UnlockReader(LC_CLIENT *cl,
00344                                         GWEN_TYPE_UINT32 serverId,
00345                                         GWEN_TYPE_UINT32 readerId,
00346                                         GWEN_TYPE_UINT32 lockId);
00347 
00348 LC_CLIENT_RESULT LC_Client_ReaderCommand(LC_CLIENT *cl,
00349                                          GWEN_TYPE_UINT32 serverId,
00350                                          GWEN_TYPE_UINT32 readerId,
00351                                          GWEN_TYPE_UINT32 lockId,
00352                                          GWEN_DB_NODE *dbData,
00353                                          GWEN_DB_NODE *dbCmdResp);
00354 
00355 
00363 
00367 void LC_Card_ShowError(LC_CARD *card, LC_CLIENT_RESULT res,
00368                        const char *failedCommand);
00373  /* defgroup */
00374 
00375 
00376 
00377 #ifdef __cplusplus
00378 }
00379 #endif
00380 
00381 #endif /* CHIPCARD_CLIENT_CLIENT_H */
00382 
00383 
00384 
00385 

Generated on Sat Sep 22 04:38:38 2007 for libchipcard2 by  doxygen 1.5.3