diff --git a/firmware/chibios/os/kernel/include/chdebug.h b/firmware/chibios/os/kernel/include/chdebug.h index 2128601982..b348193c77 100644 --- a/firmware/chibios/os/kernel/include/chdebug.h +++ b/firmware/chibios/os/kernel/include/chdebug.h @@ -109,8 +109,8 @@ void chDbgPanic3(const char *msg, const char * file, int line); #define chDbgCheckClassI() #define chDbgCheckClassS() #else -#define dbg_enter_lock() (dbg_lock_cnt = 1) -#define dbg_leave_lock() (dbg_lock_cnt = 0) +#define dbg_enter_lock() {dbg_lock_cnt = 1;ON_LOCK_HOOK;} +#define dbg_leave_lock() {dbg_lock_cnt = 0;ON_UNLOCK_HOOK;} #endif /*===========================================================================*/ diff --git a/firmware/config/engines/mazda_miata.cpp b/firmware/config/engines/mazda_miata.cpp index e0830bb95c..c71db7b2d1 100644 --- a/firmware/config/engines/mazda_miata.cpp +++ b/firmware/config/engines/mazda_miata.cpp @@ -257,6 +257,7 @@ static void setMiata1994_common(engine_configuration_s *engineConfiguration, boa // Frankenso low out #11: PB8 // Frankenso low out #12: PB7 + boardConfiguration->fanPin = GPIOE_6; boardConfiguration->o2heaterPin = GPIO_UNASSIGNED; diff --git a/firmware/config/system/chconf.h b/firmware/config/system/chconf.h index 8340abbbec..fc4908b4e1 100644 --- a/firmware/config/system/chconf.h +++ b/firmware/config/system/chconf.h @@ -52,6 +52,20 @@ #define CHPRINTF_USE_FLOAT TRUE +#define EFI_CLOCK_LOCKS TRUE + + +#if EFI_CLOCK_LOCKS + void onLockHook(void); + void onUnlockHook(void); + #define ON_LOCK_HOOK onLockHook() + #define ON_UNLOCK_HOOK onUnlockHook() +#else /* EFI_CLOCK_LOCKS */ + #define ON_LOCK_HOOK + #define ON_UNLOCK_HOOK +#endif /* EFI_CLOCK_LOCKS */ + + /** * number of ticks per second * diff --git a/firmware/controllers/error_handling.c b/firmware/controllers/error_handling.c index 940dbec0b9..36b1ca581d 100644 --- a/firmware/controllers/error_handling.c +++ b/firmware/controllers/error_handling.c @@ -87,6 +87,20 @@ char *getWarninig(void) { return warningBuffer; } +uint64_t lastLockTime; +uint64_t maxLockTime = 0; + +void onLockHook(void) { + lastLockTime = getTimeNowNt(); +} + +void onUnlockHook(void) { + uint64_t t = getTimeNowNt() - lastLockTime; + if (t > maxLockTime) { + maxLockTime = t; + } +} + void initErrorHandling(void) { initLogging(&logger, "error handling"); msObjectInit(&warningStream, (uint8_t *) warningBuffer, WARNING_BUFFER_SIZE, 0);