PCA9555 / PCAL9555A Driver
API reference
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
pcal95555::PinReadResult Struct Reference

Fixed-capacity result container for multi-pin read operations. More...

#include <pcal95555.hpp>

Public Types

using iterator = typename std::array< std::pair< uint8_t, bool >, kMaxPins >::const_iterator
 

Public Member Functions

uint8_t size () const noexcept
 Number of populated entries.
 
bool empty () const noexcept
 True when no entries have been added.
 
const std::pair< uint8_t, bool > & operator[] (uint8_t i) const noexcept
 Access entry by index (no bounds check).
 
void push_back (uint8_t pin, bool value) noexcept
 Append a pin/value pair. Silently drops entries beyond kMaxPins.
 
bool contains (uint8_t pin) const noexcept
 Check whether a pin number is already stored in the result set.
 
const std::pair< uint8_t, bool > * find (uint8_t pin) const noexcept
 
iterator begin () const noexcept
 
iterator end () const noexcept
 

Public Attributes

std::array< std::pair< uint8_t, bool >, kMaxPins > data {}
 Pin number / value pairs.
 
uint8_t count = 0
 Number of valid entries in data[].
 

Static Public Attributes

static constexpr uint8_t kMaxPins = 16
 Maximum number of entries (constrained by hardware: 16 GPIO pins).
 

Detailed Description

Fixed-capacity result container for multi-pin read operations.

Stores up to 16 pin/value pairs on the stack, avoiding heap allocation. The PCAL95555 has exactly 16 GPIO pins, so 16 is the hard upper bound.

Supports range-based for loops and structured bindings:

auto results = driver.ReadPins({0, 5, 10});
for (const auto& [pin, value] : results) {
printf("Pin %d: %s\n", pin, value ? "HIGH" : "LOW");
}

Member Typedef Documentation

◆ iterator

using pcal95555::PinReadResult::iterator = typename std::array<std::pair<uint8_t, bool>, kMaxPins>::const_iterator

Member Function Documentation

◆ begin()

iterator pcal95555::PinReadResult::begin ( ) const
inlinenoexcept

◆ contains()

bool pcal95555::PinReadResult::contains ( uint8_t  pin) const
inlinenoexcept

Check whether a pin number is already stored in the result set.

Examples
/home/runner/work/hf-pcal95555-driver/hf-pcal95555-driver/inc/pcal95555.hpp.

◆ empty()

bool pcal95555::PinReadResult::empty ( ) const
inlinenoexcept

◆ end()

iterator pcal95555::PinReadResult::end ( ) const
inlinenoexcept

◆ find()

const std::pair< uint8_t, bool > * pcal95555::PinReadResult::find ( uint8_t  pin) const
inlinenoexcept

Look up a pin's read result by pin number.

Returns
Pointer to the {pin, value} pair, or nullptr if not found.
Examples
/home/runner/work/hf-pcal95555-driver/hf-pcal95555-driver/inc/pcal95555.hpp.

◆ operator[]()

const std::pair< uint8_t, bool > & pcal95555::PinReadResult::operator[] ( uint8_t  i) const
inlinenoexcept

Access entry by index (no bounds check).

Examples
/home/runner/work/hf-pcal95555-driver/hf-pcal95555-driver/inc/pcal95555.hpp.

◆ push_back()

void pcal95555::PinReadResult::push_back ( uint8_t  pin,
bool  value 
)
inlinenoexcept

Append a pin/value pair. Silently drops entries beyond kMaxPins.

Examples
/home/runner/work/hf-pcal95555-driver/hf-pcal95555-driver/inc/pcal95555.hpp.

◆ size()

uint8_t pcal95555::PinReadResult::size ( ) const
inlinenoexcept

Member Data Documentation

◆ count

uint8_t pcal95555::PinReadResult::count = 0

◆ data

std::array<std::pair<uint8_t, bool>, kMaxPins> pcal95555::PinReadResult::data {}

◆ kMaxPins

constexpr uint8_t pcal95555::PinReadResult::kMaxPins = 16
staticconstexpr

Maximum number of entries (constrained by hardware: 16 GPIO pins).

Examples
/home/runner/work/hf-pcal95555-driver/hf-pcal95555-driver/inc/pcal95555.hpp.

The documentation for this struct was generated from the following file: