Speeduino
Loading...
Searching...
No Matches
trackedOutputPin.h
Go to the documentation of this file.
1#pragma once
2
3#include "../../atomic.h"
4
12template <class TPin>
13class trackedOutputPinAdapter_t : public TPin
14{
15public:
16
18 void setPin(uint8_t pin, uint8_t mode) noexcept {
19 TPin::setPin(pin, mode);
20 _pinState = LOW;
21 }
22
24 bool isPinHigh(void) const noexcept {
25 return _pinState==HIGH;
26 }
27
29 bool isPinLow(void) const noexcept {
30 return !isPinHigh();
31 }
32
34 void setPinHigh(void) noexcept {
35 ATOMIC() {
36 TPin::setPinHigh();
37 _pinState = HIGH;
38 }
39 }
40
42 void setPinLow(void) noexcept {
43 ATOMIC() {
44 TPin::setPinLow();
45 _pinState = LOW;
46 }
47 }
48
49private:
50 bool _pinState = LOW;
51};
An output pin that tracks it's state (HIGH/LOW)
Definition trackedOutputPin.h:14
bool isPinHigh(void) const noexcept
Check if the pin is set high.
Definition trackedOutputPin.h:24
void setPinHigh(void) noexcept
Set the pin high.
Definition trackedOutputPin.h:34
bool isPinLow(void) const noexcept
Check if the pin is set low.
Definition trackedOutputPin.h:29
void setPin(uint8_t pin, uint8_t mode) noexcept
Set the input pin.
Definition trackedOutputPin.h:18
void setPinLow(void) noexcept
Set the pin low.
Definition trackedOutputPin.h:42