From 0a0d9a582816e7e9dd3c19baafe4d551991db40c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 19 May 2015 18:46:38 +0200 Subject: [PATCH] @Marshmellow42 's fixes for bigbuf. --- armsrc/mifarecmd.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 45d03438..de2b4db2 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -249,17 +249,26 @@ void MifareReadSector(uint8_t arg0, uint8_t arg1, uint8_t arg2, uint8_t *datain) // datain = KEY bytes void MifareUReadCard(uint8_t arg0, uint16_t arg1, uint8_t arg2, uint8_t *datain) { + // free eventually allocated BigBuf memory + BigBuf_free(); + // clear trace + clear_trace(); + // params uint8_t blockNo = arg0; uint16_t blocks = arg1; bool useKey = (arg2 == 1); //UL_C bool usePwd = (arg2 == 2); //UL_EV1/NTAG uint32_t countblocks = 0; - uint8_t *dataout = BigBuf_get_addr(); + uint8_t *dataout = BigBuf_malloc(CARD_MEMORY_SIZE); + if (dataout == NULL){ + Dbprintf("out of memory"); + OnError(1); + return; + } LEDsoff(); LED_A_ON(); - clear_trace(); iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); int len = iso14443a_select_card(NULL, NULL, NULL); @@ -293,7 +302,7 @@ void MifareUReadCard(uint8_t arg0, uint16_t arg1, uint8_t arg2, uint8_t *datain) } for (int i = 0; i < blocks; i++){ - if ((i*4) + 4 > BigBuf_get_traceLen()) { + if ((i*4) + 4 > CARD_MEMORY_SIZE) { Dbprintf("Data exceeds buffer!!"); break; } -- 2.39.5