#include "mifaredesfire.h"
-#include "BigBuf.h"
#define MAX_APPLICATION_COUNT 28
#define MAX_FILE_COUNT 16
bool InitDesfireCard(){
+ iso14a_card_select_t card;
+
iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN);
set_tracing(TRUE);
- byte_t cardbuf[USB_CMD_DATA_SIZE] = {0x00};
- iso14a_card_select_t *card = (iso14a_card_select_t*)cardbuf;
-
- int len = iso14443a_select_card(NULL,card,NULL);
-
- if (!len) {
- if (MF_DBGLEVEL >= MF_DBG_ERROR)
- Dbprintf("Can't select card");
+ if (!iso14443a_select_card(NULL, &card, NULL, true, 0)) {
+ if (MF_DBGLEVEL >= MF_DBG_ERROR) DbpString("Can't select card");
OnError(1);
return false;
}
print_result(" RX : ", datain, datalen);
}
- if ( flags & CLEARTRACE ){
+ if ( flags & CLEARTRACE )
clear_trace();
- }
if ( flags & INIT ){
if ( !InitDesfireCard() )
}
int len = DesfireAPDU(datain, datalen, resp);
- if (MF_DBGLEVEL >= 4) {
+ if (MF_DBGLEVEL >= 4)
print_result("ERR <--: ", resp, len);
- }
if ( !len ) {
OnError(2);
// reset the pcb_blocknum,
pcb_blocknum = 0;
- if ( flags & DISCONNECT ){
+ if ( flags & DISCONNECT )
OnSuccess();
- }
cmd_send(CMD_ACK,1,len,0,resp,len);
}
void MifareDesfireGetInformation(){
int len = 0;
+ iso14a_card_select_t card;
uint8_t resp[USB_CMD_DATA_SIZE] = {0x00};
uint8_t dataout[USB_CMD_DATA_SIZE] = {0x00};
- byte_t cardbuf[USB_CMD_DATA_SIZE] = {0x00};
/*
1 = PCB 1
iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN);
// card select - information
- iso14a_card_select_t *card = (iso14a_card_select_t*)cardbuf;
- byte_t isOK = iso14443a_select_card(NULL, card, NULL);
- if ( isOK == 0) {
- if (MF_DBGLEVEL >= MF_DBG_ERROR) {
- Dbprintf("Can't select card");
- }
+ if ( !iso14443a_select_card(NULL, &card, NULL, true, 0) ) {
+ if (MF_DBGLEVEL >= MF_DBG_ERROR) DbpString("Can't select card");
OnError(1);
return;
}
- memcpy(dataout,card->uid,7);
+ memcpy(dataout, card.uid, 7);
LED_A_ON();
LED_B_OFF();
size_t len = 0;
size_t wrappedLen = 0;
uint8_t wCmd[USB_CMD_DATA_SIZE] = {0x00};
-
uint8_t resp[MAX_FRAME_SIZE];
uint8_t par[MAX_PARITY_SIZE];
wrappedLen = CreateAPDU( cmd, cmd_len, wCmd);
- if (MF_DBGLEVEL >= 4) {
+ if (MF_DBGLEVEL >= 4)
print_result("WCMD <--: ", wCmd, wrappedLen);
- }
+
ReaderTransmit( wCmd, wrappedLen, NULL);
len = ReaderReceive(resp, par);
-
- if( len == 0x00 ){
+ if ( !len ) {
if (MF_DBGLEVEL >= 4) Dbprintf("fukked");
return FALSE; //DATA LINK ERROR
}
void OnSuccess(){
pcb_blocknum = 0;
ReaderTransmit(deselect_cmd, 3 , NULL);
+ mifare_ultra_halt();
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
LEDsoff();
set_tracing(FALSE);