improved bus wait with raii class that updates last access

This commit is contained in:
Emanuele Trabattoni
2025-07-25 10:57:17 +02:00
parent bb0832ad4f
commit 31c6cd9606
14 changed files with 173 additions and 127 deletions

37
lib/RS485/busdelay.h Normal file
View File

@@ -0,0 +1,37 @@
#pragma once
#define DEBUGLOG_DEFAULT_LOG_LEVEL_INFO
#include <DebugLog.h>
#include <Arduino.h>
namespace drivers
{
class BusDelay
{
public:
BusDelay(uint32_t &lastAccess, const uint32_t minDelay, const char *title) : m_lastAccess(lastAccess)
{
const uint32_t now = millis();
const uint32_t wait = now - lastAccess;
if (wait < minDelay)
{
LOG_WARN(title, "delay", wait);
delay(wait);
}
}
BusDelay(BusDelay &) = delete;
BusDelay operator=(BusDelay &) = delete;
~BusDelay()
{
m_lastAccess = millis();
}
private:
uint32_t &m_lastAccess;
};
}