if (transferToEml) {\r
uint8_t sectortrailer;\r
if (trgBlockNo < 32*4) { // 4 block sector\r
- sectortrailer = (trgBlockNo & 0x03) + 3;\r
+ sectortrailer = trgBlockNo | 0x03;\r
} else { // 16 block sector\r
- sectortrailer = (trgBlockNo & 0x0f) + 15;\r
+ sectortrailer = trgBlockNo | 0x0f;\r
}\r
mfEmlGetMem(keyBlock, sectortrailer, 1);\r
\r
}\r
\r
// 1 - blocks count\r
- UsbCommand c = {CMD_MIFARE_EML_MEMSET, {blockNo, 1, 0}};\r
- memcpy(c.d.asBytes, memBlock, 16);\r
- SendCommand(&c);\r
- return 0;\r
+ return mfEmlSetMem(memBlock, blockNo, 1);\r
}\r
\r
\r
default: numSectors = 16;\r
}\r
\r
- printf("--params: numSectors: %d, keyType:%d", numSectors, keyType);\r
+ printf("--params: numSectors: %d, keyType:%d\n", numSectors, keyType);\r
UsbCommand c = {CMD_MIFARE_EML_CARDLOAD, {numSectors, keyType, 0}};\r
SendCommand(&c);\r
return 0;\r
}\r
\r
UsbCommand resp;\r
- if (WaitForResponseTimeout(CMD_ACK,&resp,2000)) {\r
+ if (WaitForResponseTimeoutW(CMD_ACK, &resp, 2000, false)) {\r
res = resp.arg[0] & 0xff;\r
uint16_t traceLen = resp.arg[1];\r
len = resp.arg[2];\r
\r
if (res == 0) { // we are done\r
- free(buf);\r
- return 0;\r
+ break;\r
}\r
\r
if (res == 1) { // there is (more) data to be transferred\r
} // while (true)\r
\r
free(buf);\r
+ \r
+ msleep(300); // wait for exiting arm side.\r
+ PrintAndLog("Done.");\r
return 0;\r
}\r
\r