]> vault307.fbx.one Git - micorpython_ir.git/blobdiff - ir_rx/__init__.py
Merge pull request #20 from cyrilchristin/samsumg-ir_tx-addr-patch
[micorpython_ir.git] / ir_rx / __init__.py
index 4b965245c326565c71ea7dfb816b48ac5222ebe1..a8ff82314f7d4cf2c30ba1df37fac656b8243fb8 100644 (file)
@@ -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()