#include namespace attn { /** * @brief Attention handler application main() */ int attnDaemon(Config* i_config) { int rc = 0; // assume success gpiod_line* line; // gpio line to monitor boost::asio::io_context io; // async io monitoring service // GPIO line configuration (falling edge, active low) struct gpiod_line_request_config config { "attention", GPIOD_LINE_REQUEST_EVENT_FALLING_EDGE, 0 }; // get handle to attention GPIO line line = gpiod_line_find("checkstop"); if (nullptr == line) { rc = 1; // error } else { // Creating a vector of one gpio to monitor std::vector> gpios; gpios.push_back( std::make_unique(line, config, io, i_config)); io.run(); // start GPIO monitor // done with line, manually close chip (per gpiod api comments) gpiod_line_close_chip(line); } return rc; } } // namespace attn