X-Git-Url: https://hackdaworld.org/gitweb/?p=rfid%2Flibrfid.git;a=blobdiff_plain;f=gemtag%2Fgemtag.h;h=e5c24bf85474e2f74f8ab1a248973f412c1083f2;hp=93aaa60ea1c71e4a07d26c5508d6f4ff8e695ff2;hb=03006df71d07c88b1fd9f01839336801207b7ec4;hpb=3ca43b53eb696fea7ea7f6a14ed4e1bfa7b01ac7 diff --git a/gemtag/gemtag.h b/gemtag/gemtag.h index 93aaa60..e5c24bf 100644 --- a/gemtag/gemtag.h +++ b/gemtag/gemtag.h @@ -1,5 +1,6 @@ /* - * (C) 2006 by Frank Zirkelbach + * (C) 2006 by Harald Welte + * Frank Zirkelbach * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 @@ -24,11 +25,12 @@ struct gemtag_handle { struct usb_dev_handle *handle; unsigned char seq; - unsigned char capabilities; - unsigned char snr[4]; + unsigned char caps; + unsigned char serial[4]; }; -#define GEMTAG_CAP_CRC 0x01 +#define GEMTAG_CAP_CRC 0x01 +#define GEMTAG_CAP_VERB_TRANSMIT 0x02 struct gemtag_cmd_hdr { unsigned char start; @@ -37,14 +39,110 @@ struct gemtag_cmd_hdr { u_int16_t len; } __attribute__ ((packed)); -#define GEMTAG_CMD_GET_FW_VERSION 0x63 +#define BAD_CRC 0x01 +#define SEQ_MISMATCH 0x02 +#define SHORT_ANSWER 0x03 +#define CMD_FAILED 0x04 +#define AUTH_FAILED 0x05 +#define READ_FAILED 0x06 +#define WRITE_FAILED 0x07 +#define NO_PICC 0x08 +#define PICC_SELECT_ERROR 0x09 +#define LOAD_E2_FAILED 0x0a +#define AUTH_E2_FAILED 0x0b + +/* gemtag commands */ + +#define GEMTAG_CMD_PCD_CONFIG 0x10 +#define GEMTAG_CMD_PICC_ANTICOLL 0x12 +#define GEMTAG_CMD_PICC_SELECT 0x13 + +#define GEMTAG_CMD_PICC_AUTH 0x14 +#define GEMTAG_CMD_PICC_AUTH_E2 0x15 +#define GEMTAG_CMD_HOST_CODE_KEY 0x16 +#define GEMTAG_CMD_PCD_LOAD_KEY_E2 0x17 +#define GEMTAG_CMD_PICC_AUTH_KEY 0x18 +#define GEMTAG_PICC_AUTHENT1A 0x60 +#define GEMTAG_PICC_AUTHENT1B 0x61 + +#define GEMTAG_CMD_PICC_READ 0x19 +#define GEMTAG_CMD_PICC_WRITE 0x1a +#define GEMTAG_CMD_PICC_VALUE 0x1b +#define GEMTAG_CMD_PICC_VALUE_DEBIT 0x1c +#define GEMTAG_CMD_PICC_HALT 0x1d +#define GEMTAG_CMD_PICC_WRITE4 0x1e +#define GEMTAG_CMD_COMMON_WRITE 0x1f +#define GEMTAG_CMD_PCD_RF_RESET 0x20 #define GEMTAG_CMD_GET_SERIAL_NUMBER 0x22 -#define GEMTAG_CMD_GET_RIC_VERSION 0x64 +#define GEMTAG_CMD_PCD_READ_E2 0x23 +#define GEMTAG_CMD_PCD_WRITE_E2 0x24 +#define GEMTAG_CMD_PICC_COMMON_READ 0x28 +#define GEMTAG_PICC_DECREMENT 0xc0 +#define GEMTAG_PICC_INCREMENT 0xc1 +#define GEMTAG_PICC_RESTORE 0xc2 +#define GEMTAG_PICC_READ16 0x30 +#define GEMTAG_PICC_WRITE16 0xa0 +#define GEMTAG_PICC_WRITE4 0xa2 + #define GEMTAG_CMD_PCD_SET_TMO 0x27 + +#define GEMTAG_CMD_PICC_REQUEST 0x40 +#define GEMTAG_CMD_PICC_CASC_ANTICOLL 0x41 +#define GEMTAG_CMD_PICC_CASC_SELECT 0x42 +#define GEMTAG_PICC_STD_SELECT_CODE 0x93 +#define GEMTAG_PICC_CASC_LEVEL1 0x95 +#define GEMTAG_PICC_CASC_LEVEL2 0x97 +/* from another source (mac gemtag tool) ... */ +#define GEMTAG_PICC_CASC_L1 0x93 +#define GEMTAG_PICC_CASC_L2 0x92 +#define GEMTAG_PICC_CASC_L3 0x94 +#define GEMTAG_PICC_CASC_L4 0x98 +#define GEMTAG_PICC_CASC_L5 0x95 +#define GEMTAG_PICC_CASC_L6 0x97 + +#define GEMTAG_CMD_PICC_ACTIVATE_IDLE 0x43 +#define GEMTAG_CMD_PICC_ACTIVATE_WAKEUP 0x44 +#define GEMTAG_CMD_SET_DFLT_ATTRIBUTES 0x45 +#define GEMTAG_CMD_SET_ATTRIBUTES 0x46 +#define GEMTAG_CMD_PICC_EXCHANGE_BLOCK 0x48 +#define GEMTAG_PICC_REQIDL 0x26 +#define GEMTAG_PICC_REQALL 0x52 + +#define GEMTAG_CMD_SWITCH_LED 0x60 +#define GEMTAG_LED_OFF 0x00 +#define GEMTAG_LED_ON 0x01 + +#define GEMTAG_CMD_GET_FW_VERSION 0x63 +#define GEMTAG_CMD_GET_RIC_VERSION 0x64 +#define GEMTAG_CMD_SET_DEFAULT_BAUDRATE 0x81 +#define GEMTAG_CMD_SET_ONLINE_BAUDRATE 0x82 #define GEMTAG_CMD_SET_CPU_TIMEOUT 0x88 -#define GEMTAG_CMD_TEST 0xfe -#define BAD_CRC 0x01 -#define SEQ_MISMATCH 0x02 +#define GEMTAG_CMD_DETECT_CARD 0x92 +#define GEMTAG_CMD_DETECT_ISO15693_CARD 0x93 +#define GEMTAG_CMD_PPS_REQUEST 0xa0 +#define GEMTAG_CMD_DESELECT 0xa1 + + +/* function prototypes */ + +int asciidump(unsigned char *data,int len); +int hexdump(unsigned char *data,int len); +struct usb_device *find_device(unsigned short vendor,unsigned short device); +u_int16_t gemtag_calc_crc(unsigned char *data,u_int16_t len); +int gemtag_transceive(struct gemtag_handle *gh,unsigned char cmd, + unsigned char *tx,unsigned int tx_len, + unsigned char *rx,unsigned int *rx_len); +struct gemtag_handle *gemtag_open(void); +int gemtag_close(struct gemtag_handle *gh); +int gemtag_transform_mifare_key(struct gemtag_handle *gh, + unsigned char *key6,unsigned char *key12); +int gemtag_auth_e2(struct gemtag_handle *gh,unsigned char authmode, + int sector,unsigned char *key6); +int gemtag_auth_mifare_key(struct gemtag_handle *gh, + unsigned char *key6,int sector); +int gemtag_read16(struct gemtag_handle *gh,int sector,unsigned char *data); +int gemtag_write16(struct gemtag_handle *gh,int sector,unsigned char *data); +int gemtag_select_picc(struct gemtag_handle *gh); #endif