mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-20 05:13:46 -07:00
adapt hw dbg
to query device before setting log level
This commit is contained in:
parent
16909994be
commit
c5d12bba0f
3 changed files with 55 additions and 14 deletions
|
@ -782,6 +782,10 @@ static void PacketReceived(PacketCommandNG *packet) {
|
||||||
reply_ng(CMD_SET_DBGMODE, PM3_SUCCESS, NULL, 0);
|
reply_ng(CMD_SET_DBGMODE, PM3_SUCCESS, NULL, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case CMD_GET_DBGMODE: {
|
||||||
|
reply_ng(CMD_GET_DBGMODE, PM3_SUCCESS, (uint8_t *)&g_dbglevel, 1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case CMD_SET_TEAROFF: {
|
case CMD_SET_TEAROFF: {
|
||||||
struct p {
|
struct p {
|
||||||
uint16_t delay_us;
|
uint16_t delay_us;
|
||||||
|
@ -860,6 +864,7 @@ static void PacketReceived(PacketCommandNG *packet) {
|
||||||
bool verbose : 1;
|
bool verbose : 1;
|
||||||
} PACKED;
|
} PACKED;
|
||||||
struct p *payload = (struct p *)packet->data.asBytes;
|
struct p *payload = (struct p *)packet->data.asBytes;
|
||||||
|
|
||||||
uint32_t bits = SniffLF(payload->verbose, payload->samples, true);
|
uint32_t bits = SniffLF(payload->verbose, payload->samples, true);
|
||||||
reply_ng(CMD_LF_SNIFF_RAW_ADC, PM3_SUCCESS, (uint8_t *)&bits, sizeof(bits));
|
reply_ng(CMD_LF_SNIFF_RAW_ADC, PM3_SUCCESS, (uint8_t *)&bits, sizeof(bits));
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -427,8 +427,10 @@ static int CmdDbg(const char *Cmd) {
|
||||||
CLIParserContext *ctx;
|
CLIParserContext *ctx;
|
||||||
CLIParserInit(&ctx, "hw dbg",
|
CLIParserInit(&ctx, "hw dbg",
|
||||||
"Set device side debug level output.\n"
|
"Set device side debug level output.\n"
|
||||||
"Note: option -4, this option may cause malfunction itself",
|
"Note: option `-4`, this option may cause malfunction itself by\n"
|
||||||
"hw dbg -1\n"
|
"introducing delays in time critical functions like simulation or sniffing",
|
||||||
|
"hw dbg --> get current log level\n"
|
||||||
|
"hw dbg -1 --> set log level to _error_\n"
|
||||||
);
|
);
|
||||||
|
|
||||||
void *argtable[] = {
|
void *argtable[] = {
|
||||||
|
@ -453,19 +455,52 @@ static int CmdDbg(const char *Cmd) {
|
||||||
return PM3_EINVARG;
|
return PM3_EINVARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t dbg = 0;
|
clearCommandBuffer();
|
||||||
if (lv0)
|
SendCommandNG(CMD_GET_DBGMODE, NULL, 0);
|
||||||
dbg = 0;
|
PacketResponseNG resp;
|
||||||
else if (lv1)
|
if (WaitForResponseTimeout(CMD_GET_DBGMODE, &resp, 2000) == false) {
|
||||||
dbg = 1;
|
PrintAndLogEx(WARNING, "Failed to get current device debug level");
|
||||||
else if (lv2)
|
return PM3_ETIMEOUT;
|
||||||
dbg = 2;
|
}
|
||||||
else if (lv3)
|
uint8_t curr = resp.data.asBytes[0];
|
||||||
dbg = 3;
|
|
||||||
else if (lv4)
|
|
||||||
dbg = 4;
|
|
||||||
|
|
||||||
SendCommandNG(CMD_SET_DBGMODE, &dbg, sizeof(dbg));
|
char dbglvlstr[20] = {0};
|
||||||
|
switch (curr) {
|
||||||
|
case DBG_NONE:
|
||||||
|
sprintf(dbglvlstr, "none");
|
||||||
|
break;
|
||||||
|
case DBG_ERROR:
|
||||||
|
sprintf(dbglvlstr, "error");
|
||||||
|
break;
|
||||||
|
case DBG_INFO:
|
||||||
|
sprintf(dbglvlstr, "info");
|
||||||
|
break;
|
||||||
|
case DBG_DEBUG:
|
||||||
|
sprintf(dbglvlstr, "debug");
|
||||||
|
break;
|
||||||
|
case DBG_EXTENDED:
|
||||||
|
sprintf(dbglvlstr, "extended");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
PrintAndLogEx(INFO, " Current debug log level..... %d ( " _YELLOW_("%s")" )", curr, dbglvlstr);
|
||||||
|
|
||||||
|
|
||||||
|
if ((lv0 + lv1 + lv2 + lv3 + lv4) == 1) {
|
||||||
|
uint8_t dbg = 0;
|
||||||
|
if (lv0)
|
||||||
|
dbg = 0;
|
||||||
|
else if (lv1)
|
||||||
|
dbg = 1;
|
||||||
|
else if (lv2)
|
||||||
|
dbg = 2;
|
||||||
|
else if (lv3)
|
||||||
|
dbg = 3;
|
||||||
|
else if (lv4)
|
||||||
|
dbg = 4;
|
||||||
|
|
||||||
|
clearCommandBuffer();
|
||||||
|
SendCommandNG(CMD_SET_DBGMODE, &dbg, sizeof(dbg));
|
||||||
|
}
|
||||||
return PM3_SUCCESS;
|
return PM3_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -378,6 +378,7 @@ typedef struct {
|
||||||
#define CMD_TIA 0x0117
|
#define CMD_TIA 0x0117
|
||||||
#define CMD_BREAK_LOOP 0x0118
|
#define CMD_BREAK_LOOP 0x0118
|
||||||
#define CMD_SET_TEAROFF 0x0119
|
#define CMD_SET_TEAROFF 0x0119
|
||||||
|
#define CMD_GET_DBGMODE 0x0120
|
||||||
|
|
||||||
// RDV40, Flash memory operations
|
// RDV40, Flash memory operations
|
||||||
#define CMD_FLASHMEM_WRITE 0x0121
|
#define CMD_FLASHMEM_WRITE 0x0121
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue