From ddb60e5a73c0860bf4187571e0e2458a6e9a6d77 Mon Sep 17 00:00:00 2001 From: Devaev Maxim Date: Mon, 14 Sep 2020 14:23:14 +0300 Subject: [PATCH] read multiply events --- kvmd/aiogp.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/kvmd/aiogp.py b/kvmd/aiogp.py index 2f988e67..f23fc36b 100644 --- a/kvmd/aiogp.py +++ b/kvmd/aiogp.py @@ -103,12 +103,14 @@ class AioPinsReader(threading.Thread): ev_lines = lines.event_wait(1) if ev_lines: for ev_line in ev_lines: - event = ev_line.event_read() - if event.type == gpiod.LineEvent.RISING_EDGE: - value = True - elif event.type == gpiod.LineEvent.FALLING_EDGE: - value = False - else: - raise RuntimeError(f"Invalid event {event} type: {event.type}") - self.__state[event.source.offset()] = value + events = ev_line.event_read_multiply() + if events: + event = events[-1] + if event.type == gpiod.LineEvent.RISING_EDGE: + value = True + elif event.type == gpiod.LineEvent.FALLING_EDGE: + value = False + else: + raise RuntimeError(f"Invalid event {event} type: {event.type}") + self.__state[event.source.offset()] = value self.__loop.call_soon_threadsafe(self.__notifier.notify_sync)