Files
TimbreESP32/src/platform/EspRelayBank.h
Angel Ivan 2a9eabce14 Fist commit
2026-10-02 12:08:21 -06:00

33 lines
815 B
C++
Executable File

#pragma once
#include <Arduino.h>
#include <atomic>
#include <cstdint>
namespace timbre {
class EspRelayBank {
public:
static constexpr std::uint8_t kPrincipal = 0;
static constexpr std::uint8_t kReserved = 1;
static constexpr std::uint8_t kChannelCount = 2;
static constexpr std::uint8_t kPrincipalPin = 22;
static constexpr std::uint8_t kReservedPin = 23;
static constexpr std::uint8_t kOffLevel = HIGH;
static constexpr std::uint8_t kOnLevel = LOW;
void beginSafe();
void set(std::uint8_t channel, bool energized);
void allOff();
bool energized(std::uint8_t channel) const;
bool validChannel(std::uint8_t channel) const;
private:
std::uint8_t pinFor(std::uint8_t channel) const;
std::atomic<std::uint8_t> stateMask_{0};
bool initialized_ = false;
};
} // namespace timbre