arduino-emulator
Loading...
Searching...
No Matches
Public Member Functions | List of all members
arduino::HardwareGPIO Class Referenceabstract

Abstract base class for GPIO (General Purpose Input/Output) functions. More...

#include <HardwareGPIO.h>

Inheritance diagram for arduino::HardwareGPIO:
arduino::GPIOWrapper arduino::HardwareGPIO_RPI arduino::RemoteGPIO

Public Member Functions

virtual int analogRead (pin_size_t pinNumber)=0
 Read the value from the specified analog pin.
 
virtual void analogReference (uint8_t mode)=0
 Configure the reference voltage used for analog input.
 
virtual void analogWrite (pin_size_t pinNumber, int value)=0
 Write an analog value (PWM wave) to a pin.
 
virtual PinStatus digitalRead (pin_size_t pinNumber)=0
 Read the value from a specified digital pin.
 
virtual void digitalWrite (pin_size_t pinNumber, PinStatus status)=0
 Write a HIGH or LOW value to a digital pin.
 
virtual void noTone (uint8_t _pin)=0
 Stop the generation of a square wave triggered by tone()
 
virtual void pinMode (pin_size_t pinNumber, PinMode pinMode)=0
 Configure the specified pin to behave as an input or output.
 
virtual unsigned long pulseIn (uint8_t pin, uint8_t state, unsigned long timeout=1000000L)=0
 Read a pulse (HIGH or LOW) on a pin.
 
virtual unsigned long pulseInLong (uint8_t pin, uint8_t state, unsigned long timeout=1000000L)=0
 Alternative to pulseIn() which is better at handling long pulses.
 
virtual void tone (uint8_t _pin, unsigned int frequency, unsigned long duration=0)=0
 Generate a square wave of the specified frequency on a pin.
 

Detailed Description

Abstract base class for GPIO (General Purpose Input/Output) functions.

HardwareGPIO defines the interface for hardware abstraction of GPIO operations across different platforms and microcontrollers. This class provides a unified API for digital and analog I/O operations that can be implemented by platform-specific classes.

The class supports:

Platform-specific implementations should inherit from this class and provide concrete implementations for all pure virtual methods. Examples include HardwareGPIO_RPI for Raspberry Pi, or similar classes for other platforms.

Note
All methods in this class are pure virtual and must be implemented by derived classes to provide platform-specific functionality.
See also
HardwareGPIO_RPI
PinMode
PinStatus

Member Function Documentation

◆ analogRead()

virtual int arduino::HardwareGPIO::analogRead ( pin_size_t  pinNumber)
pure virtual

Read the value from the specified analog pin.

Parameters
pinNumberThe analog pin to read from (A0, A1, etc.)
Returns
The analog reading on the pin (0-1023 for 10-bit ADC)

Implemented in arduino::GPIOWrapper, arduino::RemoteGPIO, and arduino::HardwareGPIO_RPI.

◆ analogReference()

virtual void arduino::HardwareGPIO::analogReference ( uint8_t  mode)
pure virtual

Configure the reference voltage used for analog input.

Parameters
modeThe reference type (DEFAULT, INTERNAL, EXTERNAL, etc.)

Implemented in arduino::GPIOWrapper, arduino::RemoteGPIO, and arduino::HardwareGPIO_RPI.

◆ analogWrite()

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

Write an analog value (PWM wave) to a pin.

Parameters
pinNumberThe pin to write to
valueThe duty cycle (0-255 for 8-bit PWM)

Implemented in arduino::GPIOWrapper, arduino::RemoteGPIO, and arduino::HardwareGPIO_RPI.

◆ digitalRead()

virtual PinStatus arduino::HardwareGPIO::digitalRead ( pin_size_t  pinNumber)
pure virtual

Read the value from a specified digital pin.

Parameters
pinNumberThe pin number to read from
Returns
HIGH or LOW

Implemented in arduino::GPIOWrapper, arduino::RemoteGPIO, and arduino::HardwareGPIO_RPI.

◆ digitalWrite()

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

Write a HIGH or LOW value to a digital pin.

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

Implemented in arduino::GPIOWrapper, arduino::RemoteGPIO, and arduino::HardwareGPIO_RPI.

◆ noTone()

virtual void arduino::HardwareGPIO::noTone ( uint8_t  _pin)
pure virtual

Stop the generation of a square wave triggered by tone()

Parameters
_pinThe pin on which to stop generating the tone

Implemented in arduino::GPIOWrapper, arduino::HardwareGPIO_RPI, and arduino::RemoteGPIO.

◆ pinMode()

virtual void arduino::HardwareGPIO::pinMode ( pin_size_t  pinNumber,
PinMode  pinMode 
)
pure virtual

Configure the specified pin to behave as an input or output.

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

Implemented in arduino::GPIOWrapper, arduino::RemoteGPIO, and arduino::HardwareGPIO_RPI.

◆ pulseIn()

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

Read a pulse (HIGH or LOW) on a pin.

Parameters
pinThe pin on which you want to read the pulse
stateType of pulse to read (HIGH or LOW)
timeoutTimeout in microseconds (default 1 second)
Returns
The length of the pulse in microseconds, or 0 if timeout

Implemented in arduino::GPIOWrapper, arduino::HardwareGPIO_RPI, and arduino::RemoteGPIO.

◆ pulseInLong()

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

Alternative to pulseIn() which is better at handling long pulses.

Parameters
pinThe pin on which you want to read the pulse
stateType of pulse to read (HIGH or LOW)
timeoutTimeout in microseconds (default 1 second)
Returns
The length of the pulse in microseconds, or 0 if timeout

Implemented in arduino::GPIOWrapper, arduino::HardwareGPIO_RPI, and arduino::RemoteGPIO.

◆ tone()

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

Generate a square wave of the specified frequency on a pin.

Parameters
_pinThe pin on which to generate the tone
frequencyThe frequency of the tone in hertz
durationThe duration of the tone in milliseconds (0 = continuous)

Implemented in arduino::GPIOWrapper, arduino::HardwareGPIO_RPI, and arduino::RemoteGPIO.


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