libgpiod
Loading...
Searching...
No Matches
request-builder.hpp
Go to the documentation of this file.
1/* SPDX-License-Identifier: LGPL-2.1-or-later */
2/* SPDX-FileCopyrightText: 2022 Bartosz Golaszewski <brgl@bgdev.pl> */
3
8#ifndef __LIBGPIOD_CXX_REQUEST_BUILDER_HPP__
9#define __LIBGPIOD_CXX_REQUEST_BUILDER_HPP__
10
11#if !defined(__LIBGPIOD_GPIOD_CXX_INSIDE__)
12#error "Only gpiod.hpp can be included directly."
13#endif
14
15#include <memory>
16#include <ostream>
17
18namespace gpiod {
19
20class chip;
21class line_config;
22class line_request;
23class request_config;
24
28class request_builder final
29{
30public:
31
32 request_builder(const request_builder& other) = delete;
33
39
41
42 request_builder& operator=(const request_builder& other) = delete;
43
50
57
63 const request_config& get_request_config() const noexcept;
64
70 request_builder& set_consumer(const ::std::string& consumer) noexcept;
71
78 request_builder& set_event_buffer_size(::std::size_t event_buffer_size) noexcept;
79
86
92 const line_config& get_line_config() const noexcept;
93
101 request_builder& add_line_settings(line::offset offset, const line_settings& settings);
102
110 request_builder& add_line_settings(const line::offsets& offsets, const line_settings& settings);
111
118 request_builder& set_output_values(const line::values& values);
119
125
126private:
127
128 struct impl;
129
131
132 ::std::unique_ptr<impl> _m_priv;
133
134 friend chip;
135 friend ::std::ostream& operator<<(::std::ostream& out, const request_builder& builder);
136};
137
144::std::ostream& operator<<(::std::ostream& out, const request_builder& builder);
145
146} /* namespace gpiod */
147
148#endif /* __LIBGPIOD_CXX_REQUEST_BUILDER_HPP__ */
Represents a GPIO chip.
Definition chip.hpp:37
Contains a set of line config options used in line requests and reconfiguration.
Definition line-config.hpp:29
Stores the context of a set of requested GPIO lines.
Definition line-request.hpp:33
Stores GPIO line settings.
Definition line-settings.hpp:28
Intermediate object storing the configuration for a line request.
Definition request-builder.hpp:29
request_builder & set_event_buffer_size(::std::size_t event_buffer_size) noexcept
Set the event buffer size in the request config stored by this object.
request_builder & operator=(const request_builder &other)=delete
request_builder & set_line_config(line_config &line_cfg)
Set the line config for this request.
request_builder & operator=(request_builder &&other) noexcept
Move assignment operator.
const request_config & get_request_config() const noexcept
Get the current request config.
request_builder & add_line_settings(line::offset offset, const line_settings &settings)
Add line settings to the line config stored by this object for a single offset.
const line_config & get_line_config() const noexcept
Get the current line config.
request_builder & set_consumer(const ::std::string &consumer) noexcept
Set consumer in the request config stored by this object.
line_request do_request()
Make the line request.
request_builder(request_builder &&other) noexcept
Move constructor.
request_builder(const request_builder &other)=delete
request_builder & set_output_values(const line::values &values)
Set output values for a number of lines in the line config stored by this object.
request_builder & set_request_config(request_config &req_cfg)
Set the request config for the request.
Stores a set of options passed to the kernel when making a line request.
Definition request-config.hpp:31
Definition chip-info.hpp:18