libgpiod 1.6.3
gpiod.hpp
Go to the documentation of this file.
1/* SPDX-License-Identifier: LGPL-2.1-or-later */
2/*
3 * This file is part of libgpiod.
4 *
5 * Copyright (C) 2017-2018 Bartosz Golaszewski <bartekgola@gmail.com>
6 */
7
8#ifndef __LIBGPIOD_GPIOD_CXX_HPP__
9#define __LIBGPIOD_GPIOD_CXX_HPP__
10
11#include <bitset>
12#include <chrono>
13#include <gpiod.h>
14#include <memory>
15#include <string>
16#include <vector>
17
18namespace gpiod {
19
20class line;
21class line_bulk;
22class line_iter;
23class chip_iter;
24struct line_event;
25
42class chip
43{
44public:
45
49 GPIOD_API chip(void) = default;
50
56 GPIOD_API chip(const ::std::string& device, int how = OPEN_LOOKUP);
57
62 GPIOD_API chip(const chip& other) = default;
63
68 GPIOD_API chip(chip&& other) = default;
69
75 GPIOD_API chip& operator=(const chip& other) = default;
76
82 GPIOD_API chip& operator=(chip&& other) = default;
83
87 GPIOD_API ~chip(void) = default;
88
97 GPIOD_API void open(const ::std::string &device, int how = OPEN_LOOKUP);
98
102 GPIOD_API void reset(void) noexcept;
103
108 GPIOD_API ::std::string name(void) const;
109
114 GPIOD_API ::std::string label(void) const;
115
120 GPIOD_API unsigned int num_lines(void) const;
121
127 GPIOD_API line get_line(unsigned int offset) const;
128
134 GPIOD_API line find_line(const ::std::string& name) const;
135
141 GPIOD_API line_bulk get_lines(const ::std::vector<unsigned int>& offsets) const;
142
148
154 GPIOD_API line_bulk find_lines(const ::std::vector<::std::string>& names) const;
155
161 GPIOD_API bool operator==(const chip& rhs) const noexcept;
162
168 GPIOD_API bool operator!=(const chip& rhs) const noexcept;
169
174 GPIOD_API explicit operator bool(void) const noexcept;
175
180 GPIOD_API bool operator!(void) const noexcept;
181
186 enum : int {
187 OPEN_LOOKUP = 1,
197 };
198
199private:
200
201 chip(::gpiod_chip* chip);
202
203 void throw_if_noref(void) const;
204
205 ::std::shared_ptr<::gpiod_chip> _m_chip;
206
207 friend chip_iter;
208 friend line_iter;
209};
210
215{
219 enum : int {
220 DIRECTION_AS_IS = 1,
232 };
233
234 GPIOD_API static const ::std::bitset<32> FLAG_ACTIVE_LOW;
236 GPIOD_API static const ::std::bitset<32> FLAG_OPEN_SOURCE;
238 GPIOD_API static const ::std::bitset<32> FLAG_OPEN_DRAIN;
240 GPIOD_API static const ::std::bitset<32> FLAG_BIAS_DISABLE;
242 GPIOD_API static const ::std::bitset<32> FLAG_BIAS_PULL_DOWN;
244 GPIOD_API static const ::std::bitset<32> FLAG_BIAS_PULL_UP;
247 ::std::string consumer;
251 ::std::bitset<32> flags;
253};
254
262class line
263{
264public:
265
270
275 GPIOD_API line(const line& other) = default;
276
281 GPIOD_API line(line&& other) = default;
282
288 GPIOD_API line& operator=(const line& other) = default;
289
295 GPIOD_API line& operator=(line&& other) = default;
296
300 GPIOD_API ~line(void) = default;
301
306 GPIOD_API unsigned int offset(void) const;
307
312 GPIOD_API ::std::string name(void) const;
313
319 GPIOD_API ::std::string consumer(void) const;
320
325 GPIOD_API int direction(void) const;
326
331 GPIOD_API int active_state(void) const;
332
337 GPIOD_API int bias(void) const;
338
344 GPIOD_API bool is_used(void) const;
345
350 GPIOD_API bool is_open_drain(void) const;
351
356 GPIOD_API bool is_open_source(void) const;
357
363 GPIOD_API void request(const line_request& config, int default_val = 0) const;
364
368 GPIOD_API void release(void) const;
369
374 GPIOD_API bool is_requested(void) const;
375
380 GPIOD_API int get_value(void) const;
381
386 GPIOD_API void set_value(int val) const;
387
394 GPIOD_API void set_config(int direction, ::std::bitset<32> flags,
395 int value = 0) const;
396
401 GPIOD_API void set_flags(::std::bitset<32> flags) const;
402
407
412 GPIOD_API void set_direction_output(int value = 0) const;
413
420 GPIOD_API bool event_wait(const ::std::chrono::nanoseconds& timeout) const;
421
427
432 GPIOD_API ::std::vector<line_event> event_read_multiple(void) const;
433
438 GPIOD_API int event_get_fd(void) const;
439
444 GPIOD_API const chip& get_chip(void) const;
445
449 GPIOD_API void update(void) const;
450
458 GPIOD_API void reset(void);
459
465 GPIOD_API bool operator==(const line& rhs) const noexcept;
466
472 GPIOD_API bool operator!=(const line& rhs) const noexcept;
473
478 GPIOD_API explicit operator bool(void) const noexcept;
479
485 GPIOD_API bool operator!(void) const noexcept;
486
490 enum : int {
491 DIRECTION_INPUT = 1,
495 };
496
500 enum : int {
501 ACTIVE_LOW = 1,
505 };
506
510 enum : int {
511 BIAS_AS_IS = 1,
519 };
520
521private:
522
523 line(::gpiod_line* line, const chip& owner);
524
525 void throw_if_null(void) const;
526 line_event make_line_event(const ::gpiod_line_event& event) const noexcept;
527
528 ::gpiod_line* _m_line;
529 chip _m_chip;
530
531 friend chip;
532 friend line_bulk;
533 friend line_iter;
534};
535
541GPIOD_API line find_line(const ::std::string& name);
542
547{
551 enum : int {
552 RISING_EDGE = 1,
556 };
557
558 ::std::chrono::nanoseconds timestamp;
564};
565
573{
574public:
575
579 GPIOD_API line_bulk(void) = default;
580
586 GPIOD_API line_bulk(const ::std::vector<line>& lines);
587
592 GPIOD_API line_bulk(const line_bulk& other) = default;
593
598 GPIOD_API line_bulk(line_bulk&& other) = default;
599
605 GPIOD_API line_bulk& operator=(const line_bulk& other) = default;
606
613
617 GPIOD_API ~line_bulk(void) = default;
618
625 GPIOD_API void append(const line& new_line);
626
632 GPIOD_API line& get(unsigned int offset);
633
640 GPIOD_API line& operator[](unsigned int offset);
641
646 GPIOD_API unsigned int size(void) const noexcept;
647
652 GPIOD_API bool empty(void) const noexcept;
653
657 GPIOD_API void clear(void);
658
665 GPIOD_API void request(const line_request& config,
666 const ::std::vector<int> default_vals = ::std::vector<int>()) const;
667
671 GPIOD_API void release(void) const;
672
678 GPIOD_API ::std::vector<int> get_values(void) const;
679
685 GPIOD_API void set_values(const ::std::vector<int>& values) const;
686
695 GPIOD_API void set_config(int direction, ::std::bitset<32> flags,
696 const ::std::vector<int> values = ::std::vector<int>()) const;
697
702 GPIOD_API void set_flags(::std::bitset<32> flags) const;
703
708
714 GPIOD_API void set_direction_output(const ::std::vector<int>& values) const;
715
723 GPIOD_API line_bulk event_wait(const ::std::chrono::nanoseconds& timeout) const;
724
729 GPIOD_API explicit operator bool(void) const noexcept;
730
735 GPIOD_API bool operator!(void) const noexcept;
736
740 GPIOD_API static const unsigned int MAX_LINES;
741
746 {
747 public:
748
752 GPIOD_API iterator(void) = default;
753
758 GPIOD_API iterator(const iterator& other) = default;
759
764 GPIOD_API iterator(iterator&& other) = default;
765
771 GPIOD_API iterator& operator=(const iterator& other) = default;
772
779
783 GPIOD_API ~iterator(void) = default;
784
790
795 GPIOD_API const line& operator*(void) const;
796
801 GPIOD_API const line* operator->(void) const;
802
809 GPIOD_API bool operator==(const iterator& rhs) const noexcept;
810
817 GPIOD_API bool operator!=(const iterator& rhs) const noexcept;
818
819 private:
820
821 iterator(const ::std::vector<line>::iterator& it);
822
823 ::std::vector<line>::iterator _m_iter;
824
825 friend line_bulk;
826 };
827
832 GPIOD_API iterator begin(void) noexcept;
833
838 GPIOD_API iterator end(void) noexcept;
839
840private:
841
842 void throw_if_empty(void) const;
843 void to_line_bulk(::gpiod_line_bulk* bulk) const;
844
845 ::std::vector<line> _m_bulk;
846};
847
855
862
868GPIOD_API chip_iter end(const chip_iter& iter) noexcept;
869
874{
875public:
876
880 GPIOD_API chip_iter(void) = default;
881
886 GPIOD_API chip_iter(const chip_iter& other) = default;
887
892 GPIOD_API chip_iter(chip_iter&& other) = default;
893
899 GPIOD_API chip_iter& operator=(const chip_iter& other) = default;
900
907
911 GPIOD_API ~chip_iter(void) = default;
912
918
923 GPIOD_API const chip& operator*(void) const;
924
929 GPIOD_API const chip* operator->(void) const;
930
937 GPIOD_API bool operator==(const chip_iter& rhs) const noexcept;
938
945 GPIOD_API bool operator!=(const chip_iter& rhs) const noexcept;
946
947private:
948
949 chip_iter(::gpiod_chip_iter* iter);
950
951 ::std::shared_ptr<::gpiod_chip_iter> _m_iter;
952 chip _m_current;
953
955};
956
963
969GPIOD_API line_iter end(const line_iter& iter) noexcept;
970
975{
976public:
977
981 GPIOD_API line_iter(void) = default;
982
987 GPIOD_API line_iter(const chip& owner);
988
993 GPIOD_API line_iter(const line_iter& other) = default;
994
999 GPIOD_API line_iter(line_iter&& other) = default;
1000
1006 GPIOD_API line_iter& operator=(const line_iter& other) = default;
1007
1014
1018 GPIOD_API ~line_iter(void) = default;
1019
1025
1030 GPIOD_API const line& operator*(void) const;
1031
1036 GPIOD_API const line* operator->(void) const;
1037
1044 GPIOD_API bool operator==(const line_iter& rhs) const noexcept;
1045
1052 GPIOD_API bool operator!=(const line_iter& rhs) const noexcept;
1053
1054private:
1055
1056 ::std::shared_ptr<::gpiod_line_iter> _m_iter;
1057 line _m_current;
1058};
1059
1064} /* namespace gpiod */
1065
1066#endif /* __LIBGPIOD_GPIOD_CXX_HPP__ */
Allows to iterate over all GPIO chips present on the system.
Definition: gpiod.hpp:874
GPIOD_API chip_iter(const chip_iter &other)=default
Copy constructor.
GPIOD_API chip_iter & operator=(const chip_iter &other)=default
Assignment operator.
GPIOD_API bool operator==(const chip_iter &rhs) const noexcept
Check if this operator points to the same element.
GPIOD_API chip_iter(chip_iter &&other)=default
Move constructor.
GPIOD_API ~chip_iter(void)=default
Destructor.
GPIOD_API const chip * operator->(void) const
Member access operator.
friend chip_iter make_chip_iter(void)
Create a new chip_iter.
GPIOD_API chip_iter(void)=default
Default constructor.
GPIOD_API bool operator!=(const chip_iter &rhs) const noexcept
Check if this operator doesn't point to the same element.
GPIOD_API chip_iter & operator=(chip_iter &&other)=default
Move assignment operator.
GPIOD_API chip_iter & operator++(void)
Advance the iterator by one element.
GPIOD_API const chip & operator*(void) const
Dereference current element.
Represents a GPIO chip.
Definition: gpiod.hpp:43
GPIOD_API::std::string name(void) const
Return the name of the chip held by this object.
GPIOD_API chip & operator=(chip &&other)=default
Move assignment operator.
@ OPEN_BY_NUMBER
Assume the string is the number of the GPIO chip.
Definition: gpiod.hpp:195
@ OPEN_BY_NAME
Assume the string is the name of the chip.
Definition: gpiod.hpp:191
@ OPEN_BY_LABEL
Assume the string is the label of the GPIO chip.
Definition: gpiod.hpp:193
@ OPEN_BY_PATH
Assume the string is a path to the GPIO chardev.
Definition: gpiod.hpp:189
@ OPEN_LOOKUP
Open based on the best guess what the supplied string is.
Definition: gpiod.hpp:187
GPIOD_API unsigned int num_lines(void) const
Return the number of lines exposed by this chip.
GPIOD_API line find_line(const ::std::string &name) const
Get the line exposed by this chip by name.
GPIOD_API chip(void)=default
Default constructor.
GPIOD_API void reset(void) noexcept
Reset the internal smart pointer owned by this object.
GPIOD_API chip(chip &&other)=default
Move constructor.
GPIOD_API::std::string label(void) const
Return the label of the chip held by this object.
GPIOD_API chip(const ::std::string &device, int how=OPEN_LOOKUP)
Constructor.
GPIOD_API line_bulk get_all_lines(void) const
Get all lines exposed by this chip.
GPIOD_API bool operator!=(const chip &rhs) const noexcept
Inequality operator.
GPIOD_API ~chip(void)=default
Destructor.
GPIOD_API chip(const chip &other)=default
Copy constructor.
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 void open(const ::std::string &device, int how=OPEN_LOOKUP)
Open a GPIO chip.
GPIOD_API bool operator!(void) const noexcept
Check if this object doesn't hold a reference to a GPIO chip.
GPIOD_API line get_line(unsigned int offset) const
Get the line exposed by this chip at given offset.
GPIOD_API bool operator==(const chip &rhs) const noexcept
Equality operator.
GPIOD_API chip & operator=(const chip &other)=default
Assignment operator.
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.
Iterator for iterating over lines held by line_bulk.
Definition: gpiod.hpp:746
GPIOD_API bool operator!=(const iterator &rhs) const noexcept
Check if this operator doesn't point to the same element.
GPIOD_API iterator(iterator &&other)=default
Move constructor.
GPIOD_API iterator & operator++(void)
Advance the iterator by one element.
GPIOD_API iterator(const iterator &other)=default
Copy constructor.
GPIOD_API iterator & operator=(iterator &&other)=default
Move assignment operator.
GPIOD_API iterator(void)=default
Default constructor.
GPIOD_API bool operator==(const iterator &rhs) const noexcept
Check if this operator points to the same element.
GPIOD_API const line * operator->(void) const
Member access operator.
GPIOD_API iterator & operator=(const iterator &other)=default
Assignment operator.
GPIOD_API ~iterator(void)=default
Destructor.
GPIOD_API const line & operator*(void) const
Dereference current element.
Represents a set of GPIO lines.
Definition: gpiod.hpp:573
GPIOD_API unsigned int size(void) const noexcept
Get the number of lines currently held by this object.
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 void set_direction_input() const
Change the direction all lines held by this object to input.
GPIOD_API void set_flags(::std::bitset< 32 > flags) const
Set configuration flags of all lines held by 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 ~line_bulk(void)=default
Destructor.
GPIOD_API void release(void) const
Release all lines held by this object.
GPIOD_API bool empty(void) const noexcept
Check if this line_bulk doesn't hold any lines.
GPIOD_API iterator begin(void) noexcept
Returns an iterator to the first line.
GPIOD_API line_bulk & operator=(const line_bulk &other)=default
Assignment operator.
GPIOD_API void append(const line &new_line)
Add a line to this line_bulk object.
GPIOD_API line & get(unsigned int offset)
Get the line at given offset.
GPIOD_API line_bulk & operator=(line_bulk &&other)=default
Move assignment operator.
GPIOD_API ::std::vector< int > get_values(void) const
Read values from all lines held by this object.
GPIOD_API iterator end(void) noexcept
Returns an iterator to the element following the last line.
GPIOD_API bool operator!(void) const noexcept
Check if this object doesn't hold any lines.
GPIOD_API line_bulk(line_bulk &&other)=default
Move constructor.
GPIOD_API void set_values(const ::std::vector< int > &values) const
Set values of all lines held by this object.
GPIOD_API void clear(void)
Remove all lines from this object.
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(const ::std::vector< line > &lines)
Construct a line_bulk from a vector of lines.
GPIOD_API line & operator[](unsigned int offset)
Get the line at given offset without bounds checking.
static GPIOD_API const unsigned int MAX_LINES
Max number of lines that this object can hold.
Definition: gpiod.hpp:740
GPIOD_API line_bulk(void)=default
Default constructor.
GPIOD_API line_bulk(const line_bulk &other)=default
Copy constructor.
GPIOD_API line_bulk event_wait(const ::std::chrono::nanoseconds &timeout) const
Poll the set of lines for line events.
Allows to iterate over all lines owned by a GPIO chip.
Definition: gpiod.hpp:975
GPIOD_API bool operator==(const line_iter &rhs) const noexcept
Check if this operator points to the same element.
GPIOD_API line_iter(const chip &owner)
Constructor.
GPIOD_API const line & operator*(void) const
Dereference current element.
GPIOD_API line_iter(void)=default
Default constructor.
GPIOD_API line_iter(const line_iter &other)=default
Copy constructor.
GPIOD_API const line * operator->(void) const
Member access operator.
GPIOD_API line_iter & operator++(void)
Advance the iterator by one element.
GPIOD_API line_iter & operator=(const line_iter &other)=default
Assignment operator.
GPIOD_API line_iter & operator=(line_iter &&other)=default
Move assignment operator.
GPIOD_API line_iter(line_iter &&other)=default
Move constructor.
GPIOD_API ~line_iter(void)=default
Destructor.
GPIOD_API bool operator!=(const line_iter &rhs) const noexcept
Check if this operator doesn't point to the same element.
Represents a single GPIO line.
Definition: gpiod.hpp:263
GPIOD_API int direction(void) const
Get current direction of this line.
@ DIRECTION_OUTPUT
Line's direction setting is output.
Definition: gpiod.hpp:493
@ DIRECTION_INPUT
Line's direction setting is input.
Definition: gpiod.hpp:491
@ BIAS_PULL_UP
Line's internal pull-up bias is enabled.
Definition: gpiod.hpp:515
@ BIAS_PULL_DOWN
Line's internal pull-down bias is enabled.
Definition: gpiod.hpp:517
@ BIAS_DISABLE
Line's internal bias is disabled.
Definition: gpiod.hpp:513
@ BIAS_AS_IS
Line's bias state is unknown.
Definition: gpiod.hpp:511
GPIOD_API bool is_open_source(void) const
Check if this line represents an open-source GPIO.
GPIOD_API void set_flags(::std::bitset< 32 > flags) const
Set configuration flags of this line.
GPIOD_API::std::string consumer(void) const
Get the consumer of this line (if any).
GPIOD_API line(line &&other)=default
Move constructor.
GPIOD_API::std::string name(void) const
Get the name of this line (if any).
GPIOD_API bool operator!=(const line &rhs) const noexcept
Check if two line objects reference different GPIO lines.
GPIOD_API void set_config(int direction, ::std::bitset< 32 > flags, int value=0) const
Set configuration of this line.
GPIOD_API void reset(void)
Reset the state of this object.
GPIOD_API ::std::vector< line_event > event_read_multiple(void) const
Read multiple line events.
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 int get_value(void) const
Read the line value.
GPIOD_API const chip & get_chip(void) const
Get the reference to the parent chip.
GPIOD_API bool is_requested(void) const
Check if this user has ownership of this line.
GPIOD_API line_event event_read(void) const
Read a line event.
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 bool event_wait(const ::std::chrono::nanoseconds &timeout) const
Wait for an event on this line.
GPIOD_API unsigned int offset(void) const
Get the offset of this line.
GPIOD_API int bias(void) const
Get current bias of this line.
GPIOD_API void release(void) const
Release the line if it was previously requested.
GPIOD_API void request(const line_request &config, int default_val=0) const
Request this line.
GPIOD_API void update(void) const
Re-read the line info from the kernel.
GPIOD_API bool is_used(void) const
Check if this line is used by the kernel or other user space process.
GPIOD_API void set_direction_input() const
Change the direction this line to input.
GPIOD_API line & operator=(line &&other)=default
Move assignment operator.
@ ACTIVE_LOW
Line's active state is low.
Definition: gpiod.hpp:501
@ ACTIVE_HIGH
Line's active state is high.
Definition: gpiod.hpp:503
GPIOD_API line(const line &other)=default
Copy constructor.
GPIOD_API line & operator=(const line &other)=default
Assignment operator.
GPIOD_API void set_direction_output(int value=0) const
Change the direction this lines to output.
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 bool operator!(void) const noexcept
Check if this object doesn't reference any GPIO line.
GPIOD_API ~line(void)=default
Destructor.
#define GPIOD_API
Makes symbol visible.
Definition: gpiod.h:62
GPIOD_API line find_line(const ::std::string &name)
Find a GPIO line by name.
GPIOD_API chip_iter make_chip_iter(void)
Create a new chip_iter.
GPIOD_API line_iter begin(line_iter iter) noexcept
Support for range-based loops for line iterators.
GPIOD_API line_iter end(const line_iter &iter) noexcept
Support for range-based loops for line iterators.
Describes a single GPIO line event.
Definition: gpiod.hpp:547
int event_type
Type of the event that occurred.
Definition: gpiod.hpp:560
::std::chrono::nanoseconds timestamp
Best estimate of time of event occurrence in nanoseconds.
Definition: gpiod.hpp:558
@ RISING_EDGE
Rising edge event.
Definition: gpiod.hpp:552
@ FALLING_EDGE
Falling edge event.
Definition: gpiod.hpp:554
line source
Line object referencing the GPIO line on which the event occurred.
Definition: gpiod.hpp:562
Stores the configuration for line requests.
Definition: gpiod.hpp:215
static GPIOD_API const ::std::bitset< 32 > FLAG_BIAS_DISABLE
The line has neither pull-up nor pull-down resistor enabled.
Definition: gpiod.hpp:240
static GPIOD_API const ::std::bitset< 32 > FLAG_OPEN_DRAIN
The line is an open-drain port.
Definition: gpiod.hpp:238
::std::bitset< 32 > flags
Additional request flags.
Definition: gpiod.hpp:251
int request_type
Type of the request.
Definition: gpiod.hpp:249
::std::string consumer
Consumer name to pass to the request.
Definition: gpiod.hpp:247
static GPIOD_API const ::std::bitset< 32 > FLAG_BIAS_PULL_DOWN
The line has a configurable pull-down resistor enabled.
Definition: gpiod.hpp:242
static GPIOD_API const ::std::bitset< 32 > FLAG_BIAS_PULL_UP
The line has a configurable pull-up resistor enabled.
Definition: gpiod.hpp:244
@ EVENT_RISING_EDGE
Listen for rising edge events.
Definition: gpiod.hpp:228
@ EVENT_FALLING_EDGE
Listen for falling edge events.
Definition: gpiod.hpp:226
@ DIRECTION_OUTPUT
Request for driving the GPIO lines.
Definition: gpiod.hpp:224
@ DIRECTION_AS_IS
Request for values, don't change the direction.
Definition: gpiod.hpp:220
@ EVENT_BOTH_EDGES
Listen for all types of events.
Definition: gpiod.hpp:230
@ DIRECTION_INPUT
Request for reading line values.
Definition: gpiod.hpp:222
static GPIOD_API const ::std::bitset< 32 > FLAG_OPEN_SOURCE
The line is an open-source port.
Definition: gpiod.hpp:236
static GPIOD_API const ::std::bitset< 32 > FLAG_ACTIVE_LOW
Set the active state to 'low' (high is the default).
Definition: gpiod.hpp:234
Helper structure for storing a set of GPIO line objects.
Definition: gpiod.h:722