- uint8_t *got = malloc(USB_CMD_DATA_SIZE);
-
- // 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)", traceLen);
- PrintAndLog(" time :rssi: who bytes");
- PrintAndLog("---------+----+----+-----------");
-
- int i = 0;
- int prev = -1;
-
- for(;;) {
-
- if(i >= traceLen) { break; }
-
- bool isResponse;
- int timestamp = *((uint32_t *)(got+i));
- if(timestamp & 0x80000000) {
- timestamp &= 0x7fffffff;
- isResponse = 1;
- } else {
- isResponse = 0;
- }
- int metric = *((uint32_t *)(got+i+4));
-
- int len = got[i+8];