31#include "../SensorBuildOpt.h"
32#if !SENSORLIB_EXCLUDE_IO_EXPANDER_SPI
83 if (_mosi == -1 || sck == -1) {
157 for (uint32_t
i = 0;
i < bits;
i++) {
160 if (_miso != -1 && _base->
digitalRead(_miso)) out |= 0x01;
163 bitVal = (val >> (bits - 1 -
i)) & 1;
165 bitVal = (val >>
i) & 1;
#define SENSORLIB_LOG_E(...)
Abstract base class for GPIO expander devices.
bool digitalRead(uint8_t pin)
Read the digital value from an input pin.
void pinMode(uint8_t pin, uint8_t mode)
Set the direction of a GPIO pin.
void digitalWrite(uint8_t pin, bool value)
Write a digital value to an output pin.
Software SPI master class for driving GPIO expanders via bit-banging.
bool beginSPI(IoExpanderBase &base, int mosi, int miso, int sck, int cs)
Initialize the software SPI interface.
uint32_t transferDataBits(uint32_t val, uint32_t bits)
Transfer an arbitrary number of bits over SPI.
void setBitOrder(uint8_t order)
Set the bit order for SPI transfers.
~IoExpanderSPI()=default
Destroy the IoExpanderSPI object.
uint8_t transfer8(uint8_t val)
Transfer 8 bits over SPI.
uint16_t transfer9(uint16_t val)
Transfer 9 bits over SPI.
IoExpanderSPI()
Construct a new IoExpanderSPI object.