- PrintAndLog("recorded activity:");
- PrintAndLog(" ETU :nbits: who bytes");
- PrintAndLog("---------+-----+----+-----------");
+ // Query for the actual size of the trace
+ UsbCommand response;
+ GetFromBigBuf(got, USB_CMD_DATA_SIZE, 0);
+ WaitForResponse(CMD_ACK, &response);
+ uint16_t traceLen = response.arg[2];
+ if (traceLen > USB_CMD_DATA_SIZE) {
+ uint8_t *p = realloc(got, traceLen);
+ if (p == NULL) {
+ PrintAndLog("Cannot allocate memory for trace");
+ free(got);
+ return 2;
+ }
+ got = p;
+ GetFromBigBuf(got, traceLen, 0);
+ WaitForResponse(CMD_ACK,NULL);
+ }
+
+ PrintAndLog("recorded activity (TraceLen = %d bytes):");
+ PrintAndLog(" ETU :nbits: who bytes");
+ PrintAndLog("---------+-----+----+-----------");