arduino-emulator
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
arduino::GPIOWrapper Class Reference

GPIO wrapper class that provides flexible hardware abstraction. More...

#include <GPIOWrapper.h>

Inheritance diagram for arduino::GPIOWrapper:
arduino::HardwareGPIO

Public Member Functions

 GPIOWrapper (GPIOSource &source)
 
 GPIOWrapper (HardwareGPIO &gpio)
 
int analogRead (pin_size_t pinNumber)
 Read an analog value from a pin.
 
void analogReference (uint8_t mode)
 Set the analog reference voltage for ADC measurements.
 
void analogWrite (pin_size_t pinNumber, int value)
 Write an analog value (PWM) to a pin.
 
void analogWriteFrequency (pin_size_t pin, uint32_t freq)
 Set the PWM frequency for a pin (legacy 8-bit interface)
 
void analogWriteResolution (uint8_t bits)
 Set the resolution for analog write operations.
 
PinStatus digitalRead (pin_size_t pinNumber)
 Read the digital value from a pin.
 
void digitalWrite (pin_size_t pinNumber, PinStatus status)
 Write a digital value to a pin.
 
void noTone (uint8_t _pin)
 Stop tone generation on a pin.
 
void pinMode (pin_size_t pinNumber, PinMode pinMode)
 Configure the digital pin mode for input/output operations.
 
unsigned long pulseIn (uint8_t pin, uint8_t state, unsigned long timeout=1000000L)
 Measure the duration of a pulse on a pin (microseconds precision)
 
unsigned long pulseInLong (uint8_t pin, uint8_t state, unsigned long timeout=1000000L)
 Measure long pulse duration on a pin (microseconds precision)
 
void setGPIO (HardwareGPIO *gpio)
 Set the GPIO implementation directly.
 
void setSource (GPIOSource *source)
 Set a GPIO source that provides the GPIO implementation.
 
void tone (uint8_t _pin, unsigned int frequency, unsigned long duration=0)
 Generate a square wave tone on a pin.
 

Protected Member Functions

HardwareGPIOgetGPIO ()
 

Protected Attributes

HardwareGPIOp_gpio = nullptr
 
GPIOSourcep_source = nullptr
 

Detailed Description

GPIO wrapper class that provides flexible hardware abstraction.

GPIOWrapper is a concrete implementation of the HardwareGPIO interface that supports multiple delegation patterns for GPIO operations. It can delegate operations to:

This class implements the complete GPIO interface including:

The wrapper automatically handles null safety and provides appropriate default return values when no underlying GPIO implementation is available. It supports all standard Arduino GPIO operations with hardware abstraction.

A global GPIO instance is automatically provided for system-wide GPIO access.

See also
HardwareGPIO
GPIOSource

Member Function Documentation

◆ analogRead()

int arduino::GPIOWrapper::analogRead ( pin_size_t  pinNumber)
virtual

Read an analog value from a pin.

Parameters
pinNumberThe pin number to read from
Returns
The analog value (0-1023), returns 0 if no GPIO available

Implements arduino::HardwareGPIO.

◆ analogReference()

void arduino::GPIOWrapper::analogReference ( uint8_t  mode)
virtual

Set the analog reference voltage for ADC measurements.

Parameters
modeThe reference mode (DEFAULT, EXTERNAL, etc.)

Implements arduino::HardwareGPIO.

◆ analogWrite()

void arduino::GPIOWrapper::analogWrite ( pin_size_t  pinNumber,
int  value 
)
virtual

Write an analog value (PWM) to a pin.

Parameters
pinNumberThe pin number to write to
valueThe analog value (0-255 for 8-bit resolution)

Implements arduino::HardwareGPIO.

◆ analogWriteFrequency()

void arduino::GPIOWrapper::analogWriteFrequency ( pin_size_t  pin,
uint32_t  freq 
)
virtual

Set the PWM frequency for a pin (legacy 8-bit interface)

Parameters
pinThe pin number to configure
freqThe PWM frequency in Hz

Implements arduino::HardwareGPIO.

◆ analogWriteResolution()

void arduino::GPIOWrapper::analogWriteResolution ( uint8_t  bits)
virtual

Set the resolution for analog write operations.

Parameters
bitsThe resolution in bits (8-16 bits typically)

Implements arduino::HardwareGPIO.

◆ digitalRead()

PinStatus arduino::GPIOWrapper::digitalRead ( pin_size_t  pinNumber)
virtual

Read the digital value from a pin.

Parameters
pinNumberThe pin number to read from
Returns
The digital value (HIGH or LOW), returns LOW if no GPIO available

Implements arduino::HardwareGPIO.

◆ digitalWrite()

void arduino::GPIOWrapper::digitalWrite ( pin_size_t  pinNumber,
PinStatus  status 
)
virtual

Write a digital value to a pin.

Parameters
pinNumberThe pin number to write to
statusThe digital value to write (HIGH or LOW)

Implements arduino::HardwareGPIO.

◆ noTone()

void arduino::GPIOWrapper::noTone ( uint8_t  _pin)
virtual

Stop tone generation on a pin.

Parameters
_pinThe pin number to stop tone on

Implements arduino::HardwareGPIO.

◆ pinMode()

void arduino::GPIOWrapper::pinMode ( pin_size_t  pinNumber,
PinMode  pinMode 
)
virtual

Configure the digital pin mode for input/output operations.

Parameters
pinNumberThe pin number to configure
pinModeThe pin mode (INPUT, OUTPUT, INPUT_PULLUP, etc.)

Implements arduino::HardwareGPIO.

◆ pulseIn()

unsigned long arduino::GPIOWrapper::pulseIn ( uint8_t  pin,
uint8_t  state,
unsigned long  timeout = 1000000L 
)
virtual

Measure the duration of a pulse on a pin (microseconds precision)

Parameters
pinThe pin number to measure
stateThe pulse state to measure (HIGH or LOW)
timeoutMaximum time to wait for pulse in microseconds
Returns
Pulse duration in microseconds, 0 on timeout or no GPIO

Implements arduino::HardwareGPIO.

◆ pulseInLong()

unsigned long arduino::GPIOWrapper::pulseInLong ( uint8_t  pin,
uint8_t  state,
unsigned long  timeout = 1000000L 
)
virtual

Measure long pulse duration on a pin (microseconds precision)

Parameters
pinThe pin number to measure
stateThe pulse state to measure (HIGH or LOW)
timeoutMaximum time to wait for pulse in microseconds
Returns
Pulse duration in microseconds, 0 on timeout or no GPIO

Implements arduino::HardwareGPIO.

◆ setGPIO()

void arduino::GPIOWrapper::setGPIO ( HardwareGPIO gpio)
inline

Set the GPIO implementation directly.

Parameters
gpioPointer to HardwareGPIO implementation (use nullptr to reset)

◆ setSource()

void arduino::GPIOWrapper::setSource ( GPIOSource source)
inline

Set a GPIO source that provides the GPIO implementation.

Parameters
sourcePointer to GPIOSource that provides HardwareGPIO

◆ tone()

void arduino::GPIOWrapper::tone ( uint8_t  _pin,
unsigned int  frequency,
unsigned long  duration = 0 
)
virtual

Generate a square wave tone on a pin.

Parameters
_pinThe pin number to generate tone on
frequencyThe tone frequency in Hz
durationThe duration in milliseconds (0 for continuous)

Implements arduino::HardwareGPIO.


The documentation for this class was generated from the following files: