00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef CHIPCARD_SERVICE_SERVICE_H
00015 #define CHIPCARD_SERVICE_SERVICE_H
00016
00017
00018 typedef struct LC_SERVICE LC_SERVICE;
00019
00020 #include <gwenhywfar/ipc.h>
00021 #include <gwenhywfar/inherit.h>
00022 #include <gwenhywfar/types.h>
00023
00024 #include <chipcard/client/service/serviceclient.h>
00025 #include <chipcard/client/client.h>
00026
00027
00028 typedef enum {
00029 LC_ServiceCheckArgsResultOk=0,
00030 LC_ServiceCheckArgsResultError,
00031 LC_ServiceCheckArgsResultVersion,
00032 LC_ServiceCheckArgsResultHelp
00033 } LC_SERVICE_CHECKARGS_RESULT;
00034
00035
00036 typedef uint32_t (*LC_SERVICE_OPEN_FN)(LC_CLIENT *cl,
00037 LC_SERVICECLIENT *scl,
00038 GWEN_DB_NODE *dbData);
00039
00040 typedef uint32_t (*LC_SERVICE_CLOSE_FN)(LC_CLIENT *cl,
00041 LC_SERVICECLIENT *scl,
00042 GWEN_DB_NODE *dbData);
00043
00044 typedef uint32_t (*LC_SERVICE_COMMAND_FN)(LC_CLIENT *cl,
00045 LC_SERVICECLIENT *scl,
00046 GWEN_DB_NODE *dbRequest,
00047 GWEN_DB_NODE *dbResponse);
00048
00049 typedef int (*LC_SERVICE_WORK_FN)(LC_CLIENT *cl);
00050
00051 typedef const char* (*LC_SERVICE_GETERRORTEXT_FN)(LC_CLIENT *cl,
00052 uint32_t err);
00053
00054
00055 CHIPCARD_API
00056 void LC_Service_Usage(const char *prgName);
00057
00058
00059 CHIPCARD_API
00060 LC_CLIENT *LC_Service_new(int argc, char **argv);
00061
00062 CHIPCARD_API
00063 void LC_Service_free(LC_SERVICE *d);
00064
00065
00066 CHIPCARD_API
00067 const char *LC_Service_GetServiceDataDir(const LC_CLIENT *d);
00068
00069 CHIPCARD_API
00070 const char *LC_Service_GetServiceConfigDir(const LC_CLIENT *d);
00071
00072 CHIPCARD_API
00073 const char *LC_Service_GetLibraryFile(const LC_CLIENT *d);
00074
00075 CHIPCARD_API
00076 const char *LC_Service_GetServiceId(const LC_CLIENT *d);
00077
00078
00079 CHIPCARD_API
00080 LC_SERVICECLIENT_LIST *LC_Service_GetClients(const LC_CLIENT *d);
00081
00082
00083 CHIPCARD_API
00084 int LC_Service_Connect(LC_CLIENT *cl, const char *code, const char *text);
00085
00086
00087 CHIPCARD_API
00088 int LC_Service_Work(LC_CLIENT *d);
00089
00090
00091 CHIPCARD_API
00092 uint32_t LC_Service_Open(LC_CLIENT *d,
00093 LC_SERVICECLIENT *scl,
00094 GWEN_DB_NODE *dbData);
00095
00096
00097 CHIPCARD_API
00098 uint32_t LC_Service_Close(LC_CLIENT *d,
00099 LC_SERVICECLIENT *scl,
00100 GWEN_DB_NODE *dbData);
00101
00102
00103 CHIPCARD_API
00104 uint32_t LC_Service_Command(LC_CLIENT *d,
00105 LC_SERVICECLIENT *scl,
00106 GWEN_DB_NODE *dbRequest,
00107 GWEN_DB_NODE *dbResponse);
00108
00109
00110 CHIPCARD_API
00111 const char *LC_Service_GetErrorText(LC_CLIENT *d,
00112 uint32_t err);
00113
00114
00115
00116 CHIPCARD_API
00117 void LC_Service_SetOpenFn(LC_CLIENT *d, LC_SERVICE_OPEN_FN fn);
00118
00119 CHIPCARD_API
00120 void LC_Service_SetCloseFn(LC_CLIENT *d, LC_SERVICE_CLOSE_FN fn);
00121
00122 CHIPCARD_API
00123 void LC_Service_SetCommandFn(LC_CLIENT *d, LC_SERVICE_COMMAND_FN fn);
00124
00125 CHIPCARD_API
00126 void LC_Service_SetGetErrorTextFn(LC_CLIENT *d,
00127 LC_SERVICE_GETERRORTEXT_FN fn);
00128
00129 CHIPCARD_API
00130 void LC_Service_SetWorkFn(LC_CLIENT *d, LC_SERVICE_WORK_FN fn);
00131
00132
00133
00134
00135 CHIPCARD_API
00136 LC_SERVICECLIENT *LC_Service_FindClientById(const LC_CLIENT *d,
00137 uint32_t id);
00138
00139 CHIPCARD_API
00140 void LC_Service_AddClient(LC_CLIENT *d, LC_SERVICECLIENT *cl);
00141
00142 CHIPCARD_API
00143 void LC_Service_DelClient(LC_CLIENT *d, LC_SERVICECLIENT *cl);
00144
00145 CHIPCARD_API
00146 int LC_Service_Connect(LC_CLIENT *d,
00147 const char *code,
00148 const char *text);
00149
00150
00151
00152
00153
00154
00155
00156 #endif
00157
00158
00159
00160