All of lore.kernel.org
 help / color / mirror / Atom feed
* [libgpiod] reading multiple lines after edge event
@ 2020-06-15 19:39 Gerrit Wyen
  2020-06-16 18:11 ` Andy Shevchenko
  2020-06-17  1:57 ` Kent Gibson
  0 siblings, 2 replies; 4+ messages in thread
From: Gerrit Wyen @ 2020-06-15 19:39 UTC (permalink / raw)
  To: linux-gpio

Hi,

can someone explain the following behavior and whether it is a bug?

When reading two lines at once via get_values() in response to an edge 
event I only receive the correct value for the first line (second line 
is high during the test but always reported as low).
See example code below:

lines.request({
  “gpiotest”, ::gpiod::line_request::EVENT_BOTH_EDGES,
  0,
});

auto events = lines.event_wait(::std::chrono::seconds(10));
if (events) {
  auto values = lines.get_values();
  for (auto& it: values) {
    ::std::cout << it;
    }
  }

However reading the same lines via get_value() one by one after the 
event works correctly. Like so:

for (auto& it: lines) { ::std::cout << it.get_value(); }


Also, when reading them without waiting for the event with 
line_request::DIRECTION_INPUT  the correct values are returned by 
get_values() as well as by get_value().

This behavior was tested on multiple different devices.


thanks,

Gerrit

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-06-17 15:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-06-15 19:39 [libgpiod] reading multiple lines after edge event Gerrit Wyen
2020-06-16 18:11 ` Andy Shevchenko
2020-06-17  1:57 ` Kent Gibson
2020-06-17 15:40   ` Gerrit Wyen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.