#define ISO14443A_CMD_WUPA 0x52
#define ISO14443A_CMD_ANTICOLL_OR_SELECT 0x93
#define ISO14443A_CMD_ANTICOLL_OR_SELECT_2 0x95
+#define ISO14443A_CMD_ANTICOLL_OR_SELECT_3 0x97
#define ISO14443A_CMD_WRITEBLOCK 0xA0
#define ISO14443A_CMD_HALT 0x50
#define ISO14443A_CMD_RATS 0xE0
#define MIFARE_EV1_PERSONAL_UID 0x40
#define MIFARE_EV1_SETMODE 0x43
-
#define MIFARE_ULC_WRITE 0xA2
//#define MIFARE_ULC__COMP_WRITE 0xA0
#define MIFARE_ULC_AUTH_1 0x1A
#define MIFARE_ULEV1_CHECKTEAR 0x3E
#define MIFARE_ULEV1_VCSL 0x4B
+// mifare 4bit card answers
+#define CARD_ACK 0x0A // 1010 - ACK
+#define CARD_NACK_NA 0x04 // 0100 - NACK, not allowed (command not allowed)
+#define CARD_NACK_TR 0x05 // 0101 - NACK, transmission error
+
// Magic Generation 1, parameter "work flags"
// bit 0 - need get UID
#define ISO_14443B 2
#define TOPAZ 3
#define ISO_7816_4 4
+#define MFDES 5
//-- Picopass fuses
#define FUSE_FPERS 0x80
#define FUSE_RA 0x01
// ISO 7816-4 Basic interindustry commands. For command APDU's.
-#define ISO7816_READ_BINARY 0xB0
-#define ISO7816_WRITE_BINARY 0xD0
-#define ISO7816_UPDATE_BINARY 0xD6
-#define ISO7816_ERASE_BINARY 0x0E
-#define ISO7816_READ_RECORDS 0xB2
-#define ISO7816_WRITE_RECORDS 0xD2
-#define ISO7816_APPEND_RECORD 0xE2
-#define ISO7816_UPDATE_RECORD 0xDC
-#define ISO7816_GET_DATA 0xCA
-#define ISO7816_PUT_DATA 0xDA
-#define ISO7816_SELECT_FILE 0xA4
-#define ISO7816_VERIFY 0x20
+#define ISO7816_READ_BINARY 0xB0
+#define ISO7816_WRITE_BINARY 0xD0
+#define ISO7816_UPDATE_BINARY 0xD6
+#define ISO7816_ERASE_BINARY 0x0E
+#define ISO7816_READ_RECORDS 0xB2
+#define ISO7816_WRITE_RECORDS 0xD2
+#define ISO7816_APPEND_RECORD 0xE2
+#define ISO7816_UPDATE_RECORD 0xDC
+#define ISO7816_GET_DATA 0xCA
+#define ISO7816_PUT_DATA 0xDA
+#define ISO7816_SELECT_FILE 0xA4
+#define ISO7816_VERIFY 0x20
#define ISO7816_INTERNAL_AUTHENTICATION 0x88
#define ISO7816_EXTERNAL_AUTHENTICATION 0x82
-#define ISO7816_GET_CHALLENGE 0xB4
-#define ISO7816_MANAGE_CHANNEL 0x70
+#define ISO7816_GET_CHALLENGE 0xB4
+#define ISO7816_MANAGE_CHANNEL 0x70
// ISO7816-4 For response APDU's
-#define ISO7816_OK 0x9000
+#define ISO7816_OK 0x9000
// 6x xx = ERROR
+// MIFARE DESFire command set:
+#define MFDES_CREATE_APPLICATION 0xca
+#define MFDES_DELETE_APPLICATION 0xda
+#define MFDES_GET_APPLICATION_IDS 0x6a
+#define MFDES_SELECT_APPLICATION 0x5a
+#define MFDES_FORMAT_PICC 0xfc
+#define MFDES_GET_VERSION 0x60
+#define MFDES_READ_DATA 0xbd
+#define MFDES_WRITE_DATA 0x3d
+#define MFDES_GET_VALUE 0x6c
+#define MFDES_CREDIT 0x0c
+#define MFDES_DEBIT 0xdc
+#define MFDES_LIMITED_CREDIT 0x1c
+#define MFDES_WRITE_RECORD 0x3b
+#define MFDES_READ_RECORDS 0xbb
+#define MFDES_CLEAR_RECORD_FILE 0xeb
+#define MFDES_COMMIT_TRANSACTION 0xc7
+#define MFDES_ABORT_TRANSACTION 0xa7
+#define MFDES_GET_FREE_MEMORY 0x6e
+#define MFDES_GET_FILE_IDS 0x6f
+#define MFDES_GET_ISOFILE_IDS 0x61
+#define MFDES_GET_FILE_SETTINGS 0xf5
+#define MFDES_CHANGE_FILE_SETTINGS 0x5f
+#define MFDES_CREATE_STD_DATA_FILE 0xcd
+#define MFDES_CREATE_BACKUP_DATA_FILE 0xcb
+#define MFDES_CREATE_VALUE_FILE 0xcc
+#define MFDES_CREATE_LINEAR_RECORD_FILE 0xc1
+#define MFDES_CREATE_CYCLIC_RECORD_FILE 0xc0
+#define MFDES_DELETE_FILE 0xdf
+#define MFDES_AUTHENTICATE 0x0a // AUTHENTICATE_NATIVE
+#define MFDES_AUTHENTICATE_ISO 0x1a // AUTHENTICATE_STANDARD
+#define MFDES_AUTHENTICATE_AES 0xaa
+#define MFDES_CHANGE_KEY_SETTINGS 0x54
+#define MFDES_GET_KEY_SETTINGS 0x45
+#define MFDES_CHANGE_KEY 0xc4
+#define MFDES_GET_KEY_VERSION 0x64
+#define MFDES_AUTHENTICATION_FRAME 0xAF
+
void printIclassDumpInfo(uint8_t* iclass_dump);
void getMemConfig(uint8_t mem_cfg, uint8_t chip_cfg, uint8_t *max_blk, uint8_t *app_areas, uint8_t *kb);