libgpiod
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 
18 namespace gpiod {
19 
20 class chip;
21 class line_config;
22 class line_request;
23 class request_config;
24 
28 class request_builder final
29 {
30 public:
31 
32  request_builder(const request_builder& other) = delete;
33 
38  request_builder(request_builder&& other) noexcept;
39 
41 
42  request_builder& operator=(const request_builder& other) = delete;
43 
49  request_builder& operator=(request_builder&& other) noexcept;
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 
102 
111 
119 
125 
126 private:
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__ */
Definition: chip-info.hpp:18
const request_config & get_request_config() const noexcept
Get the current request config.
friend::std::ostream & operator<<(::std::ostream &out, const request_builder &builder)
Stream insertion operator for GPIO request builder objects.
const line_config & get_line_config() const noexcept
Get the current line config.
::std::ostream & operator<<(::std::ostream &out, const chip_info &chip)
Stream insertion operator for GPIO chip objects.
Stores the context of a set of requested GPIO lines.
Definition: line-request.hpp:32
request_builder & set_request_config(request_config &req_cfg)
Set the request config for the request.
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.
::std::vector< value > values
Vector of line values.
Definition: line.hpp:168
Intermediate object storing the configuration for a line request.
Definition: request-builder.hpp:28
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. ...
Contains a set of line config options used in line requests and reconfiguration.
Definition: line-config.hpp:28
Represents a GPIO chip.
Definition: chip.hpp:36
line_request do_request()
Make the line request.
request_builder & set_line_config(line_config &line_cfg)
Set the line config for this request.
Stores GPIO line settings.
Definition: line-settings.hpp:27
request_builder & set_consumer(const ::std::string &consumer) noexcept
Set consumer in the request config stored by this object.
request_builder(const request_builder &other)=delete
Stores a set of options passed to the kernel when making a line request.
Definition: request-config.hpp:30
::std::vector< offset > offsets
Vector of line offsets.
Definition: line.hpp:163
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.
Wrapper around unsigned int for representing line offsets.
Definition: line.hpp:29
request_builder & operator=(const request_builder &other)=delete