From c33f10f56bd1f45b732f0a80614caf1fce15733e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 3 Apr 2026 11:44:48 +0700 Subject: [PATCH] style --- armsrc/appmain.c | 8 ++++++++ armsrc/iso14443a.c | 1 + common_arm/ticks.c | 9 ++++++--- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 80dd566e3..fbe0c2da6 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -102,22 +102,30 @@ bool g_tearoff_enabled = false; uint8_t g_tearoff_skip = 0; int tearoff_hook(void) { + if (g_tearoff_enabled) { + if (g_tearoff_delay_us == 0) { + if (g_dbglevel >= DBG_ERROR) Dbprintf(_RED_("No tear-off delay configured!")); g_tearoff_enabled = false; return PM3_SUCCESS; // SUCCESS = the hook didn't do anything } + if (g_tearoff_skip > 0) { if (g_dbglevel >= DBG_INFO) Dbprintf(_GREEN_("Tear-off skipped!")); g_tearoff_skip--; return PM3_SUCCESS; // SUCCESS = the hook didn't do anything } + SpinDelayUsPrecision(g_tearoff_delay_us); FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); g_tearoff_enabled = false; + if (g_dbglevel >= DBG_INFO) Dbprintf(_YELLOW_("Tear-off triggered!")); + return PM3_ETEAROFF; + } else { return PM3_SUCCESS; // SUCCESS = the hook didn't do anything } diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 9f6d9e12d..0fd75b039 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -3785,6 +3785,7 @@ void ReaderIso14443a(PacketCommandNG *c) { } if ((param & ISO14A_RAW) == ISO14A_RAW) { + if ((param & ISO14A_CRYPTO1MODE) == ISO14A_CRYPTO1MODE) { // Intercept special Auth command 6xxxCRCA if ((len == 10) && ((cmd[0] & 0xF0) == 0x60)) { diff --git a/common_arm/ticks.c b/common_arm/ticks.c index 85cb7227d..6d49ef278 100644 --- a/common_arm/ticks.c +++ b/common_arm/ticks.c @@ -40,8 +40,9 @@ void SpinDelayUsPrecision(int us) { AT91C_BASE_PWMC_CH0->PWMC_CPRDR = 0xFFFF; // Channel Period Register uint16_t end = AT91C_BASE_PWMC_CH0->PWMC_CCNTR + ticks; - if (end == 0) // AT91C_BASE_PWMC_CH0->PWMC_CCNTR is never == 0 + if (end == 0) { // AT91C_BASE_PWMC_CH0->PWMC_CCNTR is never == 0 end++; // so we have to end++ to avoid inivity loop + } for (;;) { uint16_t now = AT91C_BASE_PWMC_CH0->PWMC_CCNTR; @@ -68,14 +69,16 @@ void SpinDelayUs(int us) { AT91C_BASE_PWMC_CH0->PWMC_CPRDR = 0xffff; // Channel Period Register uint16_t end = AT91C_BASE_PWMC_CH0->PWMC_CCNTR + ticks; - if (end == 0) // AT91C_BASE_PWMC_CH0->PWMC_CCNTR is never == 0 + if (end == 0) { // AT91C_BASE_PWMC_CH0->PWMC_CCNTR is never == 0 end++; // so we have to end++ to avoid inivity loop + } for (;;) { uint16_t now = AT91C_BASE_PWMC_CH0->PWMC_CCNTR; - if (now == end) + if (now == end) { return; + } WDT_HIT(); } }