X-Git-Url: https://vault307.fbx.one/gitweb/micorpython_ir.git/blobdiff_plain/3b6cfaf15ad930c34b0d7f87c6a841ea651ccccb..a66e410610702dddef5632aaab1def42ce54db17:/ir_rx/__init__.py diff --git a/ir_rx/__init__.py b/ir_rx/__init__.py index 4b96524..a8ff823 100644 --- a/ir_rx/__init__.py +++ b/ir_rx/__init__.py @@ -2,9 +2,8 @@ # IR_RX abstract base class for IR receivers. # Author: Peter Hinch -# Copyright Peter Hinch 2020 Released under the MIT license +# Copyright Peter Hinch 2020-2021 Released under the MIT license -from sys import platform from machine import Timer, Pin from array import array from utime import ticks_us @@ -32,6 +31,7 @@ class IR_RX(): BADADDR = -7 def __init__(self, pin, nedges, tblock, callback, *args): # Optional args for callback + self._pin = pin self._nedges = nedges self._tblock = tblock self.callback = callback @@ -40,11 +40,7 @@ class IR_RX(): self.verbose = False self._times = array('i', (0 for _ in range(nedges + 1))) # +1 for overrun - if platform == 'esp32' or platform == 'esp32_LoBo': # ESP32 Doesn't support hard IRQ - ei = pin.irq(handler = self._cb_pin, trigger = (Pin.IRQ_FALLING | Pin.IRQ_RISING)) - else: - ei = pin.irq(handler = self._cb_pin, trigger = (Pin.IRQ_FALLING | Pin.IRQ_RISING), hard = True) - self._eint = ei # Keep reference?? + pin.irq(handler = self._cb_pin, trigger = (Pin.IRQ_FALLING | Pin.IRQ_RISING)) self.edge = 0 self.tim = Timer(-1) # Sofware timer self.cb = self.decode @@ -68,3 +64,7 @@ class IR_RX(): def error_function(self, func): self._errf = func + + def close(self): + self._pin.irq(handler = None) + self.tim.deinit()