driver.h

Go to the documentation of this file.
00001 
00008 #ifndef OPENCT_DRIVER_H
00009 #define OPENCT_DRIVER_H
00010 
00011 #ifdef __cplusplus
00012 extern "C" {
00013 #endif
00014 
00015 #include <openct/device.h>
00016 
00020 struct ifd_driver_ops {
00021         int             default_protocol;
00022 
00034         int             (*open)(ifd_reader_t *reader, const char *name);
00049         int             (*close)(ifd_reader_t * reader);
00076         int             (*change_parity)(ifd_reader_t *reader, int parity);
00087         int             (*change_speed)(ifd_reader_t *reader, unsigned int speed);
00102         int             (*activate)(ifd_reader_t *reader);
00113         int             (*deactivate)(ifd_reader_t *reader);
00138         int             (*card_status)(ifd_reader_t *reader, int slot, int *status);
00154         int             (*card_reset)(ifd_reader_t *reader, int slot, void *atr, size_t atr_len);
00169         int             (*card_request)(ifd_reader_t *reader, int slot,
00170                                 time_t timeout, const char *message,
00171                                 void *atr, size_t atr_len);
00185         int             (*card_eject)(ifd_reader_t *reader, int slot,
00186                                 time_t timeout, const char *message);
00193         int             (*output)(ifd_reader_t *reader, const char *message);
00209         int             (*perform_verify)(ifd_reader_t *reader,
00210                                 int slot, unsigned int timeout, const char *prompt,
00211                                 const unsigned char *data, size_t data_len,
00212                                 unsigned char *resp, size_t resp_len);
00230         int             (*send)(ifd_reader_t *reader,
00231                                 unsigned int dad,
00232                                 const unsigned char *buffer,
00233                                 size_t len);
00247         int             (*recv)(ifd_reader_t *reader,
00248                                 unsigned int dad,
00249                                 unsigned char *buffer,
00250                                 size_t len,
00251                                 long timeout);
00274         int             (*set_protocol)(ifd_reader_t *reader, int slot, int protocol);
00290         int             (*transparent)(ifd_reader_t *reader, int slot,
00291                                 const void *sbuf, size_t slen,
00292                                 void *rbuf, size_t rlen);
00304         int             (*sync_read)(ifd_reader_t *reader, int slot, int proto,
00305                                 unsigned short addr,
00306                                 unsigned char *rbuf, size_t rlen);
00318         int             (*sync_write)(ifd_reader_t *reader, int slot, int proto,
00319                                 unsigned short addr,
00320                                 const unsigned char *sbuf, size_t slen);
00321 
00322         /*Support for transparent access to "escape" */
00323         int             (*escape)(ifd_reader_t *reader, int slot,
00324                                 const void *sbuf, const size_t slen,
00325                                 void *rbuf, size_t rlen);
00326 };
00327 
00328 extern void             ifd_driver_register(const char *,
00329                                 struct ifd_driver_ops *);
00330 extern const ifd_driver_t *ifd_driver_get(const char *);
00331 extern int              ifd_driver_add_id(const char *, const char *);
00332 extern const char *     ifd_driver_for_id(ifd_devid_t *);
00333 
00334 /*
00335  * Protocol handling for card terminal drivers
00336  */
00337 extern ifd_protocol_t * ifd_protocol_select(ifd_reader_t *, int, int);
00338 extern int              ifd_protocol_transceive(ifd_protocol_t *proto,
00339                                 int dad,
00340                                 const void *, size_t,
00341                                 void *, size_t);
00342 extern int              ifd_protocol_resynchronize(ifd_protocol_t *, int);
00343 
00344 #ifdef __cplusplus
00345 }
00346 #endif
00347 
00348 #endif /* OPENCT_DRIVER_H */

Generated on Mon Jul 16 10:48:01 2007 for OpenCT by  doxygen 1.5.1