Fist commit
This commit is contained in:
32
src/platform/EspRelayBank.h
Executable file
32
src/platform/EspRelayBank.h
Executable file
@@ -0,0 +1,32 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user