150 bool connect(uint8_t row, uint8_t col);
180 bool setLevel(uint8_t row, uint8_t col, uint16_t level);
202 void lockRows(uint8_t rowA, uint8_t rowB);
232 static const uint8_t MAX_PULSES = 8;
257 bool _stateBuf[ROWS * COLS];
258 bool _ilockBuf[ROWS * ROWS];
267 :
XPoint(ROWS, COLS, _stateBuf, _ilockBuf, _exclBuf, type, pdur)
Abstract hardware driver interface for the XPoint crosspoint matrix.
RelayType
Relay operating mode.
Definition XPoint.h:56
@ RE_NON_LATCHING
energize to connect; de-energize to disconnect.
Definition XPoint.h:57
@ RE_LATCHING_DUAL_COIL
SET coil to connect; RESET coil to disconnect.
Definition XPoint.h:58
Abstract base class for all XPoint hardware drivers.
Definition XPointDriver.h:41
Zero-heap variant of XPoint with embedded state arrays.
Definition XPoint.h:256
XPointStatic(RelayType type=RE_NON_LATCHING, uint16_t pdur=0)
Definition XPoint.h:266
Hardware-agnostic crosspoint matrix connection manager.
Definition XPoint.h:82
bool disconnect(uint8_t row, uint8_t col)
Disconnect row row from column col.
Definition XPoint.cpp:137
void setDriver(XPointDriver *drv)
Attach a driver backend.
Definition XPoint.cpp:65
void update()
Expire latching-relay coil pulses and call releaseNode() as needed.
Definition XPoint.cpp:283
XPoint(const XPoint &)=delete
void begin()
Initialize hardware by calling drv->begin().
Definition XPoint.cpp:70
bool connect(uint8_t row, uint8_t col)
Connect row row to column col.
Definition XPoint.cpp:80
void clearAll()
Disconnect all connected nodes and zero the state table.
Definition XPoint.cpp:218
void exclusiveInput(uint8_t col)
Mark column col as exclusive: at most one row may connect at a time.
Definition XPoint.cpp:272
void lockRows(uint8_t rowA, uint8_t rowB)
Prevent rowA and rowB from connecting to the same column simultaneously.
Definition XPoint.cpp:263
bool setLevel(uint8_t row, uint8_t col, uint16_t level)
analog-level connect / disconnect (PWM drivers).
Definition XPoint.cpp:183
~XPoint()
Destructor. Frees heap buffers only when constructed with the heap constructor.
Definition XPoint.cpp:36
XPoint & operator=(const XPoint &)=delete
Internal pulse-event slot for non-blocking latching-relay coil timing.
Definition XPoint.h:69
uint8_t c
Matrix column.
Definition XPoint.h:71
unsigned long t0
millis() at coil energize.
Definition XPoint.h:72
uint8_t r
Matrix row.
Definition XPoint.h:70
bool on
true = slot occupied.
Definition XPoint.h:73