libgpiod 2.1.2
line-info.hpp
Go to the documentation of this file.
1/* SPDX-License-Identifier: LGPL-2.1-or-later */
2/* SPDX-FileCopyrightText: 2021-2022 Bartosz Golaszewski <brgl@bgdev.pl> */
3
8#ifndef __LIBGPIOD_CXX_LINE_INFO_HPP__
9#define __LIBGPIOD_CXX_LINE_INFO_HPP__
10
11#if !defined(__LIBGPIOD_GPIOD_CXX_INSIDE__)
12#error "Only gpiod.hpp can be included directly."
13#endif
14
15#include <chrono>
16#include <iostream>
17#include <memory>
18#include <string>
19
20namespace gpiod {
21
22class chip;
23class info_event;
24
34class line_info final
35{
36public:
37
42 line_info(const line_info& other) noexcept;
43
48 line_info(line_info&& other) noexcept;
49
50 ~line_info();
51
57 line_info& operator=(const line_info& other) noexcept;
58
64 line_info& operator=(line_info&& other) noexcept;
65
70 line::offset offset() const noexcept;
71
77 ::std::string name() const noexcept;
78
87 bool used() const noexcept;
88
95 ::std::string consumer() const noexcept;
96
101 line::direction direction() const;
102
107 line::edge edge_detection() const;
108
114 line::bias bias() const;
115
121 line::drive drive() const;
122
127 bool active_low() const noexcept;
128
134 bool debounced() const noexcept;
135
141 ::std::chrono::microseconds debounce_period() const noexcept;
142
148 line::clock event_clock() const;
149
150private:
151
152 line_info();
153
154 struct impl;
155
156 ::std::shared_ptr<impl> _m_priv;
157
158 friend chip;
159 friend info_event;
160};
161
168::std::ostream& operator<<(::std::ostream& out, const line_info& info);
169
174} /* namespace gpiod */
175
176#endif /* __LIBGPIOD_CXX_LINE_INFO_HPP__ */
Represents a GPIO chip.
Definition chip.hpp:42
Immutable object containing data about a single line info event.
Wrapper around unsigned int for representing line offsets.
Definition line.hpp:35
Contains an immutable snapshot of the line's state at the time when the object of this class was inst...
Definition line-info.hpp:35
line_info(const line_info &other) noexcept
Copy constructor.
line::clock event_clock() const
Read the current event clock setting used for edge event timestamps.
bool debounced() const noexcept
Check if this line is debounced (either by hardware or by the kernel software debouncer).
line::drive drive() const
Read the GPIO line drive setting.
line_info & operator=(line_info &&other) noexcept
Move assignment operator.
line::offset offset() const noexcept
Get the hardware offset of the line.
line::direction direction() const
Read the GPIO line direction setting.
::std::chrono::microseconds debounce_period() const noexcept
Read the current debounce period in microseconds.
line::edge edge_detection() const
Read the current edge detection setting of this line.
::std::string consumer() const noexcept
Read the GPIO line consumer name.
line_info & operator=(const line_info &other) noexcept
Copy assignment operator.
::std::string name() const noexcept
Get the GPIO line name.
bool active_low() const noexcept
Check if the signal of this line is inverted.
line::bias bias() const
Read the GPIO line bias setting.
bool used() const noexcept
Check if the line is currently in use.
line_info(line_info &&other) noexcept
Move constructor.