From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> Provide a wrapper around gpiod_line_request_get_chip_path() for C++ bindings and update the tests. Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> --- bindings/cxx/gpiodcxx/line-request.hpp | 7 +++++++ bindings/cxx/line-request.cpp | 10 +++++++++- bindings/cxx/tests/tests-line-request.cpp | 6 ++++-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/bindings/cxx/gpiodcxx/line-request.hpp b/bindings/cxx/gpiodcxx/line-request.hpp index c1e1520..dd8b5b9 100644 --- a/bindings/cxx/gpiodcxx/line-request.hpp +++ b/bindings/cxx/gpiodcxx/line-request.hpp @@ -14,6 +14,7 @@ #include <chrono> #include <cstddef> +#include <filesystem> #include <iostream> #include <memory> @@ -75,6 +76,12 @@ public: */ void release(); + /** + * @brief Get the path of the chip this request was made on. + * @return Path to the GPIO chip device. + */ + ::std::filesystem::path chip_path() const; + /** * @brief Get the number of requested lines. * @return Number of lines in this request. diff --git a/bindings/cxx/line-request.cpp b/bindings/cxx/line-request.cpp index b0723c3..33e9d6e 100644 --- a/bindings/cxx/line-request.cpp +++ b/bindings/cxx/line-request.cpp @@ -63,6 +63,13 @@ GPIOD_CXX_API void line_request::release() this->_m_priv->request.reset(); } +GPIOD_CXX_API ::std::filesystem::path line_request::chip_path() const +{ + this->_m_priv->throw_if_released(); + + return ::gpiod_line_request_get_chip_path(this->_m_priv->request.get()); +} + GPIOD_CXX_API ::std::size_t line_request::num_lines() const { this->_m_priv->throw_if_released(); @@ -222,7 +229,8 @@ GPIOD_CXX_API ::std::ostream& operator<<(::std::ostream& out, const line_request if (!request) out << "gpiod::line_request(released)"; else - out << "gpiod::line_request(num_lines=" << request.num_lines() << + out << "gpiod::line_request(chip_path=\"" << request.chip_path() << + "\", num_lines=" << request.num_lines() << ", line_offsets=" << request.offsets() << ", fd=" << request.fd() << ")"; diff --git a/bindings/cxx/tests/tests-line-request.cpp b/bindings/cxx/tests/tests-line-request.cpp index d1a56ae..914a60a 100644 --- a/bindings/cxx/tests/tests-line-request.cpp +++ b/bindings/cxx/tests/tests-line-request.cpp @@ -468,14 +468,16 @@ TEST_CASE("line_request stream insertion operator works", "[line-request]") .set_num_lines(4) .build(); - auto request = ::gpiod::chip(sim.dev_path()) + auto chip = ::gpiod::chip(sim.dev_path()); + auto request = chip .prepare_request() .add_line_settings({ 3, 1, 0, 2}, ::gpiod::line_settings()) .do_request(); ::std::stringstream buf, expected; - expected << "gpiod::line_request(num_lines=4, line_offsets=gpiod::offsets(3, 1, 0, 2), fd=" << + expected << "gpiod::line_request(chip_path=\"" << chip.path() << + "\", num_lines=4, line_offsets=gpiod::offsets(3, 1, 0, 2), fd=" << request.fd() << ")"; SECTION("active request") -- 2.39.2