1 #include <attn/attn_monitor.hpp> 2 3 namespace attn 4 { 5 6 /** 7 * @brief Attention handler application main() 8 */ attnDaemon(Config * i_config)9int attnDaemon(Config* i_config) 10 { 11 int rc = 0; // assume success 12 13 gpiod_line* line; // gpio line to monitor 14 15 boost::asio::io_context io; // async io monitoring service 16 17 // GPIO line configuration (falling edge, active low) 18 struct gpiod_line_request_config config{ 19 "attention", GPIOD_LINE_REQUEST_EVENT_FALLING_EDGE, 0}; 20 21 // get handle to attention GPIO line 22 line = gpiod_line_find("checkstop"); 23 24 if (nullptr == line) 25 { 26 rc = 1; // error 27 } 28 else 29 { 30 // Creating a vector of one gpio to monitor 31 std::vector<std::unique_ptr<attn::AttnMonitor>> gpios; 32 gpios.push_back( 33 std::make_unique<attn::AttnMonitor>(line, config, io, i_config)); 34 35 io.run(); // start GPIO monitor 36 37 // done with line, manually close chip (per gpiod api comments) 38 gpiod_line_close_chip(line); 39 } 40 41 return rc; 42 } 43 44 } // namespace attn 45