From 81185b610ef792f1adefa0156ab97bfd043c3fad Mon Sep 17 00:00:00 2001 From: M463 <73465148+M463@users.noreply.github.com> Date: Wed, 17 Jan 2024 11:46:27 +0100 Subject: [PATCH] Implemented distinction between listeners to call via CLK GPIO pin ID Implemented distinction between listeners to call via CLK GPIO pin ID of the RotaryEncoder class. --- micropython_rotary_encoder/rotary_encoder.py | 36 +++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/micropython_rotary_encoder/rotary_encoder.py b/micropython_rotary_encoder/rotary_encoder.py index db2f3d9..a858642 100644 --- a/micropython_rotary_encoder/rotary_encoder.py +++ b/micropython_rotary_encoder/rotary_encoder.py @@ -98,11 +98,11 @@ def on(self, event: int, callback: callable): if event not in self._listeners: self._listeners[event] = [] - self._listeners[event].append(callback) + self._listeners[event].append((callback, self.pin_clk)) def off(self, event: int, callback: callable): if event in self._listeners: - self._listeners[event].remove(callback) + self._listeners[event].remove((callback, self.pin_clk)) def off_all(self, event: int, callback: callable = None): if event in self._listeners: @@ -110,7 +110,7 @@ def off_all(self, event: int, callback: callable = None): self._listeners[event] = [] else: while callback in self._listeners[event]: - self._listeners[event].remove(callback) + self._listeners[event].remove((callback, self.pin_clk)) def _sw_irq_handler(self, pin): timestamp = utime.ticks_ms() @@ -275,19 +275,21 @@ def __call_listeners(self): if __l_e in __list: for __l in __list[__l_e]: - try: - if __l_e == __m_c_e: - __l(__sw_c) - else: - __l() - except Exception as e: - print(f"RotaryEncoder callback error. Event: {__l_e}, Listener: {__l}, Error: {e}") + if __l[1] == self.pin_clk: + try: + if __l_e == __m_c_e: + __l[0](__sw_c) + else: + __l[0]() + except Exception as e: + print(f"RotaryEncoder callback error. Event: {__l_e}, Listener: {__l}, Error: {e}") if __e_e in __list: for __l in __list[__e_e]: - try: - if __l_e == __m_c_e: - __l(__l_e, __sw_c) - else: - __l(__l_e, 0) - except Exception as e: - print(f"RotaryEncoder callback error. Event: {__e_e}, Listener: {__l}, Error: {e}") + if __l[1] == self.pin_clk: + try: + if __l_e == __m_c_e: + __l[0](__l_e, __sw_c) + else: + __l[0](__l_e, 0) + except Exception as e: + print(f"RotaryEncoder callback error. Event: {__e_e}, Listener: {__l}, Error: {e}")