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

GPIO hardware abstraction for Raspberry Pi in the Arduino emulator. More...

#include <HardwareGPIO_RPI.h>

Inheritance diagram for arduino::HardwareGPIO_RPI:
arduino::HardwareGPIO

Public Member Functions

 HardwareGPIO_RPI ()=default
 Constructor for HardwareGPIO_RPI.
 
 HardwareGPIO_RPI (const char *devName)
 Constructor for HardwareGPIO_RPI with custom device name.
 
 ~HardwareGPIO_RPI ()
 Destructor for HardwareGPIO_RPI.
 
int analogRead (pin_size_t pinNumber) override
 Read an analog value from a pin (if supported).
 
void analogReference (uint8_t mode) override
 Set the analog reference mode.
 
void analogWrite (pin_size_t pinNumber, int value) override
 Write an analog value (PWM) to a pin.
 
void analogWriteFrequency (pin_size_t pin, uint32_t freq)
 Set PWM frequency for a pin.
 
void analogWriteResolution (uint8_t bits)
 Set the resolution (number of bits) for analogWrite (PWM output).
 
void begin ()
 Initialize the GPIO hardware interface for Raspberry Pi.
 
PinStatus digitalRead (pin_size_t pinNumber) override
 Read a digital value from a GPIO pin.
 
void digitalWrite (pin_size_t pinNumber, PinStatus status) override
 Write a digital value to a GPIO pin.
 
void noTone (uint8_t _pin) override
 Stop tone generation on a pin.
 
 operator bool ()
 Boolean conversion operator.
 
void pinMode (pin_size_t pinNumber, PinMode pinMode) override
 Set the mode of a GPIO pin (INPUT, OUTPUT, etc).
 
unsigned long pulseIn (uint8_t pin, uint8_t state, unsigned long timeout=1000000L) override
 Measure pulse duration on a pin.
 
unsigned long pulseInLong (uint8_t pin, uint8_t state, unsigned long timeout=1000000L) override
 Measure long pulse duration on a pin.
 
void tone (uint8_t _pin, unsigned int frequency, unsigned long duration=0) override
 Generate a tone on a pin.
 

Protected Member Functions

uint32_t getFrequency (int pin)
 

Protected Attributes

const chardevice_name = "gpiochip0"
 
std::map< pin_size_t, uint32_tgpio_frequencies
 
bool is_open = false
 
int m_analogReference = 0
 
uint32_t max_value = 255
 
int pwm_pins [4] = {12, 13, 18, 19}
 

Detailed Description

GPIO hardware abstraction for Raspberry Pi in the Arduino emulator.

This class implements the Arduino-style GPIO interface for Raspberry Pi platforms, allowing digital and analog I/O, PWM, and timing functions to be used in a manner compatible with Arduino code. It provides methods to configure pin modes, read and write digital/analog values, generate PWM signals, and perform timing operations such as pulse measurement and tone generation.

The class inherits from HardwareGPIO and is intended for use within the emulator when running on Raspberry Pi hardware. It manages pin state, analog reference, and PWM frequency settings for supported pins.

Note
This class is only available when USE_RPI is defined.

Constructor & Destructor Documentation

◆ HardwareGPIO_RPI()

arduino::HardwareGPIO_RPI::HardwareGPIO_RPI ( const char devName)
inline

Constructor for HardwareGPIO_RPI with custom device name.

Parameters
devNameName of the GPIO chip device (e.g., "gpiochip0").

Member Function Documentation

◆ analogRead()

int arduino::HardwareGPIO_RPI::analogRead ( pin_size_t  pinNumber)
overridevirtual

Read an analog value from a pin (if supported).

Implements arduino::HardwareGPIO.

◆ analogReference()

void arduino::HardwareGPIO_RPI::analogReference ( uint8_t  mode)
overridevirtual

Set the analog reference mode.

Implements arduino::HardwareGPIO.

◆ analogWrite()

void arduino::HardwareGPIO_RPI::analogWrite ( pin_size_t  pinNumber,
int  value 
)
overridevirtual

Write an analog value (PWM) to a pin.

Implements arduino::HardwareGPIO.

◆ analogWriteFrequency()

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

Set PWM frequency for a pin.

Implements arduino::HardwareGPIO.

◆ analogWriteResolution()

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

Set the resolution (number of bits) for analogWrite (PWM output).

Parameters
bitsNumber of bits for PWM resolution (e.g., 8 for 0-255).

Implements arduino::HardwareGPIO.

◆ begin()

void arduino::HardwareGPIO_RPI::begin ( )

Initialize the GPIO hardware interface for Raspberry Pi.

Opens the GPIO chip device and prepares the class for GPIO operations. Should be called before using any GPIO functions.

◆ digitalRead()

PinStatus arduino::HardwareGPIO_RPI::digitalRead ( pin_size_t  pinNumber)
overridevirtual

Read a digital value from a GPIO pin.

Implements arduino::HardwareGPIO.

◆ digitalWrite()

void arduino::HardwareGPIO_RPI::digitalWrite ( pin_size_t  pinNumber,
PinStatus  status 
)
overridevirtual

Write a digital value to a GPIO pin.

Implements arduino::HardwareGPIO.

◆ noTone()

void arduino::HardwareGPIO_RPI::noTone ( uint8_t  _pin)
overridevirtual

Stop tone generation on a pin.

Implements arduino::HardwareGPIO.

◆ operator bool()

arduino::HardwareGPIO_RPI::operator bool ( )
inline

Boolean conversion operator.

Returns
true if the GPIO interface is open and initialized, false otherwise.

◆ pinMode()

void arduino::HardwareGPIO_RPI::pinMode ( pin_size_t  pinNumber,
PinMode  pinMode 
)
overridevirtual

Set the mode of a GPIO pin (INPUT, OUTPUT, etc).

Implements arduino::HardwareGPIO.

◆ pulseIn()

unsigned long arduino::HardwareGPIO_RPI::pulseIn ( uint8_t  pin,
uint8_t  state,
unsigned long  timeout = 1000000L 
)
overridevirtual

Measure pulse duration on a pin.

Parameters
pinPin number
statePin state to measure
timeoutTimeout in microseconds (default 1000000)

Implements arduino::HardwareGPIO.

◆ pulseInLong()

unsigned long arduino::HardwareGPIO_RPI::pulseInLong ( uint8_t  pin,
uint8_t  state,
unsigned long  timeout = 1000000L 
)
overridevirtual

Measure long pulse duration on a pin.

Parameters
pinPin number
statePin state to measure
timeoutTimeout in microseconds (default 1000000)

Implements arduino::HardwareGPIO.

◆ tone()

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

Generate a tone on a pin.

Parameters
_pinPin number
frequencyFrequency in Hz
durationDuration in ms (optional)

Implements arduino::HardwareGPIO.


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