Files
le-mystere-professeur-zacus/hardware/ui_freenove_allinone/include/system/rate_limited_log.h
T
Clément SAILLANT 620b27de6d refactor: consolidate ui_freenove_allinone to hardware root level
- Move hardware/firmware/ui_freenove_allinone → hardware/ui_freenove_allinone
- All UI hardware now at hardware/ root level
- Single coherent hardware structure complete

Structure now:
- hardware/firmware/       ← Code source
- hardware/ui_freenove_allinone/ ← UI at root level
- hardware/projects/       ← Secondary projects
- hardware/shared/libs/    ← Shared libraries
- hardware/{bom,enclosure,wiring}/ ← Reference docs
2026-03-01 19:10:27 +01:00

33 lines
2.2 KiB
C++

#pragma once
#include <Arduino.h>
#include <cstdint>
#define ZACUS_RL_JOIN2(a, b) a##b
#define ZACUS_RL_JOIN(a, b) ZACUS_RL_JOIN2(a, b)
#define ZACUS_RL_LOG_MS(interval_ms, fmt, ...) \
do { \
static uint32_t ZACUS_RL_JOIN(_zacus_rl_last_, __LINE__) = 0U; \
const uint32_t ZACUS_RL_JOIN(_zacus_rl_now_, __LINE__) = millis(); \
if (ZACUS_RL_JOIN(_zacus_rl_last_, __LINE__) == 0U || \
(ZACUS_RL_JOIN(_zacus_rl_now_, __LINE__) - ZACUS_RL_JOIN(_zacus_rl_last_, __LINE__)) >= \
static_cast<uint32_t>(interval_ms)) { \
ZACUS_RL_JOIN(_zacus_rl_last_, __LINE__) = ZACUS_RL_JOIN(_zacus_rl_now_, __LINE__); \
Serial.printf(fmt, ##__VA_ARGS__); \
} \
} while (0)
#define ZACUS_RL_PRINTLN_MS(interval_ms, text) \
do { \
static uint32_t ZACUS_RL_JOIN(_zacus_rl_last_ln_, __LINE__) = 0U; \
const uint32_t ZACUS_RL_JOIN(_zacus_rl_now_ln_, __LINE__) = millis(); \
if (ZACUS_RL_JOIN(_zacus_rl_last_ln_, __LINE__) == 0U || \
(ZACUS_RL_JOIN(_zacus_rl_now_ln_, __LINE__) - ZACUS_RL_JOIN(_zacus_rl_last_ln_, __LINE__)) >= \
static_cast<uint32_t>(interval_ms)) { \
ZACUS_RL_JOIN(_zacus_rl_last_ln_, __LINE__) = ZACUS_RL_JOIN(_zacus_rl_now_ln_, __LINE__); \
Serial.println(text); \
} \
} while (0)