# 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
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
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
def error_function(self, func):
self._errf = func
+
+ def close(self):
+ self._pin.irq(handler = None)
+ self.tim.deinit()