8 #ifndef __LIBGPIOD_GPIOD_CXX_HPP__
9 #define __LIBGPIOD_GPIOD_CXX_HPP__
108 GPIOD_API ::std::string
name(
void)
const;
114 GPIOD_API ::std::string
label(
void)
const;
174 GPIOD_API explicit operator bool(
void)
const noexcept;
201 chip(::gpiod_chip* chip);
203 void throw_if_noref(
void)
const;
205 ::std::shared_ptr<::gpiod_chip> _m_chip;
312 GPIOD_API ::std::string
name(
void)
const;
319 GPIOD_API ::std::string
consumer(
void)
const;
395 int value = 0)
const;
478 GPIOD_API explicit operator bool(
void)
const noexcept;
523 line(::gpiod_line* line,
const chip& owner);
525 void throw_if_null(
void)
const;
526 line_event make_line_event(const ::gpiod_line_event& event)
const noexcept;
528 ::gpiod_line* _m_line;
666 const ::std::vector<int> default_vals = ::std::vector<int>())
const;
678 GPIOD_API ::std::vector<int>
get_values(
void)
const;
696 const ::std::vector<int> values = ::std::vector<int>())
const;
729 GPIOD_API explicit operator bool(
void)
const noexcept;
821 iterator(const ::std::vector<line>::iterator& it);
823 ::std::vector<line>::iterator _m_iter;
842 void throw_if_empty(
void) const;
845 ::std::vector<
line> _m_bulk;
886 GPIOD_API chip_iter(
const chip_iter& other) =
default;
892 GPIOD_API chip_iter(chip_iter&& other) =
default;
937 GPIOD_API bool operator==(
const chip_iter& rhs)
const noexcept;
945 GPIOD_API bool operator!=(
const chip_iter& rhs)
const noexcept;
949 chip_iter(::gpiod_chip_iter* iter);
951 ::std::shared_ptr<::gpiod_chip_iter> _m_iter;
993 GPIOD_API line_iter(
const line_iter& other) =
default;
999 GPIOD_API line_iter(line_iter&& other) =
default;
1044 GPIOD_API bool operator==(
const line_iter& rhs)
const noexcept;
1052 GPIOD_API bool operator!=(
const line_iter& rhs)
const noexcept;
1056 ::std::shared_ptr<::gpiod_line_iter> _m_iter;
Line's internal pull-up bias is enabled.
GPIOD_API::std::string name(void) const
Return the name of the chip held by this object.
static GPIOD_API const ::std::bitset< 32 > FLAG_OPEN_SOURCE
The line is an open-source port.
GPIOD_API bool is_open_source(void) const
Check if this line represents an open-source GPIO.
GPIOD_API void append(const line &new_line)
Add a line to this line_bulk object.
GPIOD_API bool is_used(void) const
Check if this line is used by the kernel or other user space process.
GPIOD_API void request(const line_request &config, const ::std::vector< int > default_vals=::std::vector< int >()) const
Request all lines held by this object.
GPIOD_API void set_flags(::std::bitset< 32 > flags) const
Set configuration flags of this line.
GPIOD_API bool operator!=(const iterator &rhs) const noexcept
Check if this operator doesn't point to the same element.
GPIOD_API void clear(void)
Remove all lines from this object.
GPIOD_API void set_direction_output(const ::std::vector< int > &values) const
Change the direction all lines held by this object to output.
GPIOD_API void release(void) const
Release all lines held by this object.
Stores the configuration for line requests.
Line's direction setting is output.
GPIOD_API void set_config(int direction,::std::bitset< 32 > flags, const ::std::vector< int > values=::std::vector< int >()) const
Set configuration of all lines held by this object.
GPIOD_API line_bulk get_all_lines(void) const
Get all lines exposed by this chip.
GPIOD_API::std::string consumer(void) const
Get the consumer of this line (if any).
static GPIOD_API const ::std::bitset< 32 > FLAG_OPEN_DRAIN
The line is an open-drain port.
::std::chrono::nanoseconds timestamp
Best estimate of time of event occurrence in nanoseconds.
Line's internal bias is disabled.
Assume the string is the name of the chip.
::std::bitset< 32 > flags
Additional request flags.
GPIOD_API iterator & operator=(const iterator &other)=default
Assignment operator.
Represents a single GPIO line.
GPIOD_API void set_values(const ::std::vector< int > &values) const
Set values of all lines held by this object.
Represents a set of GPIO lines.
Request for reading line values.
GPIOD_API void open(const ::std::string &device, int how=OPEN_LOOKUP)
Open a GPIO chip.
GPIOD_API line_bulk find_lines(const ::std::vector<::std::string > &names) const
Get a set of lines exposed by this chip by their names.
static GPIOD_API const unsigned int MAX_LINES
Max number of lines that this object can hold.
GPIOD_API line find_line(const ::std::string &name)
Find a GPIO line by name.
GPIOD_API int event_get_fd(void) const
Get the event file descriptor associated with this line.
GPIOD_API line(void)
Default constructor.
GPIOD_API void set_direction_input() const
Change the direction this line to input.
GPIOD_API line_event event_read(void) const
Read a line event.
int request_type
Type of the request.
Line's internal pull-down bias is enabled.
GPIOD_API bool operator==(const iterator &rhs) const noexcept
Check if this operator points to the same element.
GPIOD_API line & operator[](unsigned int offset)
Get the line at given offset without bounds checking.
Assume the string is the number of the GPIO chip.
GPIOD_API line & operator=(const line &other)=default
Assignment operator.
GPIOD_API void reset(void) noexcept
Reset the internal smart pointer owned by this object.
GPIOD_API ~line(void)=default
Destructor.
GPIOD_API bool operator!=(const line &rhs) const noexcept
Check if two line objects reference different GPIO lines.
GPIOD_API void set_flags(::std::bitset< 32 > flags) const
Set configuration flags of all lines held by this object.
GPIOD_API line_bulk event_wait(const ::std::chrono::nanoseconds &timeout) const
Poll the set of lines for line events.
GPIOD_API line_bulk get_lines(const ::std::vector< unsigned int > &offsets) const
Get a set of lines exposed by this chip at given offsets.
GPIOD_API unsigned int size(void) const noexcept
Get the number of lines currently held by this object.
Allows to iterate over all lines owned by a GPIO chip.
GPIOD_API iterator(void)=default
Default constructor.
static GPIOD_API const ::std::bitset< 32 > FLAG_BIAS_PULL_DOWN
The line has a configurable pull-down resistor enabled.
GPIOD_API const line & operator*(void) const
Dereference current element.
GPIOD_API int get_value(void) const
Read the line value.
GPIOD_API bool operator==(const line &rhs) const noexcept
Check if two line objects reference the same GPIO line.
GPIOD_API bool is_open_drain(void) const
Check if this line represents an open-drain GPIO.
GPIOD_API ~iterator(void)=default
Destructor.
Iterator for iterating over lines held by line_bulk.
GPIOD_API::std::string name(void) const
Get the name of this line (if any).
GPIOD_API bool is_requested(void) const
Check if this user has ownership of this line.
GPIOD_API::std::string label(void) const
Return the label of the chip held by this object.
Helper structure for storing a set of GPIO line objects.
Line's active state is low.
static GPIOD_API const ::std::bitset< 32 > FLAG_ACTIVE_LOW
Set the active state to 'low' (high is the default).
GPIOD_API void set_config(int direction,::std::bitset< 32 > flags, int value=0) const
Set configuration of this line.
GPIOD_API chip(void)=default
Default constructor.
::std::string consumer
Consumer name to pass to the request.
GPIOD_API bool empty(void) const noexcept
Check if this line_bulk doesn't hold any lines.
GPIOD_API chip_iter make_chip_iter(void)
Create a new chip_iter.
GPIOD_API const chip & get_chip(void) const
Get the reference to the parent chip.
Assume the string is a path to the GPIO chardev.
GPIOD_API bool operator!=(const chip &rhs) const noexcept
Inequality operator.
GPIOD_API iterator & operator++(void)
Advance the iterator by one element.
Open based on the best guess what the supplied string is.
GPIOD_API::std::vector< line_event > event_read_multiple(void) const
Read multiple line events.
Line's bias state is unknown.
GPIOD_API const line * operator->(void) const
Member access operator.
GPIOD_API void set_direction_output(int value=0) const
Change the direction this lines to output.
GPIOD_API bool operator==(const chip &rhs) const noexcept
Equality operator.
GPIOD_API line find_line(const ::std::string &name) const
Get the line exposed by this chip by name.
GPIOD_API ~line_bulk(void)=default
Destructor.
Request for values, don't change the direction.
Line's direction setting is input.
line source
Line object referencing the GPIO line on which the event occurred.
GPIOD_API line_bulk & operator=(const line_bulk &other)=default
Assignment operator.
GPIOD_API iterator begin(void) noexcept
Returns an iterator to the first line.
GPIOD_API line get_line(unsigned int offset) const
Get the line exposed by this chip at given offset.
GPIOD_API void release(void) const
Release the line if it was previously requested.
Request for driving the GPIO lines.
GPIOD_API ~chip(void)=default
Destructor.
GPIOD_API int active_state(void) const
Get current active state of this line.
GPIOD_API void set_value(int val) const
Set the value of this line.
GPIOD_API iterator end(void) noexcept
Returns an iterator to the element following the last line.
GPIOD_API::std::vector< int > get_values(void) const
Read values from all lines held by this object.
GPIOD_API unsigned int offset(void) const
Get the offset of this line.
GPIOD_API unsigned int num_lines(void) const
Return the number of lines exposed by this chip.
Line's active state is high.
Listen for rising edge events.
GPIOD_API int bias(void) const
Get current bias of this line.
GPIOD_API bool operator!(void) const noexcept
Check if this object doesn't reference any GPIO line.
GPIOD_API void update(void) const
Re-read the line info from the kernel.
GPIOD_API void request(const line_request &config, int default_val=0) const
Request this line.
int event_type
Type of the event that occurred.
Assume the string is the label of the GPIO chip.
GPIOD_API void reset(void)
Reset the state of this object.
GPIOD_API line_bulk(void)=default
Default constructor.
GPIOD_API int direction(void) const
Get current direction of this line.
Describes a single GPIO line event.
GPIOD_API void set_direction_input() const
Change the direction all lines held by this object to input.
GPIOD_API bool event_wait(const ::std::chrono::nanoseconds &timeout) const
Wait for an event on this line.
Allows to iterate over all GPIO chips present on the system.
GPIOD_API bool operator!(void) const noexcept
Check if this object doesn't hold any lines.
static GPIOD_API const ::std::bitset< 32 > FLAG_BIAS_PULL_UP
The line has a configurable pull-up resistor enabled.
GPIOD_API bool operator!(void) const noexcept
Check if this object doesn't hold a reference to a GPIO chip.
GPIOD_API chip & operator=(const chip &other)=default
Assignment operator.
static GPIOD_API const ::std::bitset< 32 > FLAG_BIAS_DISABLE
The line has neither pull-up nor pull-down resistor enabled.
Listen for all types of events.
#define GPIOD_API
Makes symbol visible.
Listen for falling edge events.