summaryrefslogtreecommitdiff
path: root/include/librfid/rfid_reader.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/librfid/rfid_reader.h')
-rw-r--r--include/librfid/rfid_reader.h54
1 files changed, 33 insertions, 21 deletions
diff --git a/include/librfid/rfid_reader.h b/include/librfid/rfid_reader.h
index 8dc7860..1c53677 100644
--- a/include/librfid/rfid_reader.h
+++ b/include/librfid/rfid_reader.h
@@ -7,39 +7,46 @@
struct rfid_reader_handle;
+/* 0...0xffff = global options, 0x10000...0x1ffff = private options */
+#define RFID_OPT_RDR_PRIV 0x00010000
+enum rfid_reader_opt {
+ RFID_OPT_RDR_FW_VERSION = 0x0001,
+ RFID_OPT_RDR_RF_KILL = 0x0002,
+};
+
+
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 (*reset)(struct rfid_reader_handle *h);
- int (*get_environment)(
- struct rfid_reader_handle *rh,
- unsigned char num_bytes,
- unsigned char *buf);
+ /* open the reader */
+ struct rfid_reader_handle * (*open)(void *data);
- int (*set_environment)(
- struct rfid_reader_handle *rh,
- unsigned char num_bytes,
- const unsigned char *buf);
+ /* Initialize the reader for a given layer 2 */
+ int (*init)(struct rfid_reader_handle *h, enum rfid_layer2_id);
- int (*reset)(struct rfid_reader_handle *h);
+ /* completely close the reader */
+ void (*close)(struct rfid_reader_handle *h);
+
+ int (*getopt)(struct rfid_reader_handle *rh, int optname,
+ void *optval, unsigned int *optlen);
+
+ int (*setopt)(struct rfid_reader_handle *rh, int optname,
+ const void *optval, unsigned int optlen);
+
+ /* transceive one frame */
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);
@@ -52,15 +59,14 @@ struct rfid_reader {
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);
+ const struct iso15693_anticol_cmd *acf,
+ unsigned int acf_len,
+ struct iso15693_anticol_resp *resp,
+ unsigned int *rx_len, char *bit_of_col);
} iso15693;
struct rfid_mifare_classic_reader {
int (*setkey)(struct rfid_reader_handle *h, const unsigned char *key);
@@ -89,4 +95,10 @@ extern struct rfid_reader_handle *
rfid_reader_open(void *data, unsigned int id);
extern void rfid_reader_close(struct rfid_reader_handle *rh);
+
+extern int rfid_reader_getopt(struct rfid_reader_handle *rh, int optname,
+ void *optval, unsigned int *optlen);
+extern int rfid_reader_setopt(struct rfid_reader_handle *rh, int optname,
+ const void *optval, unsigned int optlen);
+
#endif
personal git repositories of Harald Welte. Your mileage may vary