#ifndef _RFID_READER_H #define _RFID_READER_H #include #include #include struct rfid_reader_handle; struct rfid_reader { char *name; unsigned int id; unsigned int l2_supported; unsigned int proto_supported; int (*get_api_version)( struct rfid_reader_handle *h, u_int8_t *version); int (*get_environment)( struct rfid_reader_handle *rh, unsigned char num_bytes, unsigned char *buf); int (*set_environment)( struct rfid_reader_handle *rh, unsigned char num_bytes, const unsigned char *buf); int (*reset)(struct rfid_reader_handle *h); int (*transceive)(struct rfid_reader_handle *h, enum rfid_frametype frametype, const unsigned char *tx_buf, unsigned int tx_len, unsigned char *rx_buf, unsigned int *rx_len, u_int64_t timeout, unsigned int flags); struct rfid_reader_handle * (*open)(void *data); void (*close)(struct rfid_reader_handle *h); int (*rf_power)(struct rfid_reader_handle *h, int on); struct rfid_14443a_reader { int (*init)(struct rfid_reader_handle *h); int (*transceive_sf)(struct rfid_reader_handle *h, unsigned char cmd, struct iso14443a_atqa *atqa); int (*transceive_acf)(struct rfid_reader_handle *h, struct iso14443a_anticol_cmd *cmd, unsigned int *bit_of_col); int (*set_speed)(struct rfid_reader_handle *h, unsigned int tx, unsigned int speed); unsigned int speed; } iso14443a; struct rfid_14443b_reader { int (*init)(struct rfid_reader_handle *rh); unsigned int speed; } iso14443b; struct rfid_15693_reader { int (*init)(struct rfid_reader_handle *rh); int (*transceive_ac)(struct rfid_reader_handle *h, struct iso15693_anticol_cmd *acf, unsigned char *uuid, char *bit_of_col); } iso15693; struct rfid_mifare_classic_reader { int (*setkey)(struct rfid_reader_handle *h, const unsigned char *key); int (*auth)(struct rfid_reader_handle *h, u_int8_t cmd, u_int32_t serno, u_int8_t block); } mifare_classic; }; enum rfid_reader_id { RFID_READER_CM5121, RFID_READER_PEGODA, RFID_READER_OPENPCD, RFID_READER_SPIDEV, }; struct rfid_reader_handle { struct rfid_asic_handle *ah; union { } priv; const struct rfid_reader *reader; }; extern struct rfid_reader_handle * rfid_reader_open(void *data, unsigned int id); extern void rfid_reader_close(struct rfid_reader_handle *rh); #endif