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