XPoint 0.1.0
Hardware-agnostic crosspoint matrix routing library
Loading...
Searching...
No Matches
ArduinoDirectGPIODriver Class Reference

XPointDriver implementation that calls digitalWrite() per node. More...

#include <ArduinoDirectGPIODriver.h>

Inheritance diagram for ArduinoDirectGPIODriver:
XPointDriver

Public Types

typedef uint8_t(* MapFn) (uint8_t r, uint8_t c)
 Function pointer type: (row, col) → Arduino pin number.
 

Public Member Functions

 ArduinoDirectGPIODriver (uint8_t rows, uint8_t cols, MapFn map, uint8_t maxPin)
 Construct the driver.
 
void begin () override
 Iterate all nodes and call pinMode(OUTPUT) + digitalWrite(LOW).
 
void setNodeHardware (uint8_t r, uint8_t c, bool state) override
 Call pinMode(OUTPUT) and drive the pin HIGH or LOW.
 
void commitPhysicalUpdates () override
 No-op — writes commit immediately in setNodeHardware().
 
- Public Member Functions inherited from XPointDriver
virtual ~XPointDriver ()
 
virtual void setNodeLevel (uint8_t r, uint8_t c, uint16_t level)
 Set an analog drive level for node (r, c).
 
virtual void releaseNode (uint8_t, uint8_t)
 De-energize the coil that was pulsed on node (r, c).
 

Detailed Description

XPointDriver implementation that calls digitalWrite() per node.

Suitable for direct relay drive on any Arduino-compatible MCU. Each node change results in an immediate digitalWrite() call — no buffering.

Member Typedef Documentation

◆ MapFn

typedef uint8_t(* ArduinoDirectGPIODriver::MapFn) (uint8_t r, uint8_t c)

Function pointer type: (row, col) → Arduino pin number.

Constructor & Destructor Documentation

◆ ArduinoDirectGPIODriver()

ArduinoDirectGPIODriver::ArduinoDirectGPIODriver ( uint8_t  rows,
uint8_t  cols,
MapFn  map,
uint8_t  maxPin 
)

Construct the driver.

Parameters
[in]rowsRow count (used by begin() to iterate all nodes).
[in]colsColumn count.
[in]mapMapper; must return a valid digitalWrite() pin number.
[in]maxPinHighest pin number the mapper can return (bounds guard).

Member Function Documentation

◆ begin()

void ArduinoDirectGPIODriver::begin ( )
overridevirtual

Iterate all nodes and call pinMode(OUTPUT) + digitalWrite(LOW).

Configures only the pins the mapper actually uses to avoid clobbering special-purpose pins (RX/TX, SPI, I2C, etc.).

Implements XPointDriver.

◆ commitPhysicalUpdates()

void ArduinoDirectGPIODriver::commitPhysicalUpdates ( )
inlineoverridevirtual

No-op — writes commit immediately in setNodeHardware().

Reimplemented from XPointDriver.

◆ setNodeHardware()

void ArduinoDirectGPIODriver::setNodeHardware ( uint8_t  r,
uint8_t  c,
bool  state 
)
overridevirtual

Call pinMode(OUTPUT) and drive the pin HIGH or LOW.

Parameters
[in]rRow index.
[in]cColumn index.
[in]statetrue = HIGH (relay on), false = LOW (relay off).

Implements XPointDriver.


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