Control Surface  1.1.1
MIDI Control Surface library for Arduino
ExtendedIOElement.hpp
Go to the documentation of this file.
1 /* ✔ */
2 
3 #pragma once
4 
6 AH_DIAGNOSTIC_WERROR() // Enable errors on warnings
7 
8 #include <AH/Hardware/Hardware-Types.hpp>
10 
12 
62 class ExtendedIOElement : public DoublyLinkable<ExtendedIOElement> {
63  protected:
70  ExtendedIOElement(pin_t length);
71 
72  public:
73  virtual ~ExtendedIOElement();
74 
91  virtual void pinMode(pin_t pin, uint8_t mode) = 0;
92 
101  virtual void digitalWrite(pin_t pin, uint8_t state) = 0;
102 
110  virtual int digitalRead(pin_t pin) = 0;
111 
120  virtual void analogWrite(pin_t pin, analog_t val) = 0;
121 
129  virtual analog_t analogRead(pin_t pin) = 0;
130 
134  virtual void begin() = 0;
135 
139  static void beginAll();
140 
146  virtual void update() = 0;
147 
155  pin_t pin(pin_t pin) const;
156 
165  pin_t operator[](pin_t pin) const;
166 
172  pin_t getLength() const;
173 
178  pin_t getEnd() const;
179 
184  pin_t getStart() const;
185 
189  static DoublyLinkedList<ExtendedIOElement> &getAll();
190 
191  private:
192  const pin_t length;
193  const pin_t start;
194  const pin_t end;
195  static pin_t offset;
196 
198 };
199 
201 
AH::ExtIO::pinMode
void pinMode(pin_t pin, uint8_t mode)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:36
AH::ExtIO::analogWrite
void analogWrite(pin_t pin, analog_t val)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:103
AH::ExtendedIOElement::end
const pin_t end
Definition: ExtendedIOElement.hpp:194
AH::ExtendedIOElement::offset
static pin_t offset
Definition: ExtendedIOElement.hpp:195
Warnings.hpp
AH::ExtIO::digitalRead
int digitalRead(pin_t pin)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:60
AH::pin_t
uint16_t pin_t
The type for Arduino pins (and ExtendedIOElement pins).
Definition: Hardware-Types.hpp:17
AH_DIAGNOSTIC_POP
#define AH_DIAGNOSTIC_POP()
Definition: Warnings.hpp:17
AH::ExtendedIOElement::start
const pin_t start
Definition: ExtendedIOElement.hpp:193
AH::ExtendedIOElement
An abstract base class for Extended Input/Output elements.
Definition: ExtendedIOElement.hpp:62
LinkedList.hpp
AH::ExtIO::analogRead
analog_t analogRead(pin_t pin)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:90
AH::ExtendedIOElement::length
const pin_t length
Definition: ExtendedIOElement.hpp:192
AH::analog_t
uint16_t analog_t
The type returned from analogRead and similar functions.
Definition: Hardware-Types.hpp:15
DoublyLinkedList
A class for doubly linked lists.
Definition: LinkedList.hpp:27
DoublyLinkable
A class that can be inherited from to allow inserting into a DoublyLinkedList.
Definition: LinkedList.hpp:302
AH_DIAGNOSTIC_WERROR
#define AH_DIAGNOSTIC_WERROR()
Definition: Warnings.hpp:16
BEGIN_AH_NAMESPACE
#define BEGIN_AH_NAMESPACE
Definition: AH/Settings/NamespaceSettings.hpp:9
END_AH_NAMESPACE
#define END_AH_NAMESPACE
Definition: AH/Settings/NamespaceSettings.hpp:10
AH::ExtendedIOElement::elements
static DoublyLinkedList< ExtendedIOElement > elements
Definition: ExtendedIOElement.hpp:197
AH::ExtIO::digitalWrite
void digitalWrite(pin_t pin, uint8_t val)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:48