105 if (mode != INPUT && mode != OUTPUT) {
132 if (mode != INPUT && mode != OUTPUT) {
234 if (mask & (1UL <<
i)) {
#define SENSORLIB_LOG_E(...)
Abstract base class for GPIO expander devices.
virtual ~IoExpanderBase()=default
Virtual destructor.
std::unique_ptr< bool[]> _outputStates
Cached output states (true = HIGH)
virtual void deinit()
Deinitialize the expander.
void digitalToggle(uint8_t pin)
Toggle the state of an output pin.
virtual bool initImpl(uint8_t param)=0
Chip‑specific initialization.
bool digitalRead(uint8_t pin)
Read the digital value from an input pin.
virtual void digitalWriteImpl(uint8_t pin, bool value)=0
Hardware‑specific implementation of digitalWrite().
std::unique_ptr< uint8_t[]> _pinModes
Cached pin modes (INPUT/OUTPUT)
virtual uint16_t digitalReadPort()
Read the values of all input pins.
virtual void pinModeImpl(uint8_t pin, uint8_t mode)=0
Hardware‑specific implementation of pinMode().
uint8_t _pinCount
Number of GPIO pins.
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.
void configPins(uint16_t pinMask, uint8_t mode)
Configure multiple pins as input or output simultaneously.
virtual void digitalWritePort(uint16_t mask, uint16_t values)
Write to multiple pins simultaneously using a mask.
uint8_t pinCount() const
Get the total number of pins provided by this expander.
virtual bool digitalReadImpl(uint8_t pin)=0
Hardware‑specific implementation of digitalRead().
IoExpanderBase(uint8_t pinCount)
Construct a new IoExpanderBase object.
virtual void configPinsImpl(uint16_t pinMask, uint8_t mode)=0
Hardware‑specific implementation of batch pin mode configuration.
uint16_t pinToMask(uint8_t pin) const
Convert a pin number to its corresponding bitmask.