15 for (
auto &
el : ExtendedIOElement::getAll())
16 if (pin <
el.getStart())
27 F(
"The given pin does not correspond to an Extended IO element."),
44 el->pinMode(pin -
el->getStart(), mode);
55 ::digitalWrite(pin,
val);
58 el->digitalWrite(pin -
el->getStart(),
val);
69 return ::digitalRead(pin);
72 return el->digitalRead(pin -
el->getStart());
83 return ::analogRead(pin);
86 return el->analogRead(pin -
el->getStart());
96 ::analogWrite(pin,
val);
100 el->analogWrite(pin -
el->getStart(),
val);
117 ::pinMode(pin, mode);
120 el->pinModeBuffered(pin -
el->getStart(), mode);
128 ::digitalWrite(pin,
val);
131 el->digitalWriteBuffered(pin -
el->getStart(),
val);
139 return ::digitalRead(pin);
142 return el->digitalReadBuffered(pin -
el->getStart());
150 return ::analogRead(pin);
153 return el->analogReadBuffered(pin -
el->getStart());
163 ::analogWrite(pin,
val);
167 el->analogWriteBuffered(pin -
el->getStart(),
val);
175 if (dataPin == NO_PIN || clockPin == NO_PIN)
179 ::shiftOut((
int)dataPin, (
int)clockPin, bitOrder,
val);
209#if UINT16_MAX != UINT_MAX
210void pinMode(
unsigned int pin,
PinMode_t mode) {
213void digitalWrite(
unsigned int pin,
PinStatus_t val) {
214 ::digitalWrite(arduino_pin_cast(pin), val);
#define BEGIN_AH_NAMESPACE
constexpr PinStatus_t LOW
AH::function_traits< decltype(::digitalWrite)>::argument_t< 1 > PinStatus_t
constexpr PinStatus_t HIGH
AH::function_traits< decltype(::pinMode)>::argument_t< 1 > PinMode_t
AH::function_traits< decltype(::digitalWrite)>::argument_t< 0 > ArduinoPin_t
An abstract base class for Extended Input/Output elements.
#define FATAL_ERROR(msg, errc)
Print the error message and error code, and stop the execution.
void analogWriteBuffered(pin_t pin, analog_t val)
A buffered ExtIO version of the Arduino function.
bool isNativePin(pin_t pin)
Check if the given pin number is a real Arduino pin number, and not an ExtIO pin number.
void pinModeBuffered(pin_t pin, PinMode_t mode)
A buffered ExtIO version of the Arduino function.
ExtendedIOElement * getIOElementOfPin(pin_t pin)
Find the IO element of a given extended IO pin number.
void digitalWriteBuffered(pin_t pin, PinStatus_t val)
A buffered ExtIO version of the Arduino function.
void analogWrite(pin_t pin, analog_t val)
An ExtIO version of the Arduino function.
void pinMode(pin_t pin, PinMode_t mode)
An ExtIO version of the Arduino function.
ExtendedIOElement * getIOElementOfPinOrNull(pin_t pin)
Find the IO element of a given extended IO pin number.
PinStatus_t digitalReadBuffered(pin_t pin)
A buffered ExtIO version of the Arduino function.
analog_t analogRead(pin_t pin)
An ExtIO version of the Arduino function.
analog_t analogReadBuffered(pin_t pin)
A buffered ExtIO version of the Arduino function.
PinStatus_t digitalRead(pin_t pin)
An ExtIO version of the Arduino function.
void shiftOut(pin_t dataPin, pin_t clockPin, BitOrder_t bitOrder, uint8_t val)
An ExtIO version of the Arduino function.
void digitalWrite(pin_t pin, PinStatus_t val)
An ExtIO version of the Arduino function.
static bool inRange(T target, T start, T end)
uint16_t analog_t
The type returned from analogRead and similar functions.
uint16_t pin_t
The type for Arduino pins (and ExtendedIOElement pins).
ArduinoPin_t arduino_pin_cast(T t)
An array wrapper for easy copying, comparing, and iterating.