diff --git a/pi_mqtt_gpio/modules/gpiod.py b/pi_mqtt_gpio/modules/gpiod.py index bab01dd015f5178054654346a09b579ebdab11d2..e1b92bb829d43d78a8bf7437df379f36d1af2b41 100644 --- a/pi_mqtt_gpio/modules/gpiod.py +++ b/pi_mqtt_gpio/modules/gpiod.py @@ -66,28 +66,6 @@ class GPIO(GenericGPIO): pin.request(config) self.pins[offset] = pin - def setup_interrupt(self, handle, pin, edge, callback, bouncetime=100): - """ - install interrupt callback function - handle: is returned in the callback function as identification - pin: gpio to watch for interrupts - edge: triggering edge: RISING, FALLING or BOTH - callback: the callback function to be called, when interrupt occurs - bouncetime: minimum time between two interrupts - """ - - config = self.io.line_request() - config.consumer = 'pi-mqtt-gpio' - config.request_type = INTERRUPT[edge] - - t = GpioThread(chip=self.chip, offset=pin, config=config, - callback=callback, bouncetime=bouncetime) - t.start() - - self.watchers[offset] = t - self.GPIO_INTERRUPT_CALLBACK_LOOKUP[offset] = {"handle": t.handle, - "callback": callback} - def set_pin(self, pin, value): offset = pin self.pins[offset].set_value(value) @@ -98,38 +76,3 @@ class GPIO(GenericGPIO): def cleanup(self): pass - -class GpioThread(threading.Thread): - def __init__(self, chip, offset, config, callback, bouncetime): - super().__init__() - self.daemon = True - self._queue = queue.Queue() - - self.pin = chip.get_line(offset) - self.pin.request(config) - self.callback = callback - self.bouncetime = timedelta(microseconds=bouncetime) - - def run(self): - previous_event_time = datetime.now() - while True: - if self.pin.event_wait(): - event = self.pin.event_read() - if event.timestamp - previous_event_time > self.bouncetime: - previous_event_time = event.timestamp - - ret = self.callback() - self._queue.put( - { - "type": event.event_type, - "time": event.timestamp, - "result": ret, - } - ) - - @property - def handle(self): - if self._queue.empty(): - return None - - return self._queue.get() \ No newline at end of file