diff --git a/board/main.c b/board/main.c index 81dd2a76d7a528..23aeb2d864dbd7 100644 --- a/board/main.c +++ b/board/main.c @@ -699,6 +699,7 @@ void TIM1_BRK_TIM9_IRQHandler(void) { // on to the next one uptime_cnt += 1U; + safety_mode_cnt += 1U; } TIM9->SR = 0; } diff --git a/board/safety.h b/board/safety.h index 973ccda3641c4d..ba5ab83215b5d6 100644 --- a/board/safety.h +++ b/board/safety.h @@ -96,13 +96,14 @@ const safety_hook_config safety_hook_registry[] = { }; int set_safety_hooks(uint16_t mode, int16_t param) { - int set_status = -1; // not set + safety_mode_cnt = 0U; // reset safety mode timer + int set_status = -1; // not set int hook_config_count = sizeof(safety_hook_registry) / sizeof(safety_hook_config); for (int i = 0; i < hook_config_count; i++) { if (safety_hook_registry[i].id == mode) { current_hooks = safety_hook_registry[i].hooks; current_safety_mode = safety_hook_registry[i].id; - set_status = 0; // set + set_status = 0; // set break; } } diff --git a/board/safety_declarations.h b/board/safety_declarations.h index 74d699e761bbdb..81a242a1db440a 100644 --- a/board/safety_declarations.h +++ b/board/safety_declarations.h @@ -55,5 +55,8 @@ int gas_interceptor_prev = 0; // This is set by USB command 0xdf bool long_controls_allowed = true; +// time since safety mode has been changed +uint32_t safety_mode_cnt = 0U; + // avg between 2 tracks #define GET_INTERCEPTOR(msg) (((GET_BYTE((msg), 0) << 8) + GET_BYTE((msg), 1) + ((GET_BYTE((msg), 2) << 8) + GET_BYTE((msg), 3)) / 2 ) / 2)