XPoint 0.1.0
Hardware-agnostic crosspoint matrix routing library
Loading...
Searching...
No Matches
DirectGPIODriver.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
16#ifndef DIRECT_GPIO_DRIVER_H
17#define DIRECT_GPIO_DRIVER_H
18
19#include "XPointDriver.h"
20#include <stdint.h>
21
29{
30 public:
32 typedef uint16_t (*MapFn)(uint8_t r, uint8_t c);
33
40 DirectGPIODriver(uint16_t nPins, MapFn map);
41
44
46 void begin() override;
47
55 void setNodeHardware(uint8_t r, uint8_t c, bool state) override;
56
58 void commitPhysicalUpdates() override;
59
66 bool pinState(uint16_t idx) const;
67
72 uint16_t pinCount() const
73 {
74 return _nPins;
75 }
76
77 private:
78 uint16_t _nPins;
79 MapFn _map;
80 bool *_pins;
81};
82
83#endif // DIRECT_GPIO_DRIVER_H
Abstract hardware driver interface for the XPoint crosspoint matrix.
Host-only virtual GPIO driver — no hardware dependency.
Definition DirectGPIODriver.h:29
void setNodeHardware(uint8_t r, uint8_t c, bool state) override
Set the virtual pin for node (r, c) to state.
Definition DirectGPIODriver.cpp:22
void commitPhysicalUpdates() override
No-op for this virtual driver (writes are immediate).
Definition DirectGPIODriver.cpp:30
~DirectGPIODriver()
Destructor — frees the virtual pin array.
Definition DirectGPIODriver.cpp:13
uint16_t(* MapFn)(uint8_t r, uint8_t c)
Function pointer type: (row, col) → pin index.
Definition DirectGPIODriver.h:32
bool pinState(uint16_t idx) const
Read the logical state of virtual pin idx.
Definition DirectGPIODriver.cpp:34
uint16_t pinCount() const
Return the total virtual pin count.
Definition DirectGPIODriver.h:72
void begin() override
Zero all virtual pins.
Definition DirectGPIODriver.cpp:18
Abstract base class for all XPoint hardware drivers.
Definition XPointDriver.h:41