XPoint 0.1.0
Hardware-agnostic crosspoint matrix routing library
Loading...
Searching...
No Matches
ArduinoDirectGPIODriver.h
Go to the documentation of this file.
1// SPDX-License-Identifier: AGPL-3.0-only
2// Copyright (c) 2026 Douglas Quigg (dstroy0) <dquigg123@gmail.com>
3// https://github.com/dstroy0/XPoint
4
20#ifndef ARDUINO_DIRECT_GPIO_DRIVER_H
21#define ARDUINO_DIRECT_GPIO_DRIVER_H
22
23#include "XPointDriver.h"
24#include <stdint.h>
25
26#if defined(ARDUINO)
27#include <Arduino.h>
28#endif
29
37{
38 public:
40 typedef uint8_t (*MapFn)(uint8_t r, uint8_t c);
41
50 ArduinoDirectGPIODriver(uint8_t rows, uint8_t cols, MapFn map, uint8_t maxPin);
51
58 void begin() override;
59
67 void setNodeHardware(uint8_t r, uint8_t c, bool state) override;
68
70 void commitPhysicalUpdates() override
71 {
72 }
73
74 private:
75 uint8_t _rows;
76 uint8_t _cols;
77 MapFn _map;
78 uint8_t _maxPin;
79};
80
81#endif // ARDUINO_DIRECT_GPIO_DRIVER_H
Abstract hardware driver interface for the XPoint crosspoint matrix.
XPointDriver implementation that calls digitalWrite() per node.
Definition ArduinoDirectGPIODriver.h:37
uint8_t(* MapFn)(uint8_t r, uint8_t c)
Function pointer type: (row, col) → Arduino pin number.
Definition ArduinoDirectGPIODriver.h:40
void begin() override
Iterate all nodes and call pinMode(OUTPUT) + digitalWrite(LOW).
Definition ArduinoDirectGPIODriver.cpp:14
void commitPhysicalUpdates() override
No-op — writes commit immediately in setNodeHardware().
Definition ArduinoDirectGPIODriver.h:70
void setNodeHardware(uint8_t r, uint8_t c, bool state) override
Call pinMode(OUTPUT) and drive the pin HIGH or LOW.
Definition ArduinoDirectGPIODriver.cpp:32
Abstract base class for all XPoint hardware drivers.
Definition XPointDriver.h:41