8 #ifndef __LIBGPIOD_GPIOD_CXX_HPP__
9 #define __LIBGPIOD_GPIOD_CXX_HPP__
105 GPIOD_API ::std::string
name(
void)
const;
111 GPIOD_API ::std::string
label(
void)
const;
171 GPIOD_API operator bool(
void)
const noexcept;
198 chip(::gpiod_chip* chip);
200 void throw_if_noref(
void)
const;
202 ::std::shared_ptr<::gpiod_chip> _m_chip;
303 GPIOD_API ::std::string
name(
void)
const;
310 GPIOD_API ::std::string
consumer(
void)
const;
426 GPIOD_API operator bool(
void)
const noexcept;
457 line(::gpiod_line* line,
const chip& owner);
459 void throw_if_null(
void)
const;
461 ::gpiod_line* _m_line;
600 const std::vector<int> default_vals = std::vector<int>())
const;
612 GPIOD_API ::std::vector<int>
get_values(
void)
const;
634 GPIOD_API operator bool(
void)
const noexcept;
726 iterator(const ::std::vector<line>::iterator& it);
728 ::std::vector<line>::iterator _m_iter;
747 void throw_if_empty(
void) const;
750 ::std::vector<
line> _m_bulk;
791 GPIOD_API chip_iter(
const chip_iter& other) =
default;
797 GPIOD_API chip_iter(chip_iter&& other) =
default;
842 GPIOD_API bool operator==(
const chip_iter& rhs)
const noexcept;
850 GPIOD_API bool operator!=(
const chip_iter& rhs)
const noexcept;
854 chip_iter(::gpiod_chip_iter* iter);
856 ::std::shared_ptr<::gpiod_chip_iter> _m_iter;
898 GPIOD_API line_iter(
const line_iter& other) =
default;
904 GPIOD_API line_iter(line_iter&& other) =
default;
949 GPIOD_API bool operator==(
const line_iter& rhs)
const noexcept;
957 GPIOD_API bool operator!=(
const line_iter& rhs)
const noexcept;
961 ::std::shared_ptr<::gpiod_line_iter> _m_iter;
Listen for all types of events.
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 clear(void)
Remove all lines from this object.
Assume the string is the label of the GPIO chip.
GPIOD_API void release(void) const
Release all lines held by this object.
Stores the configuration for line requests.
GPIOD_API int direction(void) const noexcept
Get current direction of this line.
Line's active state is high.
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).
GPIOD_API chip_iter make_chip_iter(void)
Create a new chip_iter.
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.
::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.
Line's direction setting is output.
Assume the string is a path to the GPIO chardev.
#define GPIOD_API
Makes symbol visible.
GPIOD_API bool operator!(void) const noexcept
Check if this object doesn't hold a reference to a GPIO chip.
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 bool operator!(void) const noexcept
Check if this object doesn't reference any GPIO line.
GPIOD_API int event_get_fd(void) const
Get the event file descriptor associated with this line.
Assume the string is the number of the GPIO chip.
GPIOD_API line(void)
Default constructor.
GPIOD_API line_event event_read(void) const
Read a line event.
int request_type
Type of the request.
Line's direction setting is input.
GPIOD_API bool operator==(const chip &rhs) const noexcept
Equality operator.
Listen for rising edge events.
GPIOD_API bool operator!=(const line &rhs) const noexcept
Check if two line objects reference different GPIO lines.
GPIOD_API line & operator[](unsigned int offset)
Get the line at given offset without bounds checking.
GPIOD_API line & operator=(const line &other)=default
Assignment operator.
Assume the string is the name of the chip.
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 chip &rhs) const noexcept
Inequality operator.
GPIOD_API line_bulk event_wait(const ::std::chrono::nanoseconds &timeout) const
Poll the set of lines for line events.
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 line_bulk get_lines(const ::std::vector< unsigned int > &offsets) const
Get a set of lines exposed by this chip at given offsets.
Allows to iterate over all lines owned by a GPIO chip.
GPIOD_API iterator(void)=default
Default constructor.
GPIOD_API bool operator!=(const iterator &rhs) const noexcept
Check if this operator doesn't point to the same element.
GPIOD_API const line & operator*(void) const
Dereference current element.
GPIOD_API bool operator!(void) const noexcept
Check if this object doesn't hold any lines.
GPIOD_API int get_value(void) const
Read the line value.
GPIOD_API bool is_open_drain(void) const
Check if this line represents an open-drain GPIO.
GPIOD_API ~iterator(void)=default
Destructor.
Line's active state is low.
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.
Request for reading line values.
Helper structure for storing a set of GPIO line objects.
static GPIOD_API const ::std::bitset< 32 > FLAG_ACTIVE_LOW
Set the active state to 'low' (high is the default).
Request for driving the GPIO lines.
GPIOD_API chip(void)=default
Default constructor.
::std::string consumer
Consumer name to pass to the request.
GPIOD_API bool operator==(const iterator &rhs) const noexcept
Check if this operator points to the same element.
GPIOD_API const chip & get_chip(void) const
Get the reference to the parent chip.
GPIOD_API iterator & operator++(void)
Advance the iterator by one element.
Listen for falling edge events.
GPIOD_API const line * operator->(void) const
Member access operator.
GPIOD_API bool empty(void) const noexcept
Check if this line_bulk doesn't hold any lines.
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.
GPIOD_API bool operator==(const line &rhs) const noexcept
Check if two line objects reference the same GPIO line.
line source
Line object referencing the GPIO line on which the event occurred.
Open based on the best guess what the supplied string is.
GPIOD_API line_bulk & operator=(const line_bulk &other)=default
Assignment operator.
GPIOD_API line find_line(const ::std::string &name)
Find a GPIO line by name.
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.
GPIOD_API ~chip(void)=default
Destructor.
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.
GPIOD_API void request(const line_request &config, int default_val=0) const
Request this line.
GPIOD_API int active_state(void) const noexcept
Get current active state of this line.
int event_type
Type of the event that occurred.
GPIOD_API void reset(void)
Reset the state of this object.
GPIOD_API line_bulk(void)=default
Default constructor.
Describes a single GPIO line event.
GPIOD_API unsigned int size(void) const noexcept
Get the number of lines currently held by this object.
Request for values, don't change the direction.
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 chip & operator=(const chip &other)=default
Assignment operator.