+ // Thats it...\r
+ FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);\r
+ LEDsoff();\r
+}\r
+\r
+void MifareUReadCard(uint8_t arg0, int arg1, uint8_t *datain)\r
+{\r
+ // params\r
+ uint8_t sectorNo = arg0;\r
+ int Pages=arg1;\r
+ int count_Pages=0;\r
+ // variables\r
+ byte_t isOK = 0;\r
+ byte_t dataoutbuf[176];\r
+ uint8_t uid[10];\r
+ uint32_t cuid;\r
+\r
+ // clear trace\r
+ iso14a_clear_trace();\r
+\r
+ iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN);\r
+\r
+ LED_A_ON();\r
+ LED_B_OFF();\r
+ LED_C_OFF();\r
+ Dbprintf("Pages %d",Pages);\r
+ while (true) {\r
+ if(!iso14443a_select_card(uid, NULL, &cuid)) {\r
+ if (MF_DBGLEVEL >= 1) Dbprintf("Can't select card");\r
+ break;\r
+ };\r
+ for(int sec=0;sec<Pages;sec++){\r
+ if(mifare_ultra_readblock(cuid, sectorNo * 4 + sec, dataoutbuf + 4 * sec)) {\r
+ if (MF_DBGLEVEL >= 1) Dbprintf("Read block %d error",sec);\r
+ break;\r
+ }else{\r
+ count_Pages++;\r
+ };\r
+ }\r
+ if(mifare_ultra_halt(cuid)) {\r
+ if (MF_DBGLEVEL >= 1) Dbprintf("Halt error");\r
+ break;\r
+ };\r
+\r
+ isOK = 1;\r
+ break;\r
+ }\r
+ Dbprintf("Pages read %d",count_Pages);\r
+ if (MF_DBGLEVEL >= 2) DbpString("READ CARD FINISHED");\r
+\r
+ LED_B_ON();\r
+ if (Pages==16) cmd_send(CMD_ACK,isOK,0,0,dataoutbuf,64);\r
+ if (Pages==44 && count_Pages==16) cmd_send(CMD_ACK,isOK,0,0,dataoutbuf,64);\r
+ if (Pages==44 && count_Pages>16) cmd_send(CMD_ACK,isOK,0,0,dataoutbuf,176);\r
+ LED_B_OFF();\r