25#define TEST_CALLBACK_DELAY_MS 10
28#define TIMER_PRECISION_THRESHOLD 0.2
51 criticalAssertVoid(
hwStarted,
"HW.started");
56 const auto timeDeltaNt = setTimeNt - nowNt;
62 if (timeDeltaNt <= 0) {
68 if (timeDeltaNt < US2NT(2)) {
69 setTimeNt = nowNt + US2NT(2);
70 }
else if (timeDeltaNt >= TOO_FAR_INTO_FUTURE_NT) {
72 if (timeDeltaNt > UINT32_MAX) {
75 delta32 = timeDeltaNt;
84 if (hasFirmwareError()) {
111 MicrosecondTimerWatchdogController()
144 if (absI(actualTimeSinceSchedulingMs - TEST_CALLBACK_DELAY_MS) > TEST_CALLBACK_DELAY_MS * TIMER_PRECISION_THRESHOLD) {
154 if (hasFirmwareError()) {
166 chThdSleepMilliseconds(TEST_CALLBACK_DELAY_MS + 2);
182#if EFI_EMULATE_POSITION_SENSORS
SingleTimerExecutor scheduler
Base class for a controller that needs to run periodically to perform work.
virtual void PeriodicTask(efitick_t nowNt)=0
Called periodically. Override this method to do work for your controller.
void schedule(const char *msg, scheduling_s *scheduling, efitick_t timeNt, action_s action) override
Schedule an action to be executed in the future.
static Engine *const engine
bool warning(ObdCode code, const char *fmt,...)
void firmwareError(ObdCode code, const char *fmt,...)
void globalTimerCallback()
static bool isTimerPending
static scheduling_s watchDogBuddy
static void timerValidationCallback(void *)
static int timerFreezeCounter
void setHardwareSchedulerTimer(efitick_t nowNt, efitick_t setTimeNt)
static void watchDogBuddyCallback(void *)
static int timerRestartCounter
static MicrosecondTimerWatchdogController watchdogControllerInstance
static void validateHardwareTimer()
uint32_t maxPrecisionCallbackDuration
static Timer testScheduling
void portMicrosecondTimerCallback()
static int setHwTimerCounter
static efitick_t lastSetTimerTimeNt
static volatile bool testSchedulingHappened
static int timerCallbackCounter
void initMicrosecondTimer()
uint32_t getTimeNowLowerNt()
void portSetHardwareSchedulerTimer(efitick_t nowNt, efitick_t setTimeNt)
void portInitMicrosecondTimer()
@ CUSTOM_ERR_TIMER_OVERFLOW
@ CUSTOM_ERR_TIMER_TEST_CALLBACK_NOT_HAPPENED
@ CUSTOM_OBD_LOCAL_FREEZE
@ CUSTOM_ERR_TIMER_TEST_CALLBACK_WRONG_TIME
@ RUNTIME_CRITICAL_TIMER_WATCHDOG