Arduino KVComm  master
Key-Value pair communication 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);
87 void pinMode(pin_t pin, PinMode_t mode);
89 void pinMode(int pin, PinMode_t mode);
91 void digitalWrite(pin_t pin, PinStatus_t val);
93 void digitalWrite(int pin, PinStatus_t val);
95 int digitalRead(pin_t pin);
97 int digitalRead(int pin);
99 void shiftOut(pin_t dataPin, pin_t clockPin, BitOrder_t bitOrder,
100  uint8_t val);
102 void shiftOut(int dataPin, int clockPin, BitOrder_t bitOrder,
103  uint8_t val);
107 analog_t analogRead(int pin);
109 void analogWrite(pin_t pin, analog_t val);
111 void analogWrite(int pin, analog_t val);
113 void analogWrite(int pin, int val);
115 void analogWrite(pin_t pin, int val);
116 
117 } // namespace ExtIO
118 
120 
BEGIN_AH_NAMESPACE
#define BEGIN_AH_NAMESPACE
Definition: NamespaceSettings.hpp:9
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:97
Warnings.hpp
AH::ExtIO::digitalRead
int digitalRead(pin_t pin)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:58
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:17
AH::ExtIO::digitalWrite
void digitalWrite(pin_t pin, PinStatus_t val)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:47
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:86
AH::detail::tmp_HIGH
constexpr static auto tmp_HIGH
Definition: ExtendedInputOutput.hpp:21
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:18
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:69
NamespaceSettings.hpp
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:16
AH::detail::tmp_INPUT_PULLUP
constexpr static auto tmp_INPUT_PULLUP
Definition: ExtendedInputOutput.hpp:25
END_AH_NAMESPACE
#define END_AH_NAMESPACE
Definition: NamespaceSettings.hpp:10
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