/
DigitalPin.h
54 lines (42 loc) · 1.14 KB
/
DigitalPin.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#pragma once
#include <cstdint> // uint8_t
#include <type_traits> // std::is_abstract
#include <Arduino.h>
#include "DnApp/Hardware/DigitalPin.h"
namespace DnApp::Arduino::Hardware {
class DigitalPin final:
public DnApp::Hardware::DigitalPin {
public:
explicit
DigitalPin(const uint8_t id):
id{id} {
}
[[nodiscard]]
auto getId() const -> uint8_t {
return id;
}
auto setOutputMode() -> void override {
pinMode(id, OUTPUT);
}
auto setInputMode() -> void override {
pinMode(id, INPUT);
}
auto setHigh() -> void override {
digitalWrite(id, HIGH);
}
auto setLow() -> void override {
digitalWrite(id, LOW);
}
[[nodiscard]]
auto isHigh() const -> bool override {
return digitalRead(id) == HIGH;
}
[[nodiscard]]
auto isLow() const -> bool override {
return digitalRead(id) == LOW;
}
private:
const uint8_t id;
};
static_assert(!std::is_abstract<DigitalPin>());
}