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 
00323 extern void             ifd_driver_register(const char *,
00324                                 struct ifd_driver_ops *);
00325 extern const ifd_driver_t *ifd_driver_get(const char *);
00326 extern int              ifd_driver_add_id(const char *, const char *);
00327 extern const char *     ifd_driver_for_id(ifd_devid_t *);
00328 
00329 /*
00330  * Protocol handling for card terminal drivers
00331  */
00332 extern ifd_protocol_t * ifd_protocol_select(ifd_reader_t *, int, int);
00333 extern int              ifd_protocol_transceive(ifd_protocol_t *proto,
00334                                 int dad,
00335                                 const void *, size_t,
00336                                 void *, size_t);
00337 extern int              ifd_protocol_resynchronize(ifd_protocol_t *, int);
00338 
00339 #ifdef __cplusplus
00340 }
00341 #endif
00342 
00343 #endif /* OPENCT_DRIVER_H */

Generated on Thu Nov 23 08:32:33 2006 for OpenCT by  doxygen 1.4.7