XPoint 0.1.0
Hardware-agnostic crosspoint matrix routing library
Loading...
Searching...
No Matches
ShiftRegisterDriver.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
17#ifndef SHIFT_REGISTER_DRIVER_H
18#define SHIFT_REGISTER_DRIVER_H
19
20#include "XPointDriver.h"
21#include <stdint.h>
22
30{
31 public:
33 typedef uint16_t (*MapFn)(uint8_t r, uint8_t c);
34
41 ShiftRegisterDriver(uint16_t nOut, MapFn map);
42
45
47 void begin() override;
48
56 void setNodeHardware(uint8_t r, uint8_t c, bool state) override;
57
59 void commitPhysicalUpdates() override;
60
67 uint8_t byteAt(uint16_t idx) const;
68
73 uint16_t byteCount() const
74 {
75 return _nBytes;
76 }
77
78 private:
79 uint16_t _nOut;
80 MapFn _map;
81 uint16_t _nBytes;
82 uint8_t *_buf;
83};
84
85#endif // SHIFT_REGISTER_DRIVER_H
Abstract hardware driver interface for the XPoint crosspoint matrix.
Host-only virtual shift-register driver — no hardware dependency.
Definition ShiftRegisterDriver.h:30
~ShiftRegisterDriver()
Destructor — frees the shadow buffer.
Definition ShiftRegisterDriver.cpp:14
uint16_t(* MapFn)(uint8_t r, uint8_t c)
Function pointer type: (row, col) → output bit index.
Definition ShiftRegisterDriver.h:33
uint8_t byteAt(uint16_t idx) const
Read one byte from the shadow buffer.
Definition ShiftRegisterDriver.cpp:40
void commitPhysicalUpdates() override
No-op for this virtual driver (no physical chain to clock).
Definition ShiftRegisterDriver.cpp:36
void begin() override
Zero the shadow buffer.
Definition ShiftRegisterDriver.cpp:19
void setNodeHardware(uint8_t r, uint8_t c, bool state) override
Set or clear one bit in the shadow buffer.
Definition ShiftRegisterDriver.cpp:23
uint16_t byteCount() const
Return the number of bytes in the shadow buffer.
Definition ShiftRegisterDriver.h:73
Abstract base class for all XPoint hardware drivers.
Definition XPointDriver.h:41