Control Surface  1.2.0
MIDI Control Surface library for Arduino
ExtendedInputOutput.hpp
Go to the documentation of this file.
1 /* ✔ */
2 
3 #pragma once
4 
7 
8 AH_DIAGNOSTIC_WERROR() // Enable errors on warnings
9 
11 #include <AH/Arduino-Wrapper.h> // pin functions and constants
13 
14 #include <AH/Hardware/Hardware-Types.hpp>
15 
17 
18 #define AH_EXT_PIN(x) (x + NUM_DIGITAL_PINS + NUM_ANALOG_INPUTS)
19 
20 namespace detail {
21 constexpr static auto tmp_HIGH = HIGH;
22 constexpr static auto tmp_LOW = LOW;
23 constexpr static auto tmp_INPUT = INPUT;
24 constexpr static auto tmp_OUTPUT = OUTPUT;
25 constexpr static auto tmp_INPUT_PULLUP = INPUT_PULLUP;
26 } // namespace detail
27 
29 
30 #ifndef ARDUINO_API_VERSION
31 #ifdef HIGH
32 #undef HIGH
33 #endif
34 #ifdef LOW
35 #undef LOW
36 #endif
37 
38 #ifdef INPUT
39 #undef INPUT
40 #endif
41 #ifdef OUTPUT
42 #undef OUTPUT
43 #endif
44 #ifdef INPUT_PULLUP
45 #undef INPUT_PULLUP
46 #endif
47 
48 using PinStatus_t = uint8_t;
49 using PinMode_t = uint8_t;
50 #if defined(SAMD_SERIES) /* Nano 33 */ || defined(_LIB_SAM_) /* Due */
51 using BitOrder_t = BitOrder;
52 #else
53 using BitOrder_t = uint8_t;
54 #endif
55 
58 
62 
63 #else
64 using PinStatus_t = PinStatus;
65 using PinMode_t = PinMode;
66 using BitOrder_t = BitOrder;
67 #endif
68 
70 
71 class ExtendedIOElement;
72 
77 namespace ExtIO {
85 ExtendedIOElement &getIOElementOfPin(pin_t pin);
88 void pinMode(pin_t pin, PinMode_t mode);
91 void pinMode(int pin, PinMode_t mode);
94 void digitalWrite(pin_t pin, PinStatus_t val);
97 void digitalWrite(int pin, PinStatus_t val);
100 int digitalRead(pin_t pin);
103 int digitalRead(int pin);
104 
110 analog_t analogRead(int pin);
113 void analogWrite(pin_t pin, analog_t val);
116 void analogWrite(int pin, analog_t val);
119 void analogWrite(int pin, int val);
122 void analogWrite(pin_t pin, int val);
123 
125 void shiftOut(pin_t dataPin, pin_t clockPin, BitOrder_t bitOrder, uint8_t val);
127 void shiftOut(int dataPin, int clockPin, BitOrder_t bitOrder, uint8_t val);
128 
131 void pinModeBuffered(pin_t pin, PinMode_t mode);
134 void pinModeBuffered(int pin, PinMode_t mode);
137 void digitalWriteBuffered(pin_t pin, PinStatus_t val);
140 void digitalWriteBuffered(int pin, PinStatus_t val);
143 int digitalReadBuffered(pin_t pin);
146 int digitalReadBuffered(int pin);
147 
156 void analogWriteBuffered(pin_t pin, analog_t val);
159 void analogWriteBuffered(int pin, analog_t val);
162 void analogWriteBuffered(int pin, int val);
165 void analogWriteBuffered(pin_t pin, int val);
166 
167 } // namespace ExtIO
168 
170 
LOW
const PinStatus_t LOW
Definition: ExtendedInputOutput.hpp:57
AH::ExtIO::analogWrite
void analogWrite(pin_t pin, analog_t val)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:86
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::detail::tmp_OUTPUT
constexpr static auto tmp_OUTPUT
Definition: ExtendedInputOutput.hpp:24
AH::detail::tmp_LOW
constexpr static auto tmp_LOW
Definition: ExtendedInputOutput.hpp:22
AH_DIAGNOSTIC_POP
#define AH_DIAGNOSTIC_POP()
Definition: Warnings.hpp:36
AH::ExtIO::digitalReadBuffered
int digitalReadBuffered(pin_t pin)
A buffered ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:130
AH::ExtIO::digitalWrite
void digitalWrite(pin_t pin, PinStatus_t val)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:48
AH::ExtIO::pinModeBuffered
void pinModeBuffered(pin_t pin, PinMode_t mode)
A buffered ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:102
AH::ExtIO::analogReadBuffered
analog_t analogReadBuffered(pin_t pin)
A buffered ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:143
HIGH
const PinStatus_t HIGH
Definition: ExtendedInputOutput.hpp:56
AH::ExtIO::analogRead
analog_t analogRead(pin_t pin)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:73
AH::detail::tmp_HIGH
constexpr static auto tmp_HIGH
Definition: ExtendedInputOutput.hpp:21
AH::ExtIO::analogWriteBuffered
void analogWriteBuffered(pin_t pin, analog_t val)
A buffered ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:156
OUTPUT
const PinMode_t OUTPUT
Definition: ExtendedInputOutput.hpp:60
INPUT
const PinMode_t INPUT
Definition: ExtendedInputOutput.hpp:59
PinStatus_t
uint8_t PinStatus_t
Definition: ExtendedInputOutput.hpp:48
AH::ExtIO::getIOElementOfPin
ExtendedIOElement & getIOElementOfPin(pin_t pin)
Find the IO element of a given extended IO pin number.
Definition: ExtendedInputOutput.cpp:17
AH::analog_t
uint16_t analog_t
The type returned from analogRead and similar functions.
Definition: Hardware-Types.hpp:15
AH_DIAGNOSTIC_EXTERNAL_HEADER
#define AH_DIAGNOSTIC_EXTERNAL_HEADER()
Definition: Warnings.hpp:37
AH::ExtIO::shiftOut
void shiftOut(pin_t dataPin, pin_t clockPin, BitOrder_t bitOrder, uint8_t val)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:178
BitOrder_t
uint8_t BitOrder_t
Definition: ExtendedInputOutput.hpp:53
AH::ExtIO::pinMode
void pinMode(pin_t pin, PinMode_t mode)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:36
AH_DIAGNOSTIC_WERROR
#define AH_DIAGNOSTIC_WERROR()
Definition: Warnings.hpp:35
AH::ExtIO::digitalWriteBuffered
void digitalWriteBuffered(pin_t pin, PinStatus_t val)
A buffered ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:116
BEGIN_AH_NAMESPACE
#define BEGIN_AH_NAMESPACE
Definition: AH/Settings/NamespaceSettings.hpp:9
AH::detail::tmp_INPUT_PULLUP
constexpr static auto tmp_INPUT_PULLUP
Definition: ExtendedInputOutput.hpp:25
END_AH_NAMESPACE
#define END_AH_NAMESPACE
Definition: AH/Settings/NamespaceSettings.hpp:10
NamespaceSettings.hpp
PinMode_t
uint8_t PinMode_t
Definition: ExtendedInputOutput.hpp:49
INPUT_PULLUP
const PinMode_t INPUT_PULLUP
Definition: ExtendedInputOutput.hpp:61
AH::detail::tmp_INPUT
constexpr static auto tmp_INPUT
Definition: ExtendedInputOutput.hpp:23