driver_l.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003                              -------------------
00004     cvs         : $Id: driver_l.h 153 2005-12-07 18:05:29Z aquamaniac $
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_DRIVER_DRIVER_L_H
00015 #define CHIPCARD_DRIVER_DRIVER_L_H
00016 
00017 
00018 typedef struct LCD_DRIVER LCD_DRIVER;
00019 
00020 #include <gwenhywfar/ipc.h>
00021 #include <gwenhywfar/inherit.h>
00022 #include <gwenhywfar/types.h>
00023 
00024 #include "reader_l.h"
00025 #include <chipcard2/sharedstuff/pininfo.h>
00026 
00027 
00028 #define LCD_DRIVER_IPC_MAXWORK 256
00029 
00030 #define LCD_DRIVER_ERROR_OFFSET 0x80000000
00031 
00032 
00033 typedef enum {
00034   LCD_DriverCheckArgsResultOk=0,
00035   LCD_DriverCheckArgsResultError,
00036   LCD_DriverCheckArgsResultVersion,
00037   LCD_DriverCheckArgsResultHelp
00038 } LCD_DRIVER_CHECKARGS_RESULT;
00039 
00040 
00041 GWEN_INHERIT_FUNCTION_DEFS(LCD_DRIVER);
00042 
00043 
00044 typedef GWEN_TYPE_UINT32 (*LCD_DRIVER_SENDAPDU_FN)(LCD_DRIVER *d,
00045                                                   int toReader,
00046                                                   LCD_READER *r,
00047                                                   LCD_SLOT *slot,
00048                                                   const unsigned char *apdu,
00049                                                   unsigned int apdulen,
00050                                                   unsigned char *buffer,
00051                                                   int *bufferlen);
00052 typedef GWEN_TYPE_UINT32 (*LCD_DRIVER_CONNECTSLOT_FN)(LCD_DRIVER *d,
00053                                                      LCD_SLOT *sl);
00054 typedef GWEN_TYPE_UINT32 (*LCD_DRIVER_CONNECTREADER_FN)(LCD_DRIVER *d,
00055                                                        LCD_READER *r);
00056 typedef GWEN_TYPE_UINT32 (*LCD_DRIVER_DISCONNECTSLOT_FN)(LCD_DRIVER *d,
00057                                                         LCD_SLOT *sl);
00058 typedef GWEN_TYPE_UINT32 (*LCD_DRIVER_DISCONNECTREADER_FN)(LCD_DRIVER *d,
00059                                                           LCD_READER *r);
00060 typedef GWEN_TYPE_UINT32 (*LCD_DRIVER_RESETSLOT_FN)(LCD_DRIVER *d,
00061                                                    LCD_SLOT *sl);
00062 typedef GWEN_TYPE_UINT32 (*LCD_DRIVER_READERSTATUS_FN)(LCD_DRIVER *d,
00063                                                       LCD_READER *r);
00064 
00065 typedef GWEN_TYPE_UINT32 (*LCD_DRIVER_READERINFO_FN)(LCD_DRIVER *d,
00066                                                     LCD_READER *r,
00067                                                     GWEN_BUFFER *buf);
00068 
00069 typedef LCD_READER* (*LCD_DRIVER_CREATEREADER_FN)(LCD_DRIVER *d,
00070                                                   GWEN_TYPE_UINT32 readerId,
00071                                                   const char *name,
00072                                                   int port,
00073                                                   unsigned int slots,
00074                                                   GWEN_TYPE_UINT32 flags);
00075 
00076 typedef const char* (*LCD_DRIVER_GETERRORTEXT_FN)(LCD_DRIVER *d,
00077                                                   GWEN_TYPE_UINT32 err);
00078 
00079 
00080 typedef int (*LCD_DRIVER_HANDLEREQUEST_FN)(LCD_DRIVER *d,
00081                                            GWEN_TYPE_UINT32 rid,
00082                                            const char *name,
00083                                            GWEN_DB_NODE *dbReq);
00084 
00085 typedef GWEN_TYPE_UINT32
00086   (*LCD_DRIVER_PERFORMVERIFICATION_FN)(LCD_DRIVER *d,
00087                                        LCD_READER *r,
00088                                        LCD_SLOT *slot,
00089                                        const LC_PININFO *pi,
00090                                        int *triesLeft);
00091 
00092 typedef GWEN_TYPE_UINT32
00093   (*LCD_DRIVER_PERFORMMODIFICATION_FN)(LCD_DRIVER *d,
00094                                        LCD_READER *r,
00095                                        LCD_SLOT *slot,
00096                                        const LC_PININFO *pi,
00097                                        int *triesLeft);
00098 
00099 
00100 void LCD_Driver_Usage(const char *prgName);
00101 
00102 LCD_DRIVER *LCD_Driver_new();
00103 void LCD_Driver_free(LCD_DRIVER *d);
00104 
00105 int LCD_Driver_Init(LCD_DRIVER *d, int argc, char **argv);
00106 
00107 const char *LCD_Driver_GetDriverDataDir(const LCD_DRIVER *d);
00108 const char *LCD_Driver_GetLibraryFile(const LCD_DRIVER *d);
00109 const char *LCD_Driver_GetDriverId(const LCD_DRIVER *d);
00110 
00111 int LCD_Driver_Test(LCD_DRIVER *d);
00112 int LCD_Driver_IsTestMode(const LCD_DRIVER *d);
00113 
00114 GWEN_TYPE_UINT32 LCD_Driver_SendCommand(LCD_DRIVER *d,
00115                                        GWEN_DB_NODE *dbCommand);
00116 int LCD_Driver_SendResponse(LCD_DRIVER *d,
00117                            GWEN_TYPE_UINT32 rid,
00118                            GWEN_DB_NODE *dbCommand);
00119 
00120 int LCD_Driver_SendResult(LCD_DRIVER *d,
00121                          GWEN_TYPE_UINT32 rid,
00122                          const char *name,
00123                          const char *code,
00124                          const char *text);
00125 
00126 int LCD_Driver_RemoveCommand(LCD_DRIVER *d,
00127                             GWEN_TYPE_UINT32 rid,
00128                             int outbound);
00129 
00130 GWEN_TYPE_UINT32 LCD_Driver_GetNextInRequest(LCD_DRIVER *d);
00131 GWEN_DB_NODE *LCD_Driver_GetInRequestData(LCD_DRIVER *d,
00132                                          GWEN_TYPE_UINT32 rid);
00133 
00134 int LCD_Driver_Work(LCD_DRIVER *d);
00135 
00136 
00137 LCD_READER_LIST *LCD_Driver_GetReaders(const LCD_DRIVER *d);
00138 LCD_READER *LCD_Driver_FindReader(const LCD_DRIVER *d);
00139 LCD_READER *LCD_Driver_FindReaderByName(const LCD_DRIVER *d, const char *name);
00140 LCD_READER *LCD_Driver_FindReaderByPort(const LCD_DRIVER *d, int port);
00141 LCD_READER *LCD_Driver_FindReaderById(const LCD_DRIVER *d, GWEN_TYPE_UINT32 id);
00142 LCD_READER *LCD_Driver_FindReaderByDriversId(const LCD_DRIVER *d,
00143                                            GWEN_TYPE_UINT32 id);
00144 
00145 void LCD_Driver_AddReader(LCD_DRIVER *d, LCD_READER *r);
00146 void LCD_Driver_DelReader(LCD_DRIVER *d, LCD_READER *r);
00147 
00148 int LCD_Driver_Connect(LCD_DRIVER *d,
00149                        const char *code, const char *text,
00150                        GWEN_TYPE_UINT32 dflagsValue,
00151                        GWEN_TYPE_UINT32 dflagsMask);
00152 void LCD_Driver_Disconnect(LCD_DRIVER *d);
00153 int LCD_Driver_SendStatusChangeNotification(LCD_DRIVER *d,
00154                                            LCD_SLOT *sl);
00155 
00156 int LCD_Driver_SendReaderErrorNotification(LCD_DRIVER *d,
00157                                           LCD_READER *r,
00158                                           const char *text);
00159 
00160 
00161 
00162 GWEN_TYPE_UINT32 LCD_Driver_SendAPDU(LCD_DRIVER *d,
00163                                     int toReader,
00164                                     LCD_READER *r,
00165                                     LCD_SLOT *slot,
00166                                     const unsigned char *apdu,
00167                                     unsigned int apdulen,
00168                                     unsigned char *buffer,
00169                                     int *bufferlen);
00170 GWEN_TYPE_UINT32 LCD_Driver_ConnectSlot(LCD_DRIVER *d, LCD_SLOT *sl);
00171 GWEN_TYPE_UINT32 LCD_Driver_ConnectReader(LCD_DRIVER *d, LCD_READER *r);
00172 
00173 GWEN_TYPE_UINT32 LCD_Driver_DisconnectSlot(LCD_DRIVER *d, LCD_SLOT *sl);
00174 GWEN_TYPE_UINT32 LCD_Driver_DisconnectReader(LCD_DRIVER *d, LCD_READER *r);
00175 
00176 GWEN_TYPE_UINT32 LCD_Driver_ResetSlot(LCD_DRIVER *d, LCD_SLOT *sl);
00177 
00178 
00179 GWEN_TYPE_UINT32 LCD_Driver_ReaderStatus(LCD_DRIVER *d, LCD_READER *r);
00180 
00181 const char *LCD_Driver_GetErrorText(LCD_DRIVER *d, GWEN_TYPE_UINT32 err);
00182 
00183 GWEN_TYPE_UINT32 LCD_Driver_ReaderInfo(LCD_DRIVER *d,
00184                                       LCD_READER *r,
00185                                       GWEN_BUFFER *buf);
00186 
00187 LCD_READER *LCD_Driver_CreateReader(LCD_DRIVER *d,
00188                                     GWEN_TYPE_UINT32 readerId,
00189                                     const char *name,
00190                                     int port,
00191                                     unsigned int slots,
00192                                     GWEN_TYPE_UINT32 flags);
00193 
00194 GWEN_TYPE_UINT32 LCD_Driver_PerformVerification(LCD_DRIVER *d,
00195                                                 LCD_READER *r,
00196                                                 LCD_SLOT *slot,
00197                                                 const LC_PININFO *pi,
00198                                                 int *triesLeft);
00199 
00200 GWEN_TYPE_UINT32 LCD_Driver_PerformModification(LCD_DRIVER *d,
00201                                                 LCD_READER *r,
00202                                                 LCD_SLOT *slot,
00203                                                 const LC_PININFO *pi,
00204                                                 int *triesLeft);
00205 
00206 
00207 void LCD_Driver_SetSendApduFn(LCD_DRIVER *d, LCD_DRIVER_SENDAPDU_FN fn);
00208 void LCD_Driver_SetConnectSlotFn(LCD_DRIVER *d, LCD_DRIVER_CONNECTSLOT_FN fn);
00209 void LCD_Driver_SetDisconnectSlotFn(LCD_DRIVER *d,
00210                                    LCD_DRIVER_DISCONNECTSLOT_FN fn);
00211 void LCD_Driver_SetConnectReaderFn(LCD_DRIVER *d,
00212                                   LCD_DRIVER_CONNECTREADER_FN fn);
00213 void LCD_Driver_SetDisconnectReaderFn(LCD_DRIVER *d,
00214                                      LCD_DRIVER_DISCONNECTREADER_FN fn);
00215 void LCD_Driver_SetResetSlotFn(LCD_DRIVER *d, LCD_DRIVER_RESETSLOT_FN fn);
00216 void LCD_Driver_SetReaderStatusFn(LCD_DRIVER *d,
00217                                  LCD_DRIVER_READERSTATUS_FN fn);
00218 void LCD_Driver_SetReaderInfoFn(LCD_DRIVER *d,
00219                                 LCD_DRIVER_READERINFO_FN fn);
00220 void LCD_Driver_SetCreateReaderFn(LCD_DRIVER *d,
00221                                   LCD_DRIVER_CREATEREADER_FN fn);
00222 void LCD_Driver_SetGetErrorTextFn(LCD_DRIVER *d,
00223                                   LCD_DRIVER_GETERRORTEXT_FN fn);
00224 void LCD_Driver_SetPerformVerificationFn(LCD_DRIVER *d,
00225                                          LCD_DRIVER_PERFORMVERIFICATION_FN f);
00226 void LCD_Driver_SetPerformModificationFn(LCD_DRIVER *d,
00227                                          LCD_DRIVER_PERFORMMODIFICATION_FN f);
00228 void LCD_Driver_SetHandleRequestFn(LCD_DRIVER *d,
00229                                    LCD_DRIVER_HANDLEREQUEST_FN fn);
00230 
00231 
00232 
00233 
00234 
00235 
00236 #endif /* CHIPCARD_DRIVER_DRIVER_L_H */
00237 
00238 
00239 
00240 

Generated on Sun Sep 23 14:52:31 2007 for libchipcard2 by  doxygen 1.5.3