33 lines
815 B
C++
Executable File
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
|